mirror of
https://github.com/zeromq/libzmq.git
synced 2024-12-13 02:42:58 +01:00
Merge pull request #2354 from bluca/fix_pipe
Problem: router pipe can block forever
This commit is contained in:
commit
07d904a2f8
@ -213,26 +213,19 @@ int zmq::router_t::xsend (msg_t *msg_)
|
||||
if (it != outpipes.end ()) {
|
||||
current_out = it->second.pipe;
|
||||
|
||||
// Check whether pipe is full or not
|
||||
if (!current_out->check_hwm()) {
|
||||
it->second.active = false;
|
||||
current_out = NULL;
|
||||
|
||||
if (mandatory) {
|
||||
more_out = false;
|
||||
errno = EAGAIN;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
// Check whether pipe is closed or not
|
||||
else
|
||||
if (!current_out->check_write()) {
|
||||
// Check whether pipe is full or not
|
||||
bool pipe_full = !current_out->check_hwm ();
|
||||
it->second.active = false;
|
||||
current_out = NULL;
|
||||
|
||||
if (mandatory) {
|
||||
more_out = false;
|
||||
errno = EHOSTUNREACH;
|
||||
if (pipe_full)
|
||||
errno = EAGAIN;
|
||||
else
|
||||
errno = EHOSTUNREACH;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user