Changeset 64768d4 for protocols/msn/sb.c


Ignore:
Timestamp:
2010-09-02T09:15:44Z (14 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
bae0617
Parents:
02bb9db
Message:

Replace msn*write functions with saner versions that accept format strings.
Also preparing for additional temporary NS connections (auth token renewal).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • protocols/msn/sb.c

    r02bb9db r64768d4  
    3535static int msn_sb_message( gpointer data, char *msg, int msglen, char **cmd, int num_parts );
    3636
    37 int msn_sb_write( struct msn_switchboard *sb, char *s, int len )
    38 {
     37int msn_sb_write( struct msn_switchboard *sb, const char *fmt, ... )
     38{
     39        va_list params;
     40        char *out;
     41        size_t len;
    3942        int st;
    4043       
     44        va_start( params, fmt );
     45        out = g_strdup_vprintf( fmt, params );
     46        va_end( params );
     47       
    4148        if( getenv( "BITLBEE_DEBUG" ) )
    42         {
    43                 write( 2, "->SB:", 5 );
    44                 write( 2, s, len );
    45         }
    46        
    47         st = write( sb->fd, s, len );
     49                fprintf( stderr, "->SB%d:%s", sb->fd, out );
     50       
     51        len = strlen( out );
     52        st = write( sb->fd, out, len );
     53        g_free( out );
    4854        if( st != len )
    4955        {
    5056                msn_sb_destroy( sb );
    51                 return( 0 );
    52         }
    53        
    54         return( 1 );
     57                return 0;
     58        }
     59       
     60        return 1;
    5561}
    5662
     
    5965        struct msn_data *md = ic->proto_data;
    6066        struct msn_switchboard *sb;
    61         char buf[1024];
    6267
    6368        /* FIXME: *CHECK* the reliability of using spare sb's! */
     
    6772               
    6873                sb->who = g_strdup( m->who );
    69                 g_snprintf( buf, sizeof( buf ), "CAL %d %s\r\n", ++sb->trId, m->who );
    70                 if( msn_sb_write( sb, buf, strlen( buf ) ) )
     74                if( msn_sb_write( sb, "CAL %d %s\r\n", ++sb->trId, m->who ) )
    7175                {
    7276                        /* He/She should join the switchboard soon, let's queue the message. */
     
    7983       
    8084        /* If we reach this line, there was no spare switchboard, so let's make one. */
    81         g_snprintf( buf, sizeof( buf ), "XFR %d SB\r\n", ++md->trId );
    82         if( !msn_write( ic, buf, strlen( buf ) ) )
     85        if( !msn_ns_write( ic, -1, "XFR %d SB\r\n", ++md->trId ) )
    8386        {
    8487                g_free( m->who );
     
    171174        if( sb->ready )
    172175        {
    173                 char *packet, *buf;
     176                char *buf;
    174177                int i, j;
    175178               
     
    207210               
    208211                /* Build the final packet (MSG command + the message). */
    209                 packet = g_strdup_printf( "MSG %d N %d\r\n%s", ++sb->trId, i, buf );
    210                 g_free( buf );
    211                 if( msn_sb_write( sb, packet, strlen( packet ) ) )
    212                 {
    213                         g_free( packet );
    214                         return( 1 );
     212                if( msn_sb_write( sb, "MSG %d N %d\r\n%s", ++sb->trId, i, buf ) )
     213                {
     214                        g_free( buf );
     215                        return 1;
    215216                }
    216217                else
    217218                {
    218                         g_free( packet );
    219                         return( 0 );
     219                        g_free( buf );
     220                        return 0;
    220221                }
    221222        }
     
    332333                g_snprintf( buf, sizeof( buf ), "ANS %d %s %s %d\r\n", ++sb->trId, ic->acc->user, sb->key, sb->session );
    333334       
    334         if( msn_sb_write( sb, buf, strlen( buf ) ) )
     335        if( msn_sb_write( sb, "%s", buf ) )
    335336                sb->inp = b_input_add( sb->fd, B_EV_IO_READ, msn_sb_callback, sb );
    336337        else
     
    352353        {
    353354                time_t now = time( NULL );
    354                 char buf[1024];
    355355               
    356356                if( now - md->first_sb_failure > 600 )
     
    384384                debug( "Moved queued messages back to the main queue, "
    385385                       "creating a new switchboard to retry." );
    386                 g_snprintf( buf, sizeof( buf ), "XFR %d SB\r\n", ++md->trId );
    387                 if( !msn_write( ic, buf, strlen( buf ) ) )
     386                if( !msn_ns_write( ic, -1, "XFR %d SB\r\n", ++md->trId ) )
    388387                        return FALSE;
    389388        }
     
    397396        struct msn_switchboard *sb = data;
    398397        struct im_connection *ic = sb->ic;
    399         char buf[1024];
    400398       
    401399        if( !num_parts )
     
    426424               
    427425                if( sb->who )
    428                 {
    429                         g_snprintf( buf, sizeof( buf ), "CAL %d %s\r\n", ++sb->trId, sb->who );
    430                         return( msn_sb_write( sb, buf, strlen( buf ) ) );
    431                 }
     426                        return msn_sb_write( sb, "CAL %d %s\r\n", ++sb->trId, sb->who );
    432427                else
    433                 {
    434428                        debug( "Just created a switchboard, but I don't know what to do with it." );
    435                 }
    436429        }
    437430        else if( strcmp( cmd[0], "IRO" ) == 0 )
Note: See TracChangeset for help on using the changeset viewer.