mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-22 13:46:52 +00:00
MINOR: listeners: make listeners count consistent with reality
Some places call delete_listener() then decrement the number of listeners and jobs. At least one other place calls delete_listener() without doing so, but since it's in deinit(), it's harmless and cannot risk to cause zombie processes to survive. Given that the number of listeners and jobs is incremented when creating the listeners, it's much more logical to symmetrically decrement them when deleting such listeners.
This commit is contained in:
parent
0de59fd53a
commit
2cc5bae0b8
@ -170,7 +170,7 @@ extern int pid; /* current process id */
|
||||
extern int relative_pid; /* process id starting at 1 */
|
||||
extern int actconn; /* # of active sessions */
|
||||
extern int listeners;
|
||||
extern int jobs; /* # of active jobs */
|
||||
extern int jobs; /* # of active jobs (listeners, sessions, open devices) */
|
||||
extern struct chunk trash;
|
||||
extern int nb_oldpids; /* contains the number of old pids found */
|
||||
extern const int zero;
|
||||
|
@ -343,8 +343,9 @@ int create_listeners(struct bind_conf *bc, const struct sockaddr_storage *ss,
|
||||
|
||||
/* Delete a listener from its protocol's list of listeners. The listener's
|
||||
* state is automatically updated from LI_ASSIGNED to LI_INIT. The protocol's
|
||||
* number of listeners is updated. Note that the listener must have previously
|
||||
* been unbound. This is the generic function to use to remove a listener.
|
||||
* number of listeners is updated, as well as the global number of listeners
|
||||
* and jobs. Note that the listener must have previously been unbound. This
|
||||
* is the generic function to use to remove a listener.
|
||||
*/
|
||||
void delete_listener(struct listener *listener)
|
||||
{
|
||||
@ -353,6 +354,8 @@ void delete_listener(struct listener *listener)
|
||||
listener->state = LI_INIT;
|
||||
LIST_DEL(&listener->proto_list);
|
||||
listener->proto->nb_listeners--;
|
||||
listeners--;
|
||||
jobs--;
|
||||
}
|
||||
|
||||
/* This function is called on a read event from a listening socket, corresponding
|
||||
|
@ -1080,8 +1080,6 @@ void zombify_proxy(struct proxy *p)
|
||||
unbind_listener_no_close(l);
|
||||
if (l->state >= LI_ASSIGNED) {
|
||||
delete_listener(l);
|
||||
listeners--;
|
||||
jobs--;
|
||||
}
|
||||
/*
|
||||
* Pretend we're still up and running so that the fd
|
||||
@ -1120,8 +1118,6 @@ void stop_proxy(struct proxy *p)
|
||||
unbind_listener(l);
|
||||
if (l->state >= LI_ASSIGNED) {
|
||||
delete_listener(l);
|
||||
listeners--;
|
||||
jobs--;
|
||||
}
|
||||
}
|
||||
p->state = PR_STSTOPPED;
|
||||
|
Loading…
Reference in New Issue
Block a user