/[svn]/ircd-hybrid-8/src/client.c
ViewVC logotype

Diff of /ircd-hybrid-8/src/client.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1570 by michael, Sun Oct 14 13:50:58 2012 UTC revision 1571 by michael, Wed Oct 17 18:53:51 2012 UTC
# Line 866  exit_client(struct Client *source_p, str Line 866  exit_client(struct Client *source_p, str
866        source_p->localClient->auth = NULL;        source_p->localClient->auth = NULL;
867      }      }
868    
869      /* This source_p could have status of one of STAT_UNKNOWN, STAT_CONNECTING      /*
870         * This source_p could have status of one of STAT_UNKNOWN, STAT_CONNECTING
871       * STAT_HANDSHAKE or STAT_UNKNOWN       * STAT_HANDSHAKE or STAT_UNKNOWN
872       * all of which are lumped together into unknown_list       * all of which are lumped together into unknown_list
873       *       *
# Line 885  exit_client(struct Client *source_p, str Line 886  exit_client(struct Client *source_p, str
886        Count.local--;        Count.local--;
887    
888        if (HasUMode(source_p, UMODE_OPER))        if (HasUMode(source_p, UMODE_OPER))
       {  
889          if ((m = dlinkFindDelete(&oper_list, source_p)) != NULL)          if ((m = dlinkFindDelete(&oper_list, source_p)) != NULL)
890            free_dlink_node(m);            free_dlink_node(m);
       }  
891    
892        assert(dlinkFind(&local_client_list, source_p));        assert(dlinkFind(&local_client_list, source_p));
893        dlinkDelete(&source_p->localClient->lclient_node, &local_client_list);        dlinkDelete(&source_p->localClient->lclient_node, &local_client_list);
# Line 915  exit_client(struct Client *source_p, str Line 914  exit_client(struct Client *source_p, str
914             source_p->localClient->send.bytes>>10,             source_p->localClient->send.bytes>>10,
915             source_p->localClient->recv.bytes>>10);             source_p->localClient->recv.bytes>>10);
916      }      }
917        else if (IsServer(source_p))
     /* As soon as a client is known to be a server of some sort  
      * it has to be put on the serv_list, or SJOIN's to this new server  
      * from the connect burst will not be seen.  
      * XXX - TBV.  This is not true. The only place where we put a server on  
      * serv_list is in server_estab right now after registration process.  
      * And only after this, a burst is sent to the remote server, i.e. we never  
      * send a burst to STAT_CONNECTING, or STAT_HANDSHAKE. This will need  
      * more investigation later on, but for now, it's not a problem after all.  
      */  
     if (IsServer(source_p) || IsConnecting(source_p) ||  
         IsHandshake(source_p))  
918      {      {
919        if (dlinkFind(&serv_list, source_p))        assert(Count.myserver > 0);
920        {        --Count.myserver;
         dlinkDelete(&source_p->localClient->lclient_node, &serv_list);  
         unset_chcap_usage_counts(source_p);  
       }  
921    
922        if (IsServer(source_p))        assert(dlinkFind(&serv_list, source_p));
923          Count.myserver--;        dlinkDelete(&source_p->localClient->lclient_node, &serv_list);
924          unset_chcap_usage_counts(source_p);
925      }      }
926    
927      if (!IsDead(source_p))      if (!IsDead(source_p))

Legend:
Removed from v.1570  
changed lines
  Added in v.1571

svnadmin@ircd-hybrid.org
ViewVC Help
Powered by ViewVC 1.1.28