summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Lucina <martin@lucina.net>2011-12-15 13:23:40 +0100
committerMartin Sustrik <sustrik@250bpm.com>2011-12-15 13:23:40 +0100
commita9e03336b020d2e6a83338b111092e65aa812f95 (patch)
tree8f0fa4b1d9db9e201704585e88c349e9d5369793
parente7d748e812a7259bd4030517fde79be202d2a16d (diff)
A synchronous connect() failure in ipc_connecter can result in Assertion
failed: s == retired_fd (ipc_connecter.cpp:174), as reported in LIBZMQ-294. This patch fixes the bug, and also an identical problem in tcp_connecter which has not hit people since TCP connect() usually completes via the asynchronous code path (poll, out_event). Signed-off-by: Martin Lucina <martin@lucina.net>
-rw-r--r--src/ipc_connecter.cpp1
-rw-r--r--src/tcp_connecter.cpp1
2 files changed, 2 insertions, 0 deletions
diff --git a/src/ipc_connecter.cpp b/src/ipc_connecter.cpp
index dc0ee21..58dccf4 100644
--- a/src/ipc_connecter.cpp
+++ b/src/ipc_connecter.cpp
@@ -135,6 +135,7 @@ void zmq::ipc_connecter_t::start_connecting ()
}
// Handle any other error condition by eventual reconnect.
+ close ();
wait = true;
add_reconnect_timer();
}
diff --git a/src/tcp_connecter.cpp b/src/tcp_connecter.cpp
index 75079da..042e82a 100644
--- a/src/tcp_connecter.cpp
+++ b/src/tcp_connecter.cpp
@@ -146,6 +146,7 @@ void zmq::tcp_connecter_t::start_connecting ()
}
// Handle any other error condition by eventual reconnect.
+ close ();
wait = true;
add_reconnect_timer();
}