rb_free(client_p->localClient->passwd);
}
+ rb_free(client_p->localClient->auth_user);
rb_free(client_p->localClient->challenge);
rb_free(client_p->localClient->fullcaps);
rb_free(client_p->localClient->opername);
s_assert(&me != client_p);
free_local_client(client_p);
free_pre_client(client_p);
+ rb_free(client_p->certfp);
rb_bh_free(client_heap, client_p);
}
const char *reason = NULL;
const char *exit_reason = conn_closed;
- if(ConfigFileEntry.kline_with_reason && !EmptyString(aconf->passwd))
+ if(ConfigFileEntry.kline_with_reason)
{
- reason = aconf->passwd;
- exit_reason = aconf->passwd;
+ reason = get_user_ban_reason(aconf);
+ exit_reason = reason;
}
else
{
sendto_realops_snomask(SNO_GENERAL, L_ALL,
"XLINE over-ruled for %s, client is kline_exempt [%s]",
get_client_name(client_p, HIDE_IP),
- aconf->name);
+ aconf->host);
continue;
}
if(IsOper(source_p))
rb_dlinkFindDestroy(source_p, &oper_list);
- sendto_common_channels_local(source_p, ":%s!%s@%s QUIT :%s",
+ sendto_common_channels_local(source_p, NOCAPS, ":%s!%s@%s QUIT :%s",
source_p->name,
source_p->username, source_p->host, comment);
* side effects - add's an Server information block to a client
* if it was not previously allocated.
*/
-server_t *
+struct Server *
make_server(struct Client *client_p)
{
- server_t *serv = client_p->serv;
+ struct Server *serv = client_p->serv;
if(!serv)
{
- serv = (server_t *) rb_malloc(sizeof(server_t));
+ serv = (struct Server *) rb_malloc(sizeof(struct Server));
client_p->serv = serv;
}
return client_p->serv;