Fix segfault in app queue when no cdr exists for the calling channel (bug #5462)
authorMark Spencer <markster@digium.com>
Tue, 18 Oct 2005 20:58:16 +0000 (20:58 +0000)
committerMark Spencer <markster@digium.com>
Tue, 18 Oct 2005 20:58:16 +0000 (20:58 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6824 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_queue.c

index e1d7373..7a09914 100755 (executable)
@@ -2188,8 +2188,14 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
                                which = peer;
                        if (monitorfilename)
                                ast_monitor_start(which, qe->parent->monfmt, monitorfilename, 1 );
-                       else
+                       else if (qe->chan->cdr) 
                                ast_monitor_start(which, qe->parent->monfmt, qe->chan->cdr->uniqueid, 1 );
+                       else {
+                               /* Last ditch effort -- no CDR, make up something */
+                               char tmpid[256];
+                               snprintf(tmpid, sizeof(tmpid), "chan-%x", rand());
+                               ast_monitor_start(which, qe->parent->monfmt, tmpid, 1 );
+                       }
                        if (qe->parent->monjoin)
                                ast_monitor_setjoinfiles(which, 1);
                }