Index: main/features.c =================================================================== --- main/features.c (revision 358122) +++ main/features.c (working copy) @@ -7264,8 +7264,6 @@ ast_connected_line_copy_from_caller(&connected_caller, &chan->caller); ast_channel_unlock(chan); connected_caller.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER; - ast_channel_queue_connected_line_update(chan, &connected_caller, NULL); - ast_party_connected_line_free(&connected_caller); ast_cel_report_event(target, AST_CEL_PICKUP, NULL, NULL, chan); @@ -7279,6 +7277,8 @@ goto pickup_failed; } + ast_channel_queue_connected_line_update(chan, &connected_caller, NULL); + /* setting this flag to generate a reason header in the cancel message to the ringing channel */ ast_set_flag(chan, AST_FLAG_ANSWERED_ELSEWHERE); @@ -7303,6 +7303,7 @@ if (!ast_channel_datastore_remove(target, ds_pickup)) { ast_datastore_free(ds_pickup); } + ast_party_connected_line_free(&connected_caller); return res; }