summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/own.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/own.cpp b/src/own.cpp
index f8252ab..12f50bf 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_);
}