Commit 67497a26 authored by Ian Barber's avatar Ian Barber

Use the hiccup mechanism to notify the socket end of the pair of the change in…

Use the hiccup mechanism to notify the socket end of the pair of the change in state, and have it shutdown that end, and shutdown the local end normally. This seems to resolve the shutdown and race condition issues.
parent b84b0079
......@@ -395,15 +395,15 @@ void zmq::session_base_t::detached ()
return;
}
reset ();
// For delayed connect situations, terminate the pipe
// and reestablish later on
if (pipe && options.delay_attach_on_connect == 1
&& addr->protocol != "pgm" && addr->protocol != "epgm") {
pipe->hiccup ();
pipe->terminate (false);
pipe = NULL;
}
reset ();
// Reconnect.
if (options.reconnect_ivl != -1)
......
......@@ -916,7 +916,7 @@ void zmq::socket_base_t::xwrite_activated (pipe_t *pipe_)
void zmq::socket_base_t::xhiccuped (pipe_t *pipe_)
{
zmq_assert (false);
zmq_assert ( options.delay_attach_on_connect == 1 );
}
void zmq::socket_base_t::in_event ()
......@@ -970,6 +970,11 @@ void zmq::socket_base_t::write_activated (pipe_t *pipe_)
void zmq::socket_base_t::hiccuped (pipe_t *pipe_)
{
if( options.delay_attach_on_connect == 1 ) {
pipe_->terminate (false);
}
// Notify derived sockets of the hiccup
xhiccuped (pipe_);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment