Fix segfault on directed pickup when no CDR is available (bug #5998)
authorMark Spencer <markster@digium.com>
Tue, 20 Dec 2005 09:56:55 +0000 (09:56 +0000)
committerMark Spencer <markster@digium.com>
Tue, 20 Dec 2005 09:56:55 +0000 (09:56 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7541 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_directed_pickup.c

index 7008ff0..9e7d3cc 100644 (file)
@@ -77,7 +77,7 @@ static int pickup_exec(struct ast_channel *chan, void *data)
 
        /* Find a channel to pickup */
        origin = ast_get_channel_by_exten_locked(exten, context);
-       if (origin) {
+       if (origin && origin->cdr) {
                ast_cdr_getvar(origin->cdr, "dstchannel", &tmp, workspace,
                               sizeof(workspace), 0);
                if (tmp) {
@@ -89,6 +89,8 @@ static int pickup_exec(struct ast_channel *chan, void *data)
                }
                ast_mutex_unlock(&origin->lock);
        } else {
+               if (origin)
+                       ast_mutex_unlock(&origin->lock);
                ast_log(LOG_DEBUG, "No originating channel found.\n");
        }