net/mosquitto: Bump to version 1.3.2
[feed/packages.git] / net / haproxy / patches / 0017-MEDIUM-listener-support-rebinding-during-resume.patch
1 From ff12090bf067a1ddd56bed14cf27371cdf2e77cb Mon Sep 17 00:00:00 2001
2 From: Willy Tarreau <w@1wt.eu>
3 Date: Mon, 7 Jul 2014 21:06:24 +0200
4 Subject: [PATCH 17/21] MEDIUM: listener: support rebinding during resume()
5
6 When a listener resumes operations, supporting a full rebind makes it
7 possible to perform a full stop as a pause(). This will be used for
8 pausing abstract namespace unix sockets.
9 (cherry picked from commit 1c4b814087189b4b0225a473b7cb0a844bc30839)
10 ---
11 src/listener.c | 18 +++++++++++++++++-
12 1 file changed, 17 insertions(+), 1 deletion(-)
13
14 diff --git a/src/listener.c b/src/listener.c
15 index 67f8ca7..11df69f 100644
16 --- a/src/listener.c
17 +++ b/src/listener.c
18 @@ -120,10 +120,26 @@ int pause_listener(struct listener *l)
19 * may replace enable_listener(). The resulting state will either be LI_READY
20 * or LI_FULL. 0 is returned in case of failure to resume (eg: dead socket).
21 * Listeners bound to a different process are not woken up unless we're in
22 - * foreground mode.
23 + * foreground mode. If the listener was only in the assigned state, it's totally
24 + * rebound. This can happen if a pause() has completely stopped it. If the
25 + * resume fails, 0 is returned and an error might be displayed.
26 */
27 int resume_listener(struct listener *l)
28 {
29 + if (l->state == LI_ASSIGNED) {
30 + char msg[100];
31 + int err;
32 +
33 + err = l->proto->bind(l, msg, sizeof(msg));
34 + if (err & ERR_ALERT)
35 + Alert("Resuming listener: %s\n", msg);
36 + else if (err & ERR_WARN)
37 + Warning("Resuming listener: %s\n", msg);
38 +
39 + if (err & (ERR_FATAL | ERR_ABORT))
40 + return 0;
41 + }
42 +
43 if (l->state < LI_PAUSED)
44 return 0;
45
46 --
47 1.8.5.5
48