diff options
Diffstat (limited to 'irc.c')
-rw-r--r-- | irc.c | 43 |
1 files changed, 23 insertions, 20 deletions
@@ -151,23 +151,25 @@ irc_t *irc_new( int fd ) return( irc ); } +/* immed=1 makes this function pretty much equal to irc_free(), except that + this one will "log". In case the connection is already broken and we + shouldn't try to write to it. */ void irc_abort( irc_t *irc, int immed, char *format, ... ) { - va_list params; - if( format != NULL ) { + va_list params; char *reason; va_start( params, format ); - reason = g_strdup_printf( format, params ); + reason = g_strdup_vprintf( format, params ); va_end( params ); if( !immed ) irc_write( irc, "ERROR :Closing link: %s", reason ); ipc_to_master_str( "OPERMSG :Client exiting: %s@%s [%s]\r\n", - irc->nick, irc->host, reason" ); + irc->nick ? irc->nick : "(NONE)", irc->host, reason ); g_free( reason ); } @@ -177,7 +179,7 @@ void irc_abort( irc_t *irc, int immed, char *format, ... ) irc_write( irc, "ERROR :Closing link" ); ipc_to_master_str( "OPERMSG :Client exiting: %s@%s [%s]\r\n", - irc->nick, irc->host, "No reason given" ); + irc->nick ? irc->nick : "(NONE)", irc->host, "No reason given" ); } irc->status = USTATUS_SHUTDOWN; @@ -338,7 +340,7 @@ void irc_setpass (irc_t *irc, const char *pass) } } -int irc_process( irc_t *irc ) +void irc_process( irc_t *irc ) { char **lines, *temp, **cmd; int i; @@ -360,14 +362,16 @@ int irc_process( irc_t *irc ) if( ( cmd = irc_parse_line( lines[i] ) ) == NULL ) continue; - if( !irc_exec( irc, cmd ) ) + irc_exec( irc, cmd ); + + g_free( cmd ); + + /* Shouldn't really happen, but just in case... */ + if( !g_slist_find( irc_connection_list, irc ) ) { - g_free( cmd ); g_free( lines ); - return 0; + return; } - - g_free( cmd ); } if( lines[i] != NULL ) @@ -378,8 +382,6 @@ int irc_process( irc_t *irc ) g_free( lines ); } - - return 1; } char **irc_tokenize( char *buffer ) @@ -971,7 +973,10 @@ int irc_send( irc_t *irc, char *nick, char *s, int flags ) } if( u->send_handler ) - return( u->send_handler( irc, u, s, flags ) ); + { + u->send_handler( irc, u, s, flags ); + return 1; + } } else if( c && c->gc && c->gc->prpl ) { @@ -997,9 +1002,9 @@ gboolean buddy_send_handler_delayed( gpointer data ) return( FALSE ); } -int buddy_send_handler( irc_t *irc, user_t *u, char *msg, int flags ) +void buddy_send_handler( irc_t *irc, user_t *u, char *msg, int flags ) { - if( !u || !u->gc ) return( 0 ); + if( !u || !u->gc ) return; if( set_getint( irc, "buddy_sendbuffer" ) && set_getint( irc, "buddy_sendbuffer_delay" ) > 0 ) { @@ -1035,12 +1040,10 @@ int buddy_send_handler( irc_t *irc, user_t *u, char *msg, int flags ) if( u->sendbuf_timer > 0 ) g_source_remove( u->sendbuf_timer ); u->sendbuf_timer = g_timeout_add( delay, buddy_send_handler_delayed, u ); - - return( 1 ); } else { - return( serv_send_im( irc, u, msg, flags ) ); + serv_send_im( irc, u, msg, flags ); } } @@ -1145,7 +1148,7 @@ static gboolean irc_userping( gpointer _irc ) if( rv > 0 ) { - irc_abort( irc, "ERROR :Closing Link: Ping Timeout: %d seconds", rv ); + irc_abort( irc, 0, "Ping Timeout: %d seconds", rv ); return FALSE; } |