ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/client.c
(Generate patch)

Comparing ircd-hybrid-8/src/client.c (file contents):
Revision 1570 by michael, Sun Oct 14 13:50:58 2012 UTC vs.
Revision 1571 by michael, Wed Oct 17 18:53:51 2012 UTC

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

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)