From e7c0a0524a8742cb40ce47cfff3e56bb7b2ce16f Mon Sep 17 00:00:00 2001
From: Luigi Rizzo <rizzo@icir.org>
Date: Sun, 22 Oct 2006 20:59:38 +0000
Subject: [PATCH] simplify the flow of function check_user_full()

A large block needs reindentation now, but we don't do that because
it can be moved to a separate function.



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45905 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channels/chan_sip.c | 24 +++++++++++-------------
 1 file changed, 11 insertions(+), 13 deletions(-)

diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index a41dcbb1b3..d5ba111dac 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -8928,7 +8928,13 @@ static enum check_auth_result check_user_full(struct sip_pvt *p, struct sip_requ
 		user = find_user(of, 1);
 
 	/* Find user based on user name in the from header */
-	if (user && ast_apply_ha(user->ha, sin)) {
+	if (user && !ast_apply_ha(user->ha, sin)) {
+		if (!authpeer && debug)
+			ast_verbose("Found user '%s', but fails host access\n", user->name);
+		ASTOBJ_UNREF(user,sip_destroy_user);
+		user = NULL;
+	}
+	if (user) {
 		ast_copy_flags(&p->flags[0], &user->flags[0], SIP_FLAGS_TO_COPY);
 		ast_copy_flags(&p->flags[1], &user->flags[1], SIP_PAGE2_FLAGS_TO_COPY);
 		/* copy channel vars */
@@ -9010,16 +9016,12 @@ static enum check_auth_result check_user_full(struct sip_pvt *p, struct sip_requ
 		}
 		if (debug)
 			ast_verbose("Found user '%s'\n", user->name);
-	} else {
-		if (user) {
-			if (!authpeer && debug)
-				ast_verbose("Found user '%s', but fails host access\n", user->name);
-			ASTOBJ_UNREF(user,sip_destroy_user);
-		}
-		user = NULL;
+		ASTOBJ_UNREF(user, sip_destroy_user);
+		return res;
 	}
 
-	if (!user) {
+	/* XXX need to reindent the next block */
+
 		/* If we didn't find a user match, check for peers */
 		if (sipmethod == SIP_SUBSCRIBE)
 			/* For subscribes, match on peer name only */
@@ -9144,10 +9146,6 @@ static enum check_auth_result check_user_full(struct sip_pvt *p, struct sip_requ
 			}
 		}
 
-	}
-
-	if (user)
-		ASTOBJ_UNREF(user, sip_destroy_user);
 	return res;
 }
 
-- 
GitLab