139 |
|
assert(client_p != NULL); |
140 |
|
assert(client_p != &me); |
141 |
|
assert(client_p->hnext == client_p); |
142 |
– |
assert(client_p->invited.head == NULL); |
142 |
|
assert(client_p->channel.head == NULL); |
144 |
– |
assert(dlink_list_length(&client_p->invited) == 0); |
143 |
|
assert(dlink_list_length(&client_p->channel) == 0); |
144 |
|
|
145 |
|
MyFree(client_p->away); |
147 |
|
|
148 |
|
if (MyConnect(client_p)) |
149 |
|
{ |
150 |
+ |
assert(dlink_list_length(&client_p->localClient->invited) == 0); |
151 |
+ |
assert(client_p->localClient->invited.head == NULL); |
152 |
|
assert(IsClosing(client_p) && IsDead(client_p)); |
153 |
|
|
154 |
|
MyFree(client_p->localClient->response); |
738 |
|
if (source_p->servptr->serv != NULL) |
739 |
|
dlinkDelete(&source_p->lnode, &source_p->servptr->serv->users); |
740 |
|
|
741 |
< |
/* If a person is on a channel, send a QUIT notice |
742 |
< |
** to every client (person) on the same channel (so |
743 |
< |
** that the client can show the "**signoff" message). |
744 |
< |
** (Note: The notice is to the local clients *only*) |
745 |
< |
*/ |
741 |
> |
/* |
742 |
> |
* If a person is on a channel, send a QUIT notice |
743 |
> |
* to every client (person) on the same channel (so |
744 |
> |
* that the client can show the "**signoff" message). |
745 |
> |
* (Note: The notice is to the local clients *only*) |
746 |
> |
*/ |
747 |
|
sendto_common_channels_local(source_p, 0, ":%s!%s@%s QUIT :%s", |
748 |
|
source_p->name, source_p->username, |
749 |
|
source_p->host, quitmsg); |
750 |
|
DLINK_FOREACH_SAFE(lp, next_lp, source_p->channel.head) |
751 |
|
remove_user_from_channel(lp->data); |
752 |
|
|
752 |
– |
/* Clean up invitefield */ |
753 |
– |
DLINK_FOREACH_SAFE(lp, next_lp, source_p->invited.head) |
754 |
– |
del_invite(lp->data, source_p); |
755 |
– |
|
753 |
|
add_history(source_p, 0); |
754 |
|
off_history(source_p); |
755 |
|
|
759 |
|
/* Do local vs. remote processing here */ |
760 |
|
if (MyConnect(source_p)) |
761 |
|
{ |
762 |
+ |
/* Clean up invitefield */ |
763 |
+ |
DLINK_FOREACH_SAFE(lp, next_lp, source_p->invited.head) |
764 |
+ |
del_invite(lp->data, source_p); |
765 |
+ |
|
766 |
|
/* Clean up allow lists */ |
767 |
|
del_all_accepts(source_p); |
768 |
|
} |