X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=ircd%2Fs_misc.c;h=111e9c7dc56508c11028a717367c1fd604c31dc9;hb=541252724db32192e85571306ebc60949048a093;hp=96dd2d09b40968f9195a368da1263ec14dbc12a6;hpb=37b928932bbc44140d797a2cda74b83786ccf0d5;p=ircu2.10.12-pk.git diff --git a/ircd/s_misc.c b/ircd/s_misc.c index 96dd2d0..111e9c7 100644 --- a/ircd/s_misc.c +++ b/ircd/s_misc.c @@ -33,7 +33,6 @@ #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" @@ -47,6 +46,7 @@ #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" @@ -172,22 +172,6 @@ const char* get_client_name(const struct Client* sptr, int showip) 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. @@ -239,10 +223,14 @@ static void exit_one_client(struct Client* bcptr, const char* comment) 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 @@ -282,8 +270,6 @@ static void exit_one_client(struct Client* bcptr, const char* comment) 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 */ @@ -395,12 +381,15 @@ int exit_client(struct Client *cptr, 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)); @@ -417,8 +406,9 @@ int exit_client(struct Client *cptr, 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)) &&