From f674c9269e04546da22e45ef6fff9303441680ea Mon Sep 17 00:00:00 2001 From: Martin Sustrik Date: Thu, 10 Sep 2009 16:32:06 +0200 Subject: ZMQII-2: SIGSEGV in zmq_connecter_init_t::read --- src/zmq_decoder.cpp | 2 +- src/zmq_encoder.cpp | 2 +- src/zmq_engine.cpp | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/zmq_decoder.cpp b/src/zmq_decoder.cpp index b461234..e51d802 100644 --- a/src/zmq_decoder.cpp +++ b/src/zmq_decoder.cpp @@ -70,7 +70,7 @@ bool zmq::zmq_decoder_t::message_ready () { // Message is completely read. Push it further and start reading // new message. - if (!destination->write (&in_progress)) + if (!destination || !destination->write (&in_progress)) return false; next_step (tmpbuf, 1, &zmq_decoder_t::one_byte_size_ready); diff --git a/src/zmq_encoder.cpp b/src/zmq_encoder.cpp index 55e1a83..44b919b 100644 --- a/src/zmq_encoder.cpp +++ b/src/zmq_encoder.cpp @@ -54,7 +54,7 @@ bool zmq::zmq_encoder_t::message_ready () // Note that new state is set only if write is successful. That way // unsuccessful write will cause retry on the next state machine // invocation. - if (!source->read (&in_progress)) + if (!source || !source->read (&in_progress)) return false; size_t size = zmq_msg_size (&in_progress); diff --git a/src/zmq_engine.cpp b/src/zmq_engine.cpp index 298dd57..3ed9ba5 100644 --- a/src/zmq_engine.cpp +++ b/src/zmq_engine.cpp @@ -66,6 +66,8 @@ void zmq::zmq_engine_t::plug (i_inout *inout_) void zmq::zmq_engine_t::unplug () { rm_fd (handle); + encoder.set_inout (NULL); + decoder.set_inout (NULL); inout = NULL; } -- cgit v1.2.3