Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • protocols/msn/ns.c

    r21d48d9 rd84e2a9  
    229229                        }
    230230                }
    231                 else if( num_parts >= 7 && strcmp( cmd[2], "OK" ) == 0 )
     231                else if( num_parts == 7 && strcmp( cmd[2], "OK" ) == 0 )
    232232                {
    233233                        set_t *s;
    234234                       
    235                         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                         }
    248                         else
    249                         {
    250                                 imcb_log( ic, "Warning: Friendly name in server response was corrupted" );
     235                        http_decode( cmd[4] );
     236                       
     237                        strncpy( ic->displayname, cmd[4], sizeof( ic->displayname ) );
     238                        ic->displayname[sizeof(ic->displayname)-1] = 0;
     239                       
     240                        if( ( s = set_find( &ic->acc->set, "display_name" ) ) )
     241                        {
     242                                g_free( s->value );
     243                                s->value = g_strdup( cmd[4] );
    251244                        }
    252245                       
     
    427420                {
    428421                        /* FIXME: Warn/Bomb about unknown away state? */
    429                         st = msn_away_state_list + 1;
    430                 }
    431                
    432                 imcb_buddy_status( ic, cmd[3], OPT_LOGGED_IN |
    433                                    ( st != msn_away_state_list ? OPT_AWAY : 0 ),
    434                                    st->name, NULL );
     422                        st = msn_away_state_list;
     423                }
     424               
     425                imcb_buddy_status( ic, cmd[3], OPT_LOGGED_IN |
     426                                   ( st->number ? OPT_AWAY : 0 ), st->name, NULL );
    435427        }
    436428        else if( strcmp( cmd[0], "FLN" ) == 0 )
     
    457449                {
    458450                        /* FIXME: Warn/Bomb about unknown away state? */
    459                         st = msn_away_state_list + 1;
    460                 }
    461                
    462                 imcb_buddy_status( ic, cmd[2], OPT_LOGGED_IN |
    463                                    ( st != msn_away_state_list ? OPT_AWAY : 0 ),
    464                                    st->name, NULL );
     451                        st = msn_away_state_list;
     452                }
     453               
     454                imcb_buddy_status( ic, cmd[2], OPT_LOGGED_IN |
     455                                   ( st->number ? OPT_AWAY : 0 ), st->name, NULL );
    465456        }
    466457        else if( strcmp( cmd[0], "RNG" ) == 0 )
     
    672663                                }
    673664                               
    674                                 g_free( arg1 );
    675                                 g_free( mtype );
     665                                if( arg1 ) g_free( arg1 );
     666                                if( mtype ) g_free( mtype );
    676667                        }
    677668                        else if( g_strncasecmp( ct, "text/x-msmsgsprofile", 20 ) == 0 )
     
    681672                        else if( g_strncasecmp( ct, "text/x-msmsgsinitialemailnotification", 37 ) == 0 )
    682673                        {
    683                                 if( set_getbool( &ic->acc->set, "mail_notifications" ) )
     674                                char *inbox = msn_findheader( body, "Inbox-Unread:", blen );
     675                                char *folders = msn_findheader( body, "Folders-Unread:", blen );
     676                               
     677                                if( inbox && folders && set_getbool( &ic->acc->set, "mail_notifications" ) )
    684678                                {
    685                                         char *inbox = msn_findheader( body, "Inbox-Unread:", blen );
    686                                         char *folders = msn_findheader( body, "Folders-Unread:", blen );
    687 
    688                                         if( inbox && folders )
    689                                                 imcb_log( ic, "INBOX contains %s new messages, plus %s messages in other folders.", inbox, folders );
    690                                        
    691                                         g_free( inbox );
    692                                         g_free( folders );
     679                                        imcb_log( ic, "INBOX contains %s new messages, plus %s messages in other folders.", inbox, folders );
    693680                                }
     681                               
     682                                g_free( inbox );
     683                                g_free( folders );
    694684                        }
    695685                        else if( g_strncasecmp( ct, "text/x-msmsgsemailnotification", 30 ) == 0 )
    696686                        {
    697                                 if( set_getbool( &ic->acc->set, "mail_notifications" ) )
     687                                char *from = msn_findheader( body, "From-Addr:", blen );
     688                                char *fromname = msn_findheader( body, "From:", blen );
     689                               
     690                                if( from && fromname && set_getbool( &ic->acc->set, "mail_notifications" ) )
    698691                                {
    699                                         char *from = msn_findheader( body, "From-Addr:", blen );
    700                                         char *fromname = msn_findheader( body, "From:", blen );
    701                                        
    702                                         if( from && fromname )
    703                                                 imcb_log( ic, "Received an e-mail message from %s <%s>.", fromname, from );
    704 
    705                                         g_free( from );
    706                                         g_free( fromname );
     692                                        imcb_log( ic, "Received an e-mail message from %s <%s>.", fromname, from );
    707693                                }
    708694                        }
Note: See TracChangeset for help on using the changeset viewer.