diff --git a/src/own.cpp b/src/own.cpp index f8252ab4..12f50bf9 100644 --- a/src/own.cpp +++ b/src/own.cpp @@ -80,13 +80,19 @@ void zmq::own_t::launch_child (own_t *object_) void zmq::own_t::launch_sibling (own_t *object_) { + // At this point it is important that object is plugged in before its + // owner has a chance to terminate it. Thus, 'plug' command is sent before + // the 'own' command. Given that the signaler preserves ordering of + // commands, 'term' command from the owner cannot make it to the object + // before the already written 'plug' command. + // Specify the owner of the object. object_->set_owner (owner); // Plug the object into its I/O thread. send_plug (object_); - // Take ownership of the object. + // Make parent own the object. send_own (owner, object_); }