diff options
Diffstat (limited to 'protocols')
| -rw-r--r-- | protocols/msn/msn.c | 51 | ||||
| -rw-r--r-- | protocols/nogaim.c | 3 | ||||
| -rw-r--r-- | protocols/nogaim.h | 6 | 
3 files changed, 33 insertions, 27 deletions
| diff --git a/protocols/msn/msn.c b/protocols/msn/msn.c index 3c7064f8..bac9c427 100644 --- a/protocols/msn/msn.c +++ b/protocols/msn/msn.c @@ -63,33 +63,38 @@ static void msn_close( struct gaim_connection *gc )  	struct msn_data *md = gc->proto_data;  	GSList *l; -	if( md->fd >= 0 ) -		closesocket( md->fd ); -	 -	if( md->handler ) -	{ -		if( md->handler->rxq ) g_free( md->handler->rxq ); -		if( md->handler->cmd_text ) g_free( md->handler->cmd_text ); -		g_free( md->handler ); -	} -	 -	while( md->switchboards ) -		msn_sb_destroy( md->switchboards->data ); -	 -	if( md->msgq ) +	if( md )  	{ -		struct msn_message *m; +		if( md->fd >= 0 ) +			closesocket( md->fd ); -		for( l = md->msgq; l; l = l->next ) +		if( md->handler )  		{ -			m = l->data; +			if( md->handler->rxq ) g_free( md->handler->rxq ); +			if( md->handler->cmd_text ) g_free( md->handler->cmd_text ); +			g_free( md->handler ); +		} -			serv_got_crap( gc, "Warning: Closing down MSN connection with unsent message to %s, you'll have to resend it.", m->who ); -			g_free( m->who ); -			g_free( m->text ); -			g_free( m ); +		while( md->switchboards ) +			msn_sb_destroy( md->switchboards->data ); +		 +		if( md->msgq ) +		{ +			struct msn_message *m; +			 +			for( l = md->msgq; l; l = l->next ) +			{ +				m = l->data; +			 +				serv_got_crap( gc, "Warning: Closing down MSN connection with unsent message to %s, you'll have to resend it.", m->who ); +				g_free( m->who ); +				g_free( m->text ); +				g_free( m ); +			} +			g_slist_free( md->msgq );  		} -		g_slist_free( md->msgq ); +		 +		g_free( md );  	}  	for( l = gc->permit; l; l = l->next ) @@ -100,8 +105,6 @@ static void msn_close( struct gaim_connection *gc )  		g_free( l->data );  	g_slist_free( gc->deny ); -	g_free( md ); -	  	msn_connections = g_slist_remove( msn_connections, gc );  } diff --git a/protocols/nogaim.c b/protocols/nogaim.c index b1975f19..78b51b53 100644 --- a/protocols/nogaim.c +++ b/protocols/nogaim.c @@ -293,8 +293,9 @@ void signoff( struct gaim_connection *gc )  	account_t *a;  	serv_got_crap( gc, "Signing off.." ); - +	  	b_event_remove( gc->keepalive ); +	gc->flags |= OPT_LOGGING_OUT;  	gc->keepalive = 0;  	gc->prpl->close( gc );  	b_event_remove( gc->inpa ); diff --git a/protocols/nogaim.h b/protocols/nogaim.h index b0319d27..2080465c 100644 --- a/protocols/nogaim.h +++ b/protocols/nogaim.h @@ -53,10 +53,12 @@  #define WEBSITE "http://www.bitlbee.org/"  #define IM_FLAG_AWAY 0x0020 -#define OPT_CONN_HTML 0x00000001 -#define OPT_LOGGED_IN 0x00010000  #define GAIM_AWAY_CUSTOM "Custom" +#define OPT_CONN_HTML   0x00000001 +#define OPT_LOGGED_IN   0x00010000 +#define OPT_LOGGING_OUT 0x00020000 +  /* ok. now the fun begins. first we create a connection structure */  struct gaim_connection  { | 
