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;
 }