Write the correct callid to the data1 field in queue_log for transfer events.
authorKevin Harwell <kharwell@digium.com>
Tue, 19 Feb 2013 19:47:42 +0000 (19:47 +0000)
committerKevin Harwell <kharwell@digium.com>
Tue, 19 Feb 2013 19:47:42 +0000 (19:47 +0000)
The incorrect callid was being written to the "data1" field in queue_log table
for transfer events.  The callid of the queue was being written instead of the
transfer target's callid.  This now gets the correct "transfer to" number and
places that in the "data1" field of the queue_log table when a transfer event
is triggered.

(closes issue ASTERISK-19960)
Reported by: vladimir shmagin
........

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

Merged revisions 381791 from http://svn.asterisk.org/svn/asterisk/branches/11

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

main/features.c

index 0224e78..0f05fad 100644 (file)
@@ -3012,7 +3012,13 @@ static int builtin_atxfer(struct ast_channel *chan, struct ast_channel *peer, st
                ast_party_connected_line_free(&connected_line);
                return -1;
        }
-       ast_explicit_goto(xferchan, ast_channel_context(transferee), ast_channel_exten(transferee), ast_channel_priority(transferee));
+
+       dash = strrchr(xferto, '@');
+       if (dash) {
+               /* Trim off the context. */
+               *dash = '\0';
+       }
+       ast_explicit_goto(xferchan, transferer_real_context, xferto, 1);
        ast_channel_state_set(xferchan, AST_STATE_UP);
        ast_clear_flag(ast_channel_flags(xferchan), AST_FLAGS_ALL);