Changes in irc.c [dd89a55:0356ae3]
Legend:
- Unmodified
- Added
- Removed
-
irc.c
rdd89a55 r0356ae3 29 29 #include "ipc.h" 30 30 31 static gboolean irc_userping( gpointer _irc );31 static gboolean irc_userping( gpointer _irc, int fd, b_input_condition cond ); 32 32 33 33 GSList *irc_connection_list = NULL; … … 54 54 55 55 irc->fd = fd; 56 irc->io_channel = g_io_channel_unix_new( fd ); 57 #ifdef GLIB2 58 g_io_channel_set_encoding (irc->io_channel, NULL, NULL); 59 g_io_channel_set_buffered (irc->io_channel, FALSE); 60 g_io_channel_set_flags( irc->io_channel, G_IO_FLAG_NONBLOCK, NULL ); 61 #else 62 fcntl( irc->fd, F_SETFL, O_NONBLOCK); 63 #endif 64 irc->r_watch_source_id = g_io_add_watch( irc->io_channel, G_IO_IN | G_IO_ERR | G_IO_HUP, bitlbee_io_current_client_read, irc ); 56 sock_make_nonblocking( irc->fd ); 57 58 irc->r_watch_source_id = b_input_add( irc->fd, GAIM_INPUT_READ, bitlbee_io_current_client_read, irc ); 65 59 66 60 irc->status = USTATUS_OFFLINE; … … 120 114 121 115 if( global.conf->ping_interval > 0 && global.conf->ping_timeout > 0 ) 122 irc->ping_source_id = g_timeout_add( global.conf->ping_interval * 1000, irc_userping, irc );116 irc->ping_source_id = b_timeout_add( global.conf->ping_interval * 1000, irc_userping, irc ); 123 117 124 118 irc_write( irc, ":%s NOTICE AUTH :%s", irc->myhost, "BitlBee-IRCd initialized, please go on" ); … … 190 184 bitlbee_.._write doesn't do it first. */ 191 185 192 g_source_remove( irc->r_watch_source_id );193 irc->r_watch_source_id = g_timeout_add_full( G_PRIORITY_HIGH, 1000, (GSourceFunc) irc_free, irc, NULL);186 b_event_remove( irc->r_watch_source_id ); 187 irc->r_watch_source_id = b_timeout_add( 1000, (b_event_handler) irc_free, irc ); 194 188 } 195 189 else … … 224 218 225 219 if( irc->ping_source_id > 0 ) 226 g_source_remove( irc->ping_source_id );227 g_source_remove( irc->r_watch_source_id );220 b_event_remove( irc->ping_source_id ); 221 b_event_remove( irc->r_watch_source_id ); 228 222 if( irc->w_watch_source_id > 0 ) 229 g_source_remove( irc->w_watch_source_id ); 230 231 g_io_channel_unref( irc->io_channel ); 223 b_event_remove( irc->w_watch_source_id ); 224 232 225 irc_connection_list = g_slist_remove( irc_connection_list, irc ); 233 226 … … 279 272 if(user->host!=user->nick) g_free(user->host); 280 273 if(user->realname!=user->nick) g_free(user->realname); 281 gaim_input_remove(user->sendbuf_timer);274 b_event_remove(user->sendbuf_timer); 282 275 283 276 usertmp = user; … … 329 322 330 323 if( global.conf->runmode == RUNMODE_INETD || global.conf->runmode == RUNMODE_FORKDAEMON ) 331 g_main_quit( global.loop);324 b_main_quit(); 332 325 } 333 326 … … 557 550 558 551 u = user_find( irc, irc->mynick ); 559 i s_private = u->is_private;552 if( u ) is_private = u->is_private; 560 553 561 554 va_start( params, format ); … … 583 576 char line[IRC_MAX_LINE+1], *cs; 584 577 585 if( irc->quit ) 578 /* Don't try to write anything new anymore when shutting down. */ 579 if( irc->status == USTATUS_SHUTDOWN ) 586 580 return; 587 581 … … 600 594 strcat( line, "\r\n" ); 601 595 602 if( irc->sendbuffer != NULL ) { 596 if( irc->sendbuffer != NULL ) 597 { 603 598 size = strlen( irc->sendbuffer ) + strlen( line ); 604 599 irc->sendbuffer = g_renew ( char, irc->sendbuffer, size + 1 ); 605 600 strcpy( ( irc->sendbuffer + strlen( irc->sendbuffer ) ), line ); 606 601 } 607 else 608 irc->sendbuffer = g_strdup(line); 602 else 603 { 604 irc->sendbuffer = g_strdup(line); 605 } 609 606 610 607 if( irc->w_watch_source_id == 0 ) 611 608 { 612 irc->w_watch_source_id = g_io_add_watch( irc->io_channel, G_IO_OUT, bitlbee_io_current_client_write, irc ); 609 /* If the buffer is empty we can probably write, so call the write event handler 610 immediately. If it returns TRUE, it should be called again, so add the event to 611 the queue. If it's FALSE, we emptied the buffer and saved ourselves some work 612 in the event queue. */ 613 if( bitlbee_io_current_client_write( irc, irc->fd, GAIM_INPUT_WRITE ) ) 614 irc->w_watch_source_id = b_input_add( irc->fd, GAIM_INPUT_WRITE, bitlbee_io_current_client_write, irc ); 613 615 } 614 616 … … 636 638 if( now ) 637 639 { 638 bitlbee_io_current_client_write( irc ->io_channel, G_IO_OUT, irc);640 bitlbee_io_current_client_write( irc, irc->fd, GAIM_INPUT_WRITE ); 639 641 } 640 642 temp = temp->next; … … 1017 1019 } 1018 1020 1019 gboolean buddy_send_handler_delayed( gpointer data)1021 static gboolean buddy_send_handler_delayed( gpointer data, gint fd, b_input_condition cond ) 1020 1022 { 1021 1023 user_t *u = data; … … 1030 1032 u->sendbuf_flags = 0; 1031 1033 1032 return ( FALSE );1034 return FALSE; 1033 1035 } 1034 1036 … … 1044 1046 { 1045 1047 //Flush the buffer 1046 g_source_remove( u->sendbuf_timer );1047 buddy_send_handler_delayed( u );1048 b_event_remove( u->sendbuf_timer ); 1049 buddy_send_handler_delayed( u, -1, 0 ); 1048 1050 } 1049 1051 … … 1069 1071 1070 1072 if( u->sendbuf_timer > 0 ) 1071 g_source_remove( u->sendbuf_timer );1072 u->sendbuf_timer = g_timeout_add( delay, buddy_send_handler_delayed, u );1073 b_event_remove( u->sendbuf_timer ); 1074 u->sendbuf_timer = b_timeout_add( delay, buddy_send_handler_delayed, u ); 1073 1075 } 1074 1076 else … … 1154 1156 pongs from the user. When not connected yet, we don't ping but drop the 1155 1157 connection when the user fails to connect in IRC_LOGIN_TIMEOUT secs. */ 1156 static gboolean irc_userping( gpointer _irc )1158 static gboolean irc_userping( gpointer _irc, gint fd, b_input_condition cond ) 1157 1159 { 1158 1160 irc_t *irc = _irc;
Note: See TracChangeset
for help on using the changeset viewer.