mirror of
https://github.com/zeromq/libzmq.git
synced 2025-10-27 02:53:12 +01:00
Make socket IO more robust
See also https://zeromq.jira.com/browse/LIBZMQ-433
This commit is contained in:
@@ -489,11 +489,20 @@ int zmq::stream_engine_t::write (const void *data_, size_t size_)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
// Signalise peer failure.
|
// Signalise peer failure.
|
||||||
if (nbytes == -1 && (errno == ECONNRESET || errno == EPIPE ||
|
if (nbytes == -1) {
|
||||||
errno == ETIMEDOUT))
|
errno_assert (errno != EACCES
|
||||||
|
&& errno != EBADF
|
||||||
|
&& errno != EDESTADDRREQ
|
||||||
|
&& errno != EFAULT
|
||||||
|
&& errno != EINVAL
|
||||||
|
&& errno != EISCONN
|
||||||
|
&& errno != EMSGSIZE
|
||||||
|
&& errno != ENOMEM
|
||||||
|
&& errno != ENOTSOCK
|
||||||
|
&& errno != EOPNOTSUPP);
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
errno_assert (nbytes != -1);
|
|
||||||
return (size_t) nbytes;
|
return (size_t) nbytes;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -541,11 +550,14 @@ int zmq::stream_engine_t::read (void *data_, size_t size_)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
// Signalise peer failure.
|
// Signalise peer failure.
|
||||||
if (nbytes == -1 && (errno == ECONNRESET || errno == ECONNREFUSED ||
|
if (nbytes == -1) {
|
||||||
errno == ETIMEDOUT || errno == EHOSTUNREACH || errno == ENOTCONN))
|
errno_assert (errno != EBADF
|
||||||
|
&& errno != EFAULT
|
||||||
|
&& errno != EINVAL
|
||||||
|
&& errno != ENOMEM
|
||||||
|
&& errno != ENOTSOCK);
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
errno_assert (nbytes != -1);
|
|
||||||
|
|
||||||
// Orderly shutdown by the peer.
|
// Orderly shutdown by the peer.
|
||||||
if (nbytes == 0)
|
if (nbytes == 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user