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.
diff --git a/include/types/global.h b/include/types/global.h
index 0a6ece7..37fbaca 100644
--- a/include/types/global.h
+++ b/include/types/global.h
@@ -170,7 +170,7 @@
 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;
diff --git a/src/listener.c b/src/listener.c
index 47bed17..d193b51 100644
--- a/src/listener.c
+++ b/src/listener.c
@@ -343,8 +343,9 @@
 
 /* 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 @@
 	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
diff --git a/src/proxy.c b/src/proxy.c
index 0bbce62..ec1f60a 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -1080,8 +1080,6 @@
 		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 @@
 		unbind_listener(l);
 		if (l->state >= LI_ASSIGNED) {
 			delete_listener(l);
-			listeners--;
-			jobs--;
 		}
 	}
 	p->state = PR_STSTOPPED;