Index: features.c =================================================================== --- features.c (revision 307674) +++ features.c (working copy) @@ -4377,6 +4377,9 @@ int park = 0; struct ast_bridge_config config; struct ast_parkinglot *parkinglot; + struct ast_party_connected_line connected_caller; + const char *chan_name; + const char *pu_name; if (data) { park = atoi((char *) data); @@ -4423,6 +4426,25 @@ S_COR(pu->chan->caller.id.name.valid, pu->chan->caller.id.name.str, "") ); + ast_channel_lock_both(pu->chan, chan); + + pu_name = ast_strdupa(pu->chan->name); + chan_name = ast_strdupa(chan->name); + ast_debug(1, "Parked call: channel '%s' retrieved '%s'\n", chan_name, pu_name); + + ast_party_connected_line_collect_caller(&connected_caller, &pu->chan->caller); + connected_caller.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER; + if (ast_channel_connected_line_macro(NULL, chan, &connected_caller, 0, 0)) { + ast_channel_update_connected_line(chan, &connected_caller, NULL); + } + + ast_party_connected_line_collect_caller(&connected_caller, &chan->caller); + connected_caller.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER; + ast_channel_queue_connected_line_update(chan, &connected_caller, NULL); + + ast_channel_unlock(pu->chan); + ast_channel_unlock(chan); + ast_free(pu); } /* JK02: it helps to answer the channel if not already up */