simplify the flow of function check_user_full()
authorLuigi Rizzo <rizzo@icir.org>
Sun, 22 Oct 2006 20:59:38 +0000 (20:59 +0000)
committerLuigi Rizzo <rizzo@icir.org>
Sun, 22 Oct 2006 20:59:38 +0000 (20:59 +0000)
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

index a41dcbb..d5ba111 100644 (file)
@@ -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 */
                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 */
                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);
                }
                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 */
                /* 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;
 }
 
        return res;
 }