Merged revisions 297733 via svnmerge from
authorTilghman Lesher <tilghman@meg.abyt.es>
Tue, 7 Dec 2010 00:31:20 +0000 (00:31 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Tue, 7 Dec 2010 00:31:20 +0000 (00:31 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.8

................
  r297733 | tilghman | 2010-12-06 18:29:26 -0600 (Mon, 06 Dec 2010) | 22 lines

  Merged revisions 297713 via svnmerge from
  https://origsvn.digium.com/svn/asterisk/branches/1.6.2

  ................
    r297713 | tilghman | 2010-12-06 18:21:50 -0600 (Mon, 06 Dec 2010) | 15 lines

    Merged revisions 297689 via svnmerge from
    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/trunk@297734 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_followme.c

index b17d525..a71a683 100644 (file)
@@ -811,7 +811,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);
@@ -823,6 +822,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, S_COR(caller->caller.id.number.valid, caller->caller.id.number.str, NULL))) {
+                               /* 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
@@ -830,7 +837,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;
                        }