# HG changeset patch # User Timo Sirainen # Date 1391115820 -3600 # Node ID 93cf0434dda4654e1d4d661bae8712ead351707e # Parent d9d2d04bb3206c30f869b49f164693a06d283e3a net_transmit() may have wrongly returned EPIPE error. If errno was EPIPE before net_transmit() was called and sendto() didn't change it, we still returned error. Also removed the unlikely() call which isn't all that unlikely for non-blocking code. diff -r d9d2d04bb320 -r 93cf0434dda4 src/lib/net.c --- a/src/lib/net.c Thu Jan 30 03:38:57 2014 +0100 +++ b/src/lib/net.c Thu Jan 30 22:03:40 2014 +0100 @@ -605,12 +605,12 @@ i_assert(len <= SSIZE_T_MAX); ret = send(fd, data, len, 0); - if (unlikely(ret == -1 && (errno == EINTR || errno == EAGAIN))) - return 0; - - if (unlikely(errno == EPIPE)) - return -2; - + if (ret == -1) { + if (errno == EINTR || errno == EAGAIN) + return 0; + if (errno == EPIPE) + return -2; + } return ret; }