0
0
mirror of https://github.com/zeromq/libzmq.git synced 2024-12-28 16:15:23 +08:00

ZMQII-8: Failure during orphan pipe deallocation

This commit is contained in:
Martin Sustrik 2009-09-16 14:02:43 +02:00
parent 9c522dccaf
commit 4631fde7e3
3 changed files with 12 additions and 4 deletions

View File

@ -100,8 +100,8 @@ zmq::dispatcher_t::~dispatcher_t ()
delete io_threads [i];
// Deallocate all the orphaned pipes.
for (pipes_t::iterator it = pipes.begin (); it != pipes.end (); it++)
delete *it;
while (!pipes.empty ())
delete *pipes.begin ();
delete [] command_pipes;

View File

@ -55,6 +55,9 @@ bool zmq::session_t::read (::zmq_msg_t *msg_)
bool zmq::session_t::write (::zmq_msg_t *msg_)
{
if (!out_pipe)
return true;
if (out_pipe->write (msg_)) {
zmq_msg_init (msg_);
return true;
@ -65,7 +68,8 @@ bool zmq::session_t::write (::zmq_msg_t *msg_)
void zmq::session_t::flush ()
{
out_pipe->flush ();
if (out_pipe)
out_pipe->flush ();
}
void zmq::session_t::detach ()

View File

@ -60,9 +60,13 @@ bool zmq::zmq_connecter_init_t::read (::zmq_msg_t *msg_)
if (!session_name.empty ())
session = owner->find_session (session_name.c_str ());
if (!session) {
// TODO
// TODO:
// The socket is already closing. The session is already shut down,
// so no point in continuing with connecting. Shut the connection down.
zmq_assert (false);
}
send_attach (session, engine);
engine = NULL;