bug during terminal shutdown fixed

This commit is contained in:
Martin Sustrik
2009-09-02 14:59:53 +02:00
parent 702fdbb5dd
commit f92de9b2a9
7 changed files with 41 additions and 17 deletions

View File

@@ -36,11 +36,8 @@ zmq::session_t::session_t (object_t *parent_, socket_base_t *owner_,
zmq::session_t::~session_t ()
{
// Ask associated pipes to terminate.
if (in_pipe)
in_pipe->term ();
if (out_pipe)
out_pipe->term ();
zmq_assert (!in_pipe);
zmq_assert (!out_pipe);
}
bool zmq::session_t::read (::zmq_msg_t *msg_)
@@ -82,6 +79,7 @@ void zmq::session_t::attach_inpipe (reader_t *pipe_)
active = true;
in_pipe->set_endpoint (this);
}
void zmq::session_t::attach_outpipe (writer_t *pipe_)
{
zmq_assert (!out_pipe);
@@ -141,6 +139,16 @@ void zmq::session_t::process_unplug ()
bool ok = owner->unregister_session (name.c_str ());
zmq_assert (ok);
// Ask associated pipes to terminate.
if (in_pipe) {
in_pipe->term ();
in_pipe = NULL;
}
if (out_pipe) {
out_pipe->term ();
out_pipe = NULL;
}
if (engine) {
engine->unplug ();
delete engine;