libpurple/protocols/msn/servconn.c

branch
cpw.khc.msnp14
changeset 20560
79e9c94c34db
parent 20538
9a1cd8878a89
child 20565
781aff7123b3
--- a/libpurple/protocols/msn/servconn.c	Mon Jul 23 18:16:58 2007 +0000
+++ b/libpurple/protocols/msn/servconn.c	Tue Aug 07 02:37:58 2007 +0000
@@ -390,14 +390,21 @@
 
 	len = read(servconn->fd, buf, sizeof(buf) - 1);
 
-	if (len < 0 && errno == EAGAIN)
-		return;
-	else if (len <= 0)
-	{
-		purple_debug_error("msn", "servconn read error, len: %d error: %s\n", len, strerror(errno));
-		msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_READ);
+	if (len <= 0) {
+		switch (errno) {
+
+			case 0:	
 
-		return;
+			case EBADF:
+			case EAGAIN: return;
+	
+			default: purple_debug_error("msn", "servconn read error,"
+						"len: %d, errno: %d, error: %s\n",
+						len, errno, strerror(errno));
+				 msn_servconn_got_error(servconn, 
+						 MSN_SERVCONN_ERROR_READ);
+				 return;
+		}
 	}
 
 	buf[len] = '\0';

mercurial