Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • protocols/msn/msn.c

    r9bf2481 r70ac477  
    3131GSList *msn_switchboards;
    3232
    33 static char *msn_set_display_name( set_t *set, char *value );
     33static char *set_eval_display_name( set_t *set, char *value );
    3434
    3535static void msn_init( account_t *acc )
    3636{
    37         set_t *s;
    38        
    39         s = set_add( &acc->set, "display_name", NULL, msn_set_display_name, acc );
    40         s->flags |= ACC_SET_NOSAVE | ACC_SET_ONLINE_ONLY;
    41 
    42         s = set_add( &acc->set, "mail_notifications", "false", set_eval_bool, acc );
    43        
    44         s = set_add( &acc->set, "switchboard_keepalives", "false", set_eval_bool, acc );
     37        set_add( &acc->set, "display_name", NULL, set_eval_display_name, acc );
     38        set_add( &acc->set, "local_display_name", "false", set_eval_bool, acc );
     39        set_add( &acc->set, "mail_notifications", "false", set_eval_bool, acc );
     40        set_add( &acc->set, "switchboard_keepalives", "false", set_eval_bool, acc );
    4541}
    4642
     
    8379        if( md )
    8480        {
     81                /** Disabling MSN ft support for now.
     82                while( md->filetransfers ) {
     83                        imcb_file_canceled( md->filetransfers->data, "Closing connection" );
     84                }
     85                */
     86               
    8587                if( md->fd >= 0 )
    8688                        closesocket( md->fd );
     
    102104                g_free( md->grouplist );
    103105               
     106                while( md->grpq )
     107                {
     108                        struct msn_groupadd *ga = md->grpq->data;
     109                        g_free( ga->group );
     110                        g_free( ga->who );
     111                        g_free( ga );
     112                        md->grpq = g_slist_remove( md->grpq, ga );
     113                }
     114               
    104115                g_free( md );
    105116        }
     
    120131        struct msn_switchboard *sb;
    121132       
     133#ifdef DEBUG
     134        if( strcmp( who, "raw" ) == 0 )
     135        {
     136                msn_write( ic, message, strlen( message ) );
     137                msn_write( ic, "\r\n", 2 );
     138        }
     139        else
     140#endif
    122141        if( ( sb = msn_sb_by_handle( ic, who ) ) )
    123142        {
     
    169188static void msn_set_my_name( struct im_connection *ic, char *info )
    170189{
    171         msn_set_display_name( set_find( &ic->acc->set, "display_name" ), info );
     190        msn_set_display_name( ic, info );
    172191}
    173192
     
    180199static void msn_add_buddy( struct im_connection *ic, char *who, char *group )
    181200{
    182         msn_buddy_list_add( ic, "FL", who, who );
     201        msn_buddy_list_add( ic, "FL", who, who, group );
    183202}
    184203
     
    221240{
    222241        struct msn_switchboard *sb;
     242        struct groupchat *c = imcb_chat_new( ic, who );
    223243       
    224244        if( ( sb = msn_sb_by_handle( ic, who ) ) )
     
    238258                msn_sb_write_msg( ic, m );
    239259
    240                 return NULL;
    241         }
    242        
    243         return NULL;
     260                return c;
     261        }
    244262}
    245263
     
    251269static void msn_add_permit( struct im_connection *ic, char *who )
    252270{
    253         msn_buddy_list_add( ic, "AL", who, who );
     271        msn_buddy_list_add( ic, "AL", who, who, NULL );
    254272}
    255273
     
    263281        struct msn_switchboard *sb;
    264282       
    265         msn_buddy_list_add( ic, "BL", who, who );
     283        msn_buddy_list_add( ic, "BL", who, who, NULL );
    266284       
    267285        /* If there's still a conversation with this person, close it. */
     
    285303}
    286304
    287 static char *msn_set_display_name( set_t *set, char *value )
     305static char *set_eval_display_name( set_t *set, char *value )
    288306{
    289307        account_t *acc = set->data;
    290308        struct im_connection *ic = acc->ic;
    291         struct msn_data *md;
    292         char buf[1024], *fn;
    293        
    294         /* Double-check. */
     309       
     310        /* Allow any name if we're offline. */
    295311        if( ic == NULL )
    296                 return NULL;
    297        
    298         md = ic->proto_data;
     312                return value;
    299313       
    300314        if( strlen( value ) > 129 )
     
    303317                return NULL;
    304318        }
    305        
    306         fn = msn_http_encode( value );
    307        
    308         g_snprintf( buf, sizeof( buf ), "REA %d %s %s\r\n", ++md->trId, ic->acc->user, fn );
    309         msn_write( ic, buf, strlen( buf ) );
    310         g_free( fn );
    311319       
    312320        /* Returning NULL would be better, because the server still has to
    313321           confirm the name change. However, it looks a bit confusing to the
    314322           user. */
    315         return value;
     323        return msn_set_display_name( ic, value ) ? value : NULL;
    316324}
    317325
     
    342350        ret->send_typing = msn_send_typing;
    343351        ret->handle_cmp = g_strcasecmp;
     352        //ret->transfer_request = msn_ftp_transfer_request;
    344353
    345354        register_protocol(ret);
Note: See TracChangeset for help on using the changeset viewer.