Mercurial > pidgin
diff libpurple/protocols/msn/servconn.c @ 24446:ae66b7b3086a
Make the two "read_cb()" functions more similar, and fix a rare
memleak in httpconn by adding a call to g_free(header). Only
happens if the server sends us abnormal data.
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sat, 15 Nov 2008 09:44:05 +0000 |
parents | 5cedf11b8e77 |
children | d72c185d0be3 |
line wrap: on
line diff
--- a/libpurple/protocols/msn/servconn.c Sat Nov 15 07:43:48 2008 +0000 +++ b/libpurple/protocols/msn/servconn.c Sat Nov 15 09:44:05 2008 +0000 @@ -375,15 +375,14 @@ servconn = data; session = servconn->session; - len = read(servconn->fd, buf, sizeof(buf) - 1); if (servconn->type == MSN_SERVCONN_NS) - servconn->session->account->gc->last_received = time(NULL); + session->account->gc->last_received = time(NULL); - if (len < 0 && errno == EAGAIN) { + len = read(servconn->fd, buf, sizeof(buf) - 1); + if (len < 0 && errno == EAGAIN) return; - - } else if (len <= 0) { - purple_debug_error("msn", "servconn %03d read error," + if (len <= 0) { + purple_debug_error("msn", "servconn %03d read error, " "len: %" G_GSSIZE_FORMAT ", errno: %d, error: %s\n", servconn->num, len, errno, g_strerror(errno)); msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_READ);