Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • ipc.c

    r171ef85 r52744f8  
    258258        else
    259259        {
    260                 ipc_master_free_fd( source );
     260                GSList *l;
     261                struct bitlbee_child *c;
     262               
     263                for( l = child_list; l; l = l->next )
     264                {
     265                        c = l->data;
     266                        if( c->ipc_fd == source )
     267                        {
     268                                ipc_master_free_one( c );
     269                                child_list = g_slist_remove( child_list, c );
     270                                break;
     271                        }
     272                }
    261273        }
    262274       
     
    276288        else
    277289        {
    278                 ipc_child_disable();
     290                b_event_remove( global.listen_watch_source_id );
     291                close( global.listen_socket );
     292               
     293                global.listen_socket = -1;
    279294        }
    280295       
     
    311326        else if( global.conf->runmode == RUNMODE_FORKDAEMON )
    312327        {
    313                 if( global.listen_socket >= 0 )
    314                         if( write( global.listen_socket, msg_buf, strlen( msg_buf ) ) <= 0 )
    315                                 ipc_child_disable();
     328                write( global.listen_socket, msg_buf, strlen( msg_buf ) );
    316329        }
    317330        else if( global.conf->runmode == RUNMODE_DAEMON )
     
    363376        {
    364377                int msg_len = strlen( msg_buf );
    365                 GSList *l, *next;
    366                
    367                 for( l = child_list; l; l = next )
     378                GSList *l;
     379               
     380                for( l = child_list; l; l = l->next )
    368381                {
    369382                        struct bitlbee_child *c = l->data;
    370                        
    371                         next = l->next;
    372                         if( write( c->ipc_fd, msg_buf, msg_len ) <= 0 )
    373                         {
    374                                 ipc_master_free_one( c );
    375                                 child_list = g_slist_remove( child_list, c );
    376                         }
     383                        write( c->ipc_fd, msg_buf, msg_len );
    377384                }
    378385        }
     
    403410}
    404411
    405 void ipc_master_free_fd( int fd )
    406 {
    407         GSList *l;
    408         struct bitlbee_child *c;
    409        
    410         for( l = child_list; l; l = l->next )
    411         {
    412                 c = l->data;
    413                 if( c->ipc_fd == fd )
    414                 {
    415                         ipc_master_free_one( c );
    416                         child_list = g_slist_remove( child_list, c );
    417                         break;
    418                 }
    419         }
    420 }
    421 
    422412void ipc_master_free_all()
    423413{
     
    429419        g_slist_free( child_list );
    430420        child_list = NULL;
    431 }
    432 
    433 void ipc_child_disable()
    434 {
    435         b_event_remove( global.listen_watch_source_id );
    436         close( global.listen_socket );
    437        
    438         global.listen_socket = -1;
    439421}
    440422
Note: See TracChangeset for help on using the changeset viewer.