Mercurial > dovecot > core-2.2
diff src/lib/network.c @ 781:9cb7022749e7 HEAD
net_receive, net_transmit: Return -2 for regular disconnection errors. Don't
log those errors. Some other cleanups.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Thu, 12 Dec 2002 20:57:47 +0200 |
parents | 1cc947617c8b |
children | 5ac361acb316 |
line wrap: on
line diff
--- a/src/lib/network.c Thu Dec 12 20:33:32 2002 +0200 +++ b/src/lib/network.c Thu Dec 12 20:57:47 2002 +0200 @@ -378,11 +378,21 @@ i_assert(len <= SSIZE_T_MAX); ret = recv(fd, buf, len, 0); - if (ret == 0) - return -1; /* disconnected */ + if (ret == 0) { + /* disconnected */ + errno = 0; + return -2; + } - if (ret < 0 && (errno == EINTR || errno == EAGAIN)) - return 0; + if (ret < 0) { + if (errno == EINTR || errno == EAGAIN) + return 0; + + if (errno == ECONNRESET || errno == ETIMEDOUT) { + /* treat as disconnection */ + return -2; + } + } return ret; } @@ -397,8 +407,11 @@ i_assert(len <= SSIZE_T_MAX); ret = send(fd, data, len, 0); - if (ret == -1 && (errno == EINTR || errno == EPIPE || errno == EAGAIN)) - return 0; + if (ret == -1 && (errno == EINTR || errno == EAGAIN)) + return 0; + + if (errno == EPIPE) + return -2; return ret; }