From de0337481fca3894c406a2724da30af8cc8bae2f Mon Sep 17 00:00:00 2001 From: Wilmer van der Gaast Date: Tue, 4 Dec 2007 22:59:59 +0000 Subject: Fixing jabber_login/_logout for better (non-crashing) cleanup on early connect failure. --- protocols/jabber/jabber.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'protocols/jabber/jabber.c') diff --git a/protocols/jabber/jabber.c b/protocols/jabber/jabber.c index 817d1487..e2a3a27a 100644 --- a/protocols/jabber/jabber.c +++ b/protocols/jabber/jabber.c @@ -76,6 +76,8 @@ static void jabber_login( account_t *acc ) jd->username = g_strdup( acc->user ); jd->server = strchr( jd->username, '@' ); + jd->fd = jd->r_inpa = jd->w_inpa = -1; + if( jd->server == NULL ) { imcb_error( ic, "Incomplete account name (format it like )" ); @@ -231,7 +233,8 @@ static void jabber_logout( struct im_connection *ic ) { struct jabber_data *jd = ic->proto_data; - jabber_end_stream( ic ); + if( jd->fd >= 0 ) + jabber_end_stream( ic ); while( ic->groupchats ) jabber_chat_free( ic->groupchats ); @@ -249,7 +252,8 @@ static void jabber_logout( struct im_connection *ic ) if( jd->tx_len ) g_free( jd->txq ); - g_hash_table_destroy( jd->node_cache ); + if( jd->node_cache ) + g_hash_table_destroy( jd->node_cache ); xt_free( jd->xt ); -- cgit v1.2.3