diff options
| author | Wilmer van der Gaast <wilmer@gaast.net> | 2010-07-28 00:18:27 +0200 | 
|---|---|---|
| committer | Wilmer van der Gaast <wilmer@gaast.net> | 2010-07-28 00:18:27 +0200 | 
| commit | 42553208d714b80a2a64d334f1659ec379042f8b (patch) | |
| tree | 71b2d168be8b7c491d7a7985cdb35b9a271e056b | |
| parent | f6f5eee77be1a91563da38337bb80b04cb2ae071 (diff) | |
MSN: Don't show any "special" messages when breaking down switchboards with
queued messages.  They were never supposed to be seen by the user. Also,
don't send them all to offline users.
| -rw-r--r-- | protocols/msn/msn.c | 8 | ||||
| -rw-r--r-- | protocols/msn/msn_util.c | 10 | 
2 files changed, 14 insertions, 4 deletions
| diff --git a/protocols/msn/msn.c b/protocols/msn/msn.c index fe1d16ac..de8271e8 100644 --- a/protocols/msn/msn.c +++ b/protocols/msn/msn.c @@ -300,10 +300,14 @@ static void msn_rem_deny( struct im_connection *ic, char *who )  static int msn_send_typing( struct im_connection *ic, char *who, int typing )  { -	if( typing & OPT_TYPING ) +	struct bee_user *bu = bee_user_by_handle( ic->bee, ic, who ); +	 +	if( !( bu->flags & BEE_USER_ONLINE ) ) +		return 0; +	else if( typing & OPT_TYPING )  		return( msn_buddy_msg( ic, who, TYPING_NOTIFICATION_MESSAGE, 0 ) );  	else -		return( 1 ); +		return 1;  }  static char *set_eval_display_name( set_t *set, char *value ) diff --git a/protocols/msn/msn_util.c b/protocols/msn/msn_util.c index cf119b1a..23447403 100644 --- a/protocols/msn/msn_util.c +++ b/protocols/msn/msn_util.c @@ -397,6 +397,7 @@ void msn_msgq_purge( struct im_connection *ic, GSList **list )  	struct msn_message *m;  	GString *ret;  	GSList *l; +	int n = 0;  	l = *list;  	if( l == NULL ) @@ -411,7 +412,11 @@ void msn_msgq_purge( struct im_connection *ic, GSList **list )  	{  		m = l->data; -		g_string_append_printf( ret, "\n%s", m->text ); +		if( strncmp( m->text, "\r\r\r", 3 ) != 0 ) +		{ +			g_string_append_printf( ret, "\n%s", m->text ); +			n ++; +		}  		g_free( m->who );  		g_free( m->text ); @@ -422,7 +427,8 @@ void msn_msgq_purge( struct im_connection *ic, GSList **list )  	g_slist_free( *list );  	*list = NULL; -	imcb_log( ic, "%s", ret->str ); +	if( n > 0 ) +		imcb_log( ic, "%s", ret->str );  	g_string_free( ret, TRUE );  } | 
