diff options
-rw-r--r-- | src/ctx.cpp | 2 | ||||
-rw-r--r-- | src/zmq_init.cpp | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/ctx.cpp b/src/ctx.cpp index 267f7d0..b17fac0 100644 --- a/src/ctx.cpp +++ b/src/ctx.cpp @@ -108,8 +108,10 @@ int zmq::ctx_t::terminate () { // First send stop command to sockets so that any // blocking calls are interrupted. + slot_sync.lock (); for (sockets_t::size_type i = 0; i != sockets.size (); i++) sockets [i]->stop (); + slot_sync.unlock (); // Close the logging infrastructure. log_sync.lock (); diff --git a/src/zmq_init.cpp b/src/zmq_init.cpp index 3c8f288..ee5741a 100644 --- a/src/zmq_init.cpp +++ b/src/zmq_init.cpp @@ -139,7 +139,10 @@ void zmq::zmq_init_t::finalise_initialisation () if (sent && received) { // If we know what session we belong to, it's easy, just send the - // engine to that session and destroy the init object. + // engine to that session and destroy the init object. Note that we + // know about the session only if this object is owned by it. Thus, + // lifetime of this object in contained in the lifetime of the session + // so the pointer cannot become invalid without notice. if (session) { engine->unplug (); send_attach (session, engine, peer_identity, true); |