#include "hash.h"
#include "ircd.h"
#include "ircd_alloc.h"
-#include "ircd_auth.h"
#include "ircd_features.h"
#include "ircd_log.h"
#include "ircd_reply.h"
#include "parse.h"
#include "querycmds.h"
#include "res.h"
+#include "s_auth.h"
#include "s_bsd.h"
#include "s_conf.h"
#include "s_debug.h"
return nbuf;
}
-/** Set cli_sockhost(cptr) from \a host.
- * If \a host contains an '@', copy starting after that byte.
- * Otherwise copy all of \a host.
- * @param cptr Client to operate on.
- * @param host hostname or user\@hostname string.
- */
-void get_sockhost(struct Client *cptr, char *host)
-{
- char *s;
- if ((s = strchr(host, '@')))
- s++;
- else
- s = host;
- ircd_strncpy(cli_sockhost(cptr), s, HOSTLEN);
-}
-
/**
* Exit one client, local or remote. Assuming for local client that
* all dependents already have been removed, and socket is closed.
if (MyUser(bcptr))
set_snomask(bcptr, ~0, SNO_DEL);
- if (IsInvisible(bcptr))
+ if (IsInvisible(bcptr)) {
+ assert(UserStats.inv_clients > 0);
--UserStats.inv_clients;
- if (IsOper(bcptr))
+ }
+ if (IsOper(bcptr)) {
+ assert(UserStats.opers > 0);
--UserStats.opers;
+ }
if (MyConnect(bcptr))
Count_clientdisconnects(bcptr, UserStats);
else
assert(!IsServer(bcptr));
/* bcptr->user->server->serv->client_list[IndexYXX(bcptr)] = NULL; */
RemoveYXXClient(cli_user(bcptr)->server, cli_yxx(bcptr));
- if (IsIAuthed(bcptr) || cli_iauth(bcptr))
- iauth_exit_client(bcptr);
}
/* Remove bcptr from the client list */
on_for = CurrentTime - cli_firsttime(victim);
+ if (IsUser(victim) || IsUserPort(victim))
+ auth_send_exit(victim);
+
if (IsUser(victim))
log_write(LS_USER, L_TRACE, 0, "%Tu %i %s@%s %s %s %s%s %s :%s",
cli_firsttime(victim), on_for,
cli_user(victim)->username, cli_sockhost(victim),
ircd_ntoa(&cli_ip(victim)),
- IsAccount(victim) ? cli_username(victim) : "0",
+ cli_account(victim),
NumNick(victim), /* two %s's */
cli_name(victim), cli_info(victim));
cli_name(killer), comment);
else
sendrawto_one(victim, MSG_ERROR " :Closing Link: %s by %s (%s)",
- cli_name(victim), IsServer(killer) ? cli_name(&me) :
- cli_name(killer), comment);
+ cli_name(victim),
+ cli_name(IsServer(killer) ? &his : killer),
+ comment);
}
}
if ((IsServer(victim) || IsHandshake(victim) || IsConnecting(victim)) &&