Changeset 814aa52 for protocols/msn/ns.c


Ignore:
Timestamp:
2010-06-03T11:00:45Z (14 years ago)
Author:
Sven Moritz Hallberg <pesco@…>
Branches:
master
Children:
a6b2f13
Parents:
5f8ab6a9 (diff), f4bcc22 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

merge in bitlbee 1.2.6

File:
1 edited

Legend:

Unmodified
Added
Removed
  • protocols/msn/ns.c

    r5f8ab6a9 r814aa52  
    3535
    3636static void msn_auth_got_passport_token( struct msn_auth_data *mad );
     37static gboolean msn_ns_got_display_name( struct im_connection *ic, char *name );
    3738
    3839gboolean msn_ns_connected( gpointer data, gint source, b_input_condition cond )
     
    231232                else if( num_parts >= 7 && strcmp( cmd[2], "OK" ) == 0 )
    232233                {
    233                         set_t *s;
    234                        
    235234                        if( num_parts == 7 )
    236                         {
    237                                 http_decode( cmd[4] );
    238                                
    239                                 strncpy( ic->displayname, cmd[4], sizeof( ic->displayname ) );
    240                                 ic->displayname[sizeof(ic->displayname)-1] = 0;
    241                                
    242                                 if( ( s = set_find( &ic->acc->set, "display_name" ) ) )
    243                                 {
    244                                         g_free( s->value );
    245                                         s->value = g_strdup( cmd[4] );
    246                                 }
    247                         }
     235                                msn_ns_got_display_name( ic, cmd[4] );
    248236                        else
    249                         {
    250237                                imcb_log( ic, "Warning: Friendly name in server response was corrupted" );
    251                         }
    252238                       
    253239                        imcb_log( ic, "Authenticated, getting buddy list" );
     
    422408        else if( strcmp( cmd[0], "FLN" ) == 0 )
    423409        {
    424                 if( cmd[1] )
    425                         imcb_buddy_status( ic, cmd[1], 0, NULL, NULL );
     410                if( cmd[1] == NULL )
     411                        return 1;
     412               
     413                imcb_buddy_status( ic, cmd[1], 0, NULL, NULL );
     414               
     415                msn_sb_start_keepalives( msn_sb_by_handle( ic, cmd[1] ), TRUE );
    426416        }
    427417        else if( strcmp( cmd[0], "NLN" ) == 0 )
     
    449439                                   ( st != msn_away_state_list ? OPT_AWAY : 0 ),
    450440                                   st->name, NULL );
     441               
     442                msn_sb_stop_keepalives( msn_sb_by_handle( ic, cmd[2] ) );
    451443        }
    452444        else if( strcmp( cmd[0], "RNG" ) == 0 )
     
    553545                return( 0 );
    554546        }
     547#if 0
     548        /* Discard this one completely for now since I don't care about the ack
     549           and since MSN servers can apparently screw up the formatting. */
    555550        else if( strcmp( cmd[0], "REA" ) == 0 )
    556551        {
     
    583578                }
    584579        }
     580#endif
    585581        else if( strcmp( cmd[0], "IPG" ) == 0 )
    586582        {
     
    732728        }
    733729}
     730
     731static gboolean msn_ns_got_display_name( struct im_connection *ic, char *name )
     732{
     733        set_t *s;
     734       
     735        if( ( s = set_find( &ic->acc->set, "display_name" ) ) == NULL )
     736                return FALSE; /* Shouldn't happen.. */
     737       
     738        http_decode( name );
     739       
     740        if( s->value && strcmp( s->value, name ) == 0 )
     741        {
     742                return TRUE;
     743                /* The names match, nothing to worry about. */
     744        }
     745        else if( s->value != NULL &&
     746                 ( strcmp( name, ic->acc->user ) == 0 ||
     747                   set_getbool( &ic->acc->set, "local_display_name" ) ) )
     748        {
     749                /* The server thinks our display name is our e-mail address
     750                   which is probably wrong, or the user *wants* us to do this:
     751                   Always use the locally set display_name. */
     752                return msn_set_display_name( ic, s->value );
     753        }
     754        else
     755        {
     756                if( s->value && *s->value )
     757                        imcb_log( ic, "BitlBee thinks your display name is `%s' but "
     758                                      "the MSN server says it's `%s'. Using the MSN "
     759                                      "server's name. Set local_display_name to true "
     760                                      "to use the local name.", s->value, name );
     761               
     762                if( g_utf8_validate( name, -1, NULL ) )
     763                {
     764                        g_free( s->value );
     765                        s->value = g_strdup( name );
     766                }
     767                else
     768                {
     769                        imcb_log( ic, "Warning: Friendly name in server response was corrupted" );
     770                }
     771               
     772                return TRUE;
     773        }
     774}
Note: See TracChangeset for help on using the changeset viewer.