diff options
Diffstat (limited to 'src')
| -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); | 
