This patch fixes a bug introduced by
045e0d4 commit where it was really a bad
idea to reset the peer applet context before shutting down the underlying
session. This had as side effect to cancel the re-initializations done by
peer_session_release(), especially prevented this function from re-initializing
the current table pointer which is there to force annoucement of stick-table
definitions on when reconnecting. Consequently the peers could send stick-table
update messages without a first stick-table definition message. As this is
forbidden, this leaded the remote peers to close the sessions.
else {
ps->reconnect = tick_add(now_ms, MS_TO_TICKS(50 + random() % 2000));
peer_session_forceshutdown(ps->appctx);
- ps->appctx = NULL;
}
}
else if (tick_is_expired(ps->heartbeat, now_ms)) {
ps->flags |= PEER_F_HEARTBEAT;
appctx_wakeup(ps->appctx);
}
- if (ps->appctx)
- task->expire = tick_first(ps->reconnect, ps->heartbeat);
+ task->expire = tick_first(ps->reconnect, ps->heartbeat);
}
}
/* else do nothing */