- if(client->flags & SOCKET_FLAG_HAVE_SSL)
- ssl_disconnect(client);
- struct ClientSocket *sock, *last_sock = NULL;
- for (sock = sockets->data; sock; sock = sock->next) {
- if(sock == client) {
- if(last_sock)
- last_sock->next = sock->next;
- else
- sockets->data = sock->next;
- sockets->count--;
- } else
- last_sock = sock;
- }
- if(client->queue)
- queue_destroy(client);
- if(client->whoqueue_first)
- clear_whoqueue(client);
- if(client->handleinfo_first)
- clear_handleinfoqueue(client);
- free(client->host);
- if(client->bind)
- free(client->bind);
- if(client->pass)
- free(client->pass);
- free(client);
+ client->flags &= ~(SOCKET_FLAG_READY | SOCKET_FLAG_RECONNECT);
+ client->flags |= SOCKET_FLAG_QUITTED | SOCKET_FLAG_DEAD;