mirror of
https://github.com/zeromq/libzmq.git
synced 2025-03-10 07:56:09 +00:00
ZMQII-10: Make connections interrupted during the init phase be closed silently
This commit is contained in:
parent
37cacc5700
commit
2bc9419ced
@ -20,6 +20,7 @@
|
|||||||
#include "zmq_decoder.hpp"
|
#include "zmq_decoder.hpp"
|
||||||
#include "i_inout.hpp"
|
#include "i_inout.hpp"
|
||||||
#include "wire.hpp"
|
#include "wire.hpp"
|
||||||
|
#include "err.hpp"
|
||||||
|
|
||||||
zmq::zmq_decoder_t::zmq_decoder_t () :
|
zmq::zmq_decoder_t::zmq_decoder_t () :
|
||||||
destination (NULL)
|
destination (NULL)
|
||||||
@ -48,7 +49,11 @@ bool zmq::zmq_decoder_t::one_byte_size_ready ()
|
|||||||
if (*tmpbuf == 0xff)
|
if (*tmpbuf == 0xff)
|
||||||
next_step (tmpbuf, 8, &zmq_decoder_t::eight_byte_size_ready);
|
next_step (tmpbuf, 8, &zmq_decoder_t::eight_byte_size_ready);
|
||||||
else {
|
else {
|
||||||
zmq_msg_init_size (&in_progress, *tmpbuf);
|
|
||||||
|
// TODO: Handle over-sized message decently.
|
||||||
|
int rc = zmq_msg_init_size (&in_progress, *tmpbuf);
|
||||||
|
errno_assert (rc == 0);
|
||||||
|
|
||||||
next_step (zmq_msg_data (&in_progress), *tmpbuf,
|
next_step (zmq_msg_data (&in_progress), *tmpbuf,
|
||||||
&zmq_decoder_t::message_ready);
|
&zmq_decoder_t::message_ready);
|
||||||
}
|
}
|
||||||
@ -60,7 +65,11 @@ bool zmq::zmq_decoder_t::eight_byte_size_ready ()
|
|||||||
// 8-byte size is read. Allocate the buffer for message body and
|
// 8-byte size is read. Allocate the buffer for message body and
|
||||||
// read the message data into it.
|
// read the message data into it.
|
||||||
size_t size = (size_t) get_uint64 (tmpbuf);
|
size_t size = (size_t) get_uint64 (tmpbuf);
|
||||||
zmq_msg_init_size (&in_progress, size);
|
|
||||||
|
// TODO: Handle over-sized message decently.
|
||||||
|
int rc = zmq_msg_init_size (&in_progress, size);
|
||||||
|
errno_assert (rc == 0);
|
||||||
|
|
||||||
next_step (zmq_msg_data (&in_progress), size,
|
next_step (zmq_msg_data (&in_progress), size,
|
||||||
&zmq_decoder_t::message_ready);
|
&zmq_decoder_t::message_ready);
|
||||||
return true;
|
return true;
|
||||||
|
@ -93,8 +93,11 @@ void zmq::zmq_listener_init_t::flush ()
|
|||||||
|
|
||||||
void zmq::zmq_listener_init_t::detach ()
|
void zmq::zmq_listener_init_t::detach ()
|
||||||
{
|
{
|
||||||
// TODO: Engine is closing down. Init object is to be closed as well.
|
// This function is called by engine when disconnection occurs.
|
||||||
zmq_assert (false);
|
// The engine will destroy itself, so we just drop the pointer here and
|
||||||
|
// start termination of the init object.
|
||||||
|
engine = NULL;
|
||||||
|
term ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void zmq::zmq_listener_init_t::process_plug ()
|
void zmq::zmq_listener_init_t::process_plug ()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user