]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 376865,376869 via svnmerge from
authorAutomerge script <automerge@asterisk.org>
Thu, 29 Nov 2012 23:25:48 +0000 (23:25 +0000)
committerAutomerge script <automerge@asterisk.org>
Thu, 29 Nov 2012 23:25:48 +0000 (23:25 +0000)
file:///srv/subversion/repos/asterisk/branches/10

................
  r376865 | rmudgett | 2012-11-29 16:30:26 -0600 (Thu, 29 Nov 2012) | 7 lines

  Fix compile error.

  (issue ASTERISK-20724)
  ........

  Merged revisions 376864 from http://svn.asterisk.org/svn/asterisk/branches/1.8
................
  r376869 | rmudgett | 2012-11-29 16:58:28 -0600 (Thu, 29 Nov 2012) | 7 lines

  chan_local: Fix local_pvt ref leak in local_devicestate().

  Regression introduced by ASTERISK-20390 fix.
  ........

  Merged revisions 376868 from http://svn.asterisk.org/svn/asterisk/branches/1.8
................

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10-digiumphones@376897 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_local.c
channels/chan_sip.c

index f81aa956644cb06ab00ce5d6ec0d327818846620..768fafc6a01c0cc31d70935125b9284f2de1e676 100644 (file)
@@ -307,15 +307,20 @@ static int local_devicestate(void *data)
        res = AST_DEVICE_NOT_INUSE;
 
        it = ao2_iterator_init(locals, 0);
-       while ((lp = ao2_iterator_next(&it)) && (res == AST_DEVICE_NOT_INUSE)) {
-               if (!strcmp(exten, lp->exten) && !strcmp(context, lp->context) && lp->owner) {
-                       ao2_lock(lp);
-                       if (ast_test_flag(lp, LOCAL_LAUNCHED_PBX)) {
-                               res = AST_DEVICE_INUSE;
-                       }
-                       ao2_unlock(lp);
+       for (; (lp = ao2_iterator_next(&it)); ao2_ref(lp, -1)) {
+               int is_inuse;
+
+               ao2_lock(lp);
+               is_inuse = !strcmp(exten, lp->exten)
+                       && !strcmp(context, lp->context)
+                       && lp->owner
+                       && ast_test_flag(lp, LOCAL_LAUNCHED_PBX);
+               ao2_unlock(lp);
+               if (is_inuse) {
+                       res = AST_DEVICE_INUSE;
+                       ao2_ref(lp, -1);
+                       break;
                }
-               ao2_ref(lp, -1);
        }
        ao2_iterator_destroy(&it);
 
index 6a726a9c60e36b693de097fae872e368f2f68b16..be07d4697314c2ec6eb102c09e5f376edde5c0f0 100644 (file)
@@ -16930,7 +16930,7 @@ static void check_via(struct sip_pvt *p, struct sip_request *req)
                if (ast_sockaddr_resolve_first(&tmp, c, 0)) {
                        ast_log(LOG_WARNING, "Could not resolve socket address for '%s'\n", c);
                        port = STANDARD_SIP_PORT;
-               } else if (!(port = ast_sockaddr_port(&tmp)) {
+               } else if (!(port = ast_sockaddr_port(&tmp))) {
                        port = STANDARD_SIP_PORT;
                }