Mercurial > pidgin
diff libpurple/protocols/msn/servconn.c @ 20482:1754155051a4
propagate from branch 'im.pidgin.pidgin' (head 4313008137cace2c9699584ec7308c1e888ae137)
to branch 'im.pidgin.cpw.khc.msnp14' (head d42c2c6500b8f7eb1ad6340caf7f1b95d9b02c1b)
author | Carlos Silva <typ0@pidgin.im> |
---|---|
date | Tue, 28 Aug 2007 04:38:24 +0000 |
parents | 39248f5b53ad 9a2a4a0c0003 |
children | 723b5a2f91ce |
line wrap: on
line diff
--- a/libpurple/protocols/msn/servconn.c Tue Aug 28 03:46:31 2007 +0000 +++ b/libpurple/protocols/msn/servconn.c Tue Aug 28 04:38:24 2007 +0000 @@ -166,7 +166,7 @@ **************************************************************************/ static void -connect_cb(gpointer data, gint source, const gchar *error_message) +connect_cb(gpointer data, gint source, const char *error_message) { MsnServConn *servconn; @@ -243,7 +243,9 @@ return TRUE; } else + { return FALSE; + } } void @@ -388,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'; @@ -444,6 +453,7 @@ else { msn_cmdproc_process_cmd_text(servconn->cmdproc, cur); + servconn->payload_len = servconn->cmdproc->last_cmd->payload_len; } } while (servconn->connected && !servconn->wasted && servconn->rx_len > 0);