Mercurial > pidgin
diff libpurple/protocols/msn/servconn.c @ 21000:89c7be36fd61
propagate from branch 'im.pidgin.pidgin.2.2.2' (head 0adab134b7a42e144aee3ac60d825db1f28a42a4)
to branch 'im.pidgin.pidgin' (head 4e59fcb1e2baf2eb63083224381e0af9fe1331cc)
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Tue, 23 Oct 2007 17:27:12 +0000 |
parents | 04fe5601fedb d9cbd249619b |
children | 35b4f1dc4c8d |
line wrap: on
line diff
--- a/libpurple/protocols/msn/servconn.c Tue Oct 23 17:05:12 2007 +0000 +++ b/libpurple/protocols/msn/servconn.c Tue Oct 23 17:27:12 2007 +0000 @@ -168,7 +168,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; @@ -245,7 +245,9 @@ return TRUE; } else + { return FALSE; + } } void @@ -390,14 +392,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'; @@ -446,6 +455,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);