]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 297689 via svnmerge from
authorTilghman Lesher <tilghman@meg.abyt.es>
Tue, 7 Dec 2010 00:21:50 +0000 (00:21 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Tue, 7 Dec 2010 00:21:50 +0000 (00:21 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r297689 | tilghman | 2010-12-06 18:07:37 -0600 (Mon, 06 Dec 2010) | 8 lines

  Don't create a Local channel if the target extension does not exist.

  (closes issue #18126)
   Reported by: junky
   Patches:
         followme.diff uploaded by junky (license 177)
         (partially restructured by me to avoid a possible memory leak)
........

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

apps/app_followme.c

index e79b6cf082039ae002b8bbc36e20de9cb91d66e7..1f599809fbad229cd3e66c5e64dc3941e13d614c 100644 (file)
@@ -806,7 +806,6 @@ static void findmeexec(struct fm_args *tpargs)
                        break;
 
        while (nm) {
-
                ast_debug(2, "Number %s timeout %ld\n", nm->number,nm->timeout);
 
                number = ast_strdupa(nm->number);
@@ -818,6 +817,14 @@ static void findmeexec(struct fm_args *tpargs)
                                rest++;
                        }
 
+                       /* We check if that context exists, before creating the ast_channel struct needed */
+                       if (!ast_exists_extension(caller, tpargs->context, number, 1, caller->cid.cid_num)) {
+                               /* XXX Should probably restructure to simply skip this item, instead of returning. XXX */
+                               ast_log(LOG_ERROR, "Extension '%s@%s' doesn't exist\n", number, tpargs->context);
+                               free(findme_user_list);
+                               return;
+                       }
+
                        if (!strcmp(tpargs->context, ""))
                                snprintf(dialarg, sizeof(dialarg), "%s", number);
                        else
@@ -825,7 +832,6 @@ static void findmeexec(struct fm_args *tpargs)
 
                        tmpuser = ast_calloc(1, sizeof(*tmpuser));
                        if (!tmpuser) {
-                               ast_log(LOG_WARNING, "Out of memory!\n");
                                ast_free(findme_user_list);
                                return;
                        }