|
|
- From 6026323cd0c235d6ab7ec039e5d735e7ea2e28bf Mon Sep 17 00:00:00 2001
- From: Willy Tarreau <w@1wt.eu>
- Date: Mon, 31 Oct 2016 17:32:20 +0100
- Subject: [PATCH 25/26] BUG/MEDIUM: peers: on shutdown, wake up the appctx, not
- the stream
-
- This part was missed when peers were ported to the new applet
- infrastructure in 1.6, the main stream is woken up instead of the
- appctx. This creates a race condition by which it is possible to
- wake the stream at the wrong moment and miss an event. This bug
- might be at least partially responsible for some of the CLOSE_WAIT
- that were reported on peers session upon reload in version 1.6.
-
- This fix must be backported to 1.6.
- (cherry picked from commit 78c0c50705a5e9d48607b9377adf030bb9d97b34)
- ---
- src/peers.c | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
- diff --git a/src/peers.c b/src/peers.c
- index 7e1523f..db1f608 100644
- --- a/src/peers.c
- +++ b/src/peers.c
- @@ -1637,11 +1637,9 @@ static void peer_session_forceshutdown(struct stream * stream)
- if (ps)
- ps->reconnect = tick_add(now_ms, MS_TO_TICKS(50 + random() % 2000));
-
- - /* call release to reinit resync states if needed */
- - peer_session_release(appctx);
- appctx->st0 = PEER_SESS_ST_END;
- appctx->ctx.peers.ptr = NULL;
- - task_wakeup(stream->task, TASK_WOKEN_MSG);
- + appctx_wakeup(appctx);
- }
-
- /* Pre-configures a peers frontend to accept incoming connections */
- --
- 2.7.3
-
|