From 9f4d3767fed58ddfa52f63692c6169bfdbcec2e3 Mon Sep 17 00:00:00 2001
From: Martin Sustrik <sustrik@250bpm.com>
Date: Sun, 19 Jun 2011 12:48:36 +0200
Subject: Session termination error fixed

When session is already terminating and reconnection happens at
that point, the session should not create new pipe to its socket.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
---
 src/session.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/session.cpp b/src/session.cpp
index 8f29248..e700313 100644
--- a/src/session.cpp
+++ b/src/session.cpp
@@ -56,6 +56,7 @@ zmq::session_t::~session_t ()
 
 void zmq::session_t::attach_pipe (pipe_t *pipe_)
 {
+    zmq_assert (!is_terminating ());
     zmq_assert (!pipe);
     zmq_assert (pipe_);
     pipe = pipe_;
@@ -175,7 +176,7 @@ void zmq::session_t::process_attach (i_engine *engine_,
     }
 
     //  Create the pipe if it does not exist yet.
-    if (!pipe) {
+    if (!pipe && !is_terminating ()) {
         object_t *parents [2] = {this, socket};
         pipe_t *pipes [2] = {NULL, NULL};
         int hwms [2] = {options.rcvhwm, options.sndhwm};
-- 
cgit v1.2.3