Mercurial > pidgin
changeset 27158:75aaadd295ed
Stop the watchers before closing the fds
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Tue, 23 Jun 2009 17:39:00 +0000 |
parents | 4a62072ea833 |
children | 8487bf2c306e |
files | libpurple/protocols/oscar/flap_connection.c |
diffstat | 1 files changed, 15 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/oscar/flap_connection.c Tue Jun 23 17:37:06 2009 +0000 +++ b/libpurple/protocols/oscar/flap_connection.c Tue Jun 23 17:39:00 2009 +0000 @@ -355,23 +355,9 @@ } } - if (conn->fd >= 0) - { - if (conn->type == SNAC_FAMILY_LOCATE) - flap_connection_send_close(od, conn); - - close(conn->fd); - conn->fd = -1; - } - - if (conn->gsc != NULL) - { - if (conn->type == SNAC_FAMILY_LOCATE) - flap_connection_send_close(od, conn); - - purple_ssl_close(conn->gsc); - conn->gsc = NULL; - } + if ((conn->fd >= 0 || conn->gsc != NULL) + && conn->type == SNAC_FAMILY_LOCATE) + flap_connection_send_close(od, conn); if (conn->watcher_incoming != 0) { @@ -385,6 +371,18 @@ conn->watcher_outgoing = 0; } + if (conn->fd >= 0) + { + close(conn->fd); + conn->fd = -1; + } + + if (conn->gsc != NULL) + { + purple_ssl_close(conn->gsc); + conn->gsc = NULL; + } + g_free(conn->buffer_incoming.data.data); conn->buffer_incoming.data.data = NULL;