diff options
author | Martin Sustrik <sustrik@250bpm.com> | 2012-04-17 07:56:41 +0200 |
---|---|---|
committer | Martin Sustrik <sustrik@250bpm.com> | 2012-04-18 07:14:34 +0200 |
commit | ca8955058c2570df094cc97ed4e0757dc6647fd8 (patch) | |
tree | 0d281110541373b0bf65586aa067e489cad28d0e | |
parent | 94a8234624892d6fab8bd5255263c8bee7068ad6 (diff) |
Discard pending surveys when (X)SURVEYOR socket disappears
This is an optimisation. The idea is that when surveyor disappears
it makes no sense to process any surveys it have sent. There are
two cases handled:
- when (X)SURVEYOR socket is closed any unsent outbound messages
are discarded
- when (X)RESPONDENT detects that its peer have disconnected it
drops any unprocessed messages that have been received from it
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
-rw-r--r-- | src/xrespondent.cpp | 4 | ||||
-rw-r--r-- | src/xsurveyor.cpp | 4 |
2 files changed, 8 insertions, 0 deletions
diff --git a/src/xrespondent.cpp b/src/xrespondent.cpp index 026fe8d..c16d900 100644 --- a/src/xrespondent.cpp +++ b/src/xrespondent.cpp @@ -36,6 +36,10 @@ xs::xrespondent_t::xrespondent_t (class ctx_t *parent_, uint32_t tid_, { options.type = XS_XRESPONDENT; + // If the connection disappears it makes no sense to read any more surveys + // from it. The responses will be unroutable anyway. + options.delay_on_disconnect = false; + prefetched_msg.init (); } diff --git a/src/xsurveyor.cpp b/src/xsurveyor.cpp index 4265437..985b6d8 100644 --- a/src/xsurveyor.cpp +++ b/src/xsurveyor.cpp @@ -26,6 +26,10 @@ xs::xsurveyor_t::xsurveyor_t (class ctx_t *parent_, uint32_t tid_, int sid_) : socket_base_t (parent_, tid_, sid_) { options.type = XS_XSURVEYOR; + + // When the XSURVEYOR socket is close it makes no sense to send any pending + // surveys. The responses will be unroutable anyway. + options.delay_on_close = false; } xs::xsurveyor_t::~xsurveyor_t () |