From 0a48cd0b3053b43aa807d7f85d6cef958ef6e7eb Mon Sep 17 00:00:00 2001 From: Michael Poole Date: Wed, 22 Feb 2006 15:34:45 +0000 Subject: [PATCH] Fix some other bugs when IAuth is not enabled. git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/branches/u2_10_12_branch@1624 c9e4aea6-c8fd-4c43-8297-357d70d61c8c --- ChangeLog | 8 ++++++++ ircd/s_auth.c | 19 ++++++++++++------- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 123f366..77ef303 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2006-02-22 Michael Poole + + * ircd/s_auth.c (check_auth_finished): Give non-iauth clients + connection classes, too. + (auth_close_unused): Remove redundant check for iauth != NULL. + (report_iauth_conf): Check iauth != NULL before deref'ing it. + (report_iauth_stats): Likewise. + 2006-02-22 Kevin L. Mitchell * ircd/s_auth.c: fix macros to not dereference a NULL pointer when diff --git a/ircd/s_auth.c b/ircd/s_auth.c index 4cb8de4..03a2c26 100644 --- a/ircd/s_auth.c +++ b/ircd/s_auth.c @@ -370,6 +370,12 @@ static int check_auth_finished(struct AuthRequest *auth, int send_reports) return 0; } + /* If appropriate, do preliminary assignment to connection class. */ + if (IsUserPort(auth->client) + && !FlagHas(&auth->flags, AR_IAUTH_HURRY) + && preregister_user(auth->client)) + return CPTR_KILLED; + /* Check if iauth is done. */ if (FlagHas(&auth->flags, AR_IAUTH_PENDING)) { @@ -381,10 +387,6 @@ static int check_auth_finished(struct AuthRequest *auth, int send_reports) /* Set "hurry" flag in auth request. */ FlagSet(&auth->flags, AR_IAUTH_HURRY); - /* Do preliminary assignment to connection class. */ - if (preregister_user(auth->client)) - return CPTR_KILLED; - /* Check password now (to avoid challenge/response conflicts). */ aconf = cli_confs(auth->client)->value.aconf; if (!EmptyString(aconf->passwd) @@ -408,6 +410,9 @@ static int check_auth_finished(struct AuthRequest *auth, int send_reports) cli_fd(auth->client), AR_IAUTH_PENDING)); return 0; } + else + FlagSet(&auth->flags, AR_IAUTH_HURRY); + destroy_auth_request(auth, send_reports); if (!IsUserPort(auth->client)) @@ -1263,7 +1268,7 @@ static void iauth_disconnect(struct IAuth *iauth) /** Close all %IAuth connections marked as closing. */ void auth_close_unused(void) { - if (iauth && IAuthHas(iauth, IAUTH_CLOSING)) { + if (IAuthHas(iauth, IAUTH_CLOSING)) { int ii; iauth_disconnect(iauth); if (iauth->i_argv) { @@ -2018,7 +2023,7 @@ void report_iauth_conf(struct Client *cptr, const struct StatDesc *sd, char *par { struct SLink *link; - for (link = iauth->i_config; link; link = link->next) + if (iauth) for (link = iauth->i_config; link; link = link->next) { send_reply(cptr, SND_EXPLICIT | RPL_STATSDEBUG, ":%s", link->value.cp); @@ -2035,7 +2040,7 @@ void report_iauth_conf(struct Client *cptr, const struct StatDesc *sd, char *par { struct SLink *link; - for (link = iauth->i_stats; link; link = link->next) + if (iauth) for (link = iauth->i_stats; link; link = link->next) { send_reply(cptr, SND_EXPLICIT | RPL_STATSDEBUG, ":%s", link->value.cp); -- 2.20.1