#include "ircd.h"
#include "numeric.h"
#include "packet.h"
-#include "authd.h"
+#include "authproc.h"
#include "s_conf.h"
#include "s_newconf.h"
#include "logger.h"
#include "scache.h"
#include "rb_dictionary.h"
#include "sslproc.h"
+#include "wsproc.h"
#include "s_assert.h"
#define DEBUG_EXITED_CLIENTS
uint32_t
connid_get(struct Client *client_p)
{
- s_assert(MyClient(client_p));
- if (!MyClient(client_p))
+ s_assert(MyConnect(client_p));
+ if (!MyConnect(client_p))
return 0;
/* find a connid that is available */
{
rb_dlink_node *ptr, *ptr2;
- s_assert(MyClient(client_p));
- if (!MyClient(client_p))
+ if (client_p->localClient->connids.head)
+ s_assert(MyConnect(client_p));
+
+ if (!MyConnect(client_p))
return;
RB_DLINK_FOREACH_SAFE(ptr, ptr2, client_p->localClient->connids.head)
}
SetUnknown(client_p);
- strcpy(client_p->username, "unknown");
+ rb_strlcpy(client_p->username, "unknown", sizeof(client_p->username));
return client_p;
}
if(client_p->preClient == NULL)
return;
- s_assert(client_p->preClient->authd_cid == 0);
+ s_assert(client_p->preClient->auth.cid == 0);
- rb_free(client_p->preClient->authd_data);
- rb_free(client_p->preClient->authd_reason);
+ rb_free(client_p->preClient->auth.data);
+ rb_free(client_p->preClient->auth.reason);
rb_bh_free(pclient_heap, client_p->preClient);
client_p->preClient = NULL;
if (client_p->localClient->privset)
privilegeset_unref(client_p->localClient->privset);
- if(IsSSL(client_p))
- ssld_decrement_clicount(client_p->localClient->ssl_ctl);
+ if (IsSSL(client_p))
+ ssld_decrement_clicount(client_p->localClient->ssl_ctl);
+
+ rb_free(client_p->localClient->cipher_string);
- if(IsCapable(client_p, CAP_ZIP))
- ssld_decrement_clicount(client_p->localClient->z_ctl);
+ if (IsCapable(client_p, CAP_ZIP))
+ ssld_decrement_clicount(client_p->localClient->z_ctl);
+
+ rb_free(client_p->localClient->zipstats);
+
+ if (client_p->localClient->ws_ctl != NULL)
+ wsockd_decrement_clicount(client_p->localClient->ws_ctl);
rb_bh_free(lclient_heap, client_p->localClient);
client_p->localClient = NULL;
continue;
/* Still querying with authd */
- if(client_p->preClient != NULL && client_p->preClient->authd_cid != 0)
+ if(client_p->preClient != NULL && client_p->preClient->auth.cid != 0)
continue;
/*
{
s_assert(0);
sendto_realops_snomask(SNO_GENERAL, L_ALL,
- "On abort_list: %s stat: %u flags: %u/%u handler: %c",
+ "On abort_list: %s stat: %u flags: %llu handler: %c",
target_p->name, (unsigned int) target_p->status,
- target_p->flags, target_p->flags2, target_p->handler);
+ (unsigned long long)target_p->flags, target_p->handler);
sendto_realops_snomask(SNO_GENERAL, L_ALL,
"Please report this to the charybdis developers!");
found++;
{
s_assert(0);
sendto_realops_snomask(SNO_GENERAL, L_ALL,
- "On dead_list: %s stat: %u flags: %u/%u handler: %c",
+ "On dead_list: %s stat: %u flags: %llu handler: %c",
abt->client->name, (unsigned int) abt->client->status,
- abt->client->flags, abt->client->flags2, abt->client->handler);
+ (unsigned long long)abt->client->flags, abt->client->handler);
sendto_realops_snomask(SNO_GENERAL, L_ALL,
"Please report this to the charybdis developers!");
continue;
*/
static int
-exit_unknown_client(struct Client *client_p, struct Client *source_p, struct Client *from,
- const char *comment)
+exit_unknown_client(struct Client *client_p, /* The local client originating the
+ * exit or NULL, if this exit is
+ * generated by this server for
+ * internal reasons.
+ * This will not get any of the
+ * generated messages. */
+ struct Client *source_p, /* Client exiting */
+ struct Client *from, /* Client firing off this Exit,
+ * never NULL! */
+ const char *comment)
{
- authd_abort_client(client_p);
+ authd_abort_client(source_p);
rb_dlinkDelete(&source_p->localClient->tnode, &unknown_list);
if(!IsIOError(source_p))