Index: main/features.c =================================================================== --- main/features.c (revision 371589) +++ main/features.c (working copy) @@ -945,6 +945,33 @@ struct ast_channel *transferee, const char *type, format_t format, void *data, int timeout, int *outstate, const char *language); +static const struct ast_datastore_info channel_app_data_datastore = { + .type = "Channel appdata datastore", + .destroy = ast_free_ptr, +}; + +static int set_chan_app_data(struct ast_channel *chan, const char *src_app_data) +{ + struct ast_datastore *datastore; + char *dst_app_data; + + datastore = ast_datastore_alloc(&channel_app_data_datastore, NULL); + if (!datastore) { + return -1; + } + + dst_app_data = ast_malloc(strlen(src_app_data) + 1); + if (!dst_app_data) { + ast_datastore_free(datastore); + return -1; + } + + chan->data = strcpy(dst_app_data, src_app_data); + datastore->data = dst_app_data; + ast_channel_datastore_add(chan, datastore); + return 0; +} + /*! * \brief bridge the call * \param data thread bridge. @@ -958,9 +985,13 @@ struct ast_bridge_thread_obj *tobj = data; tobj->chan->appl = !tobj->return_to_pbx ? "Transferred Call" : "ManagerBridge"; - tobj->chan->data = tobj->peer->name; + if (set_chan_app_data(tobj->chan, tobj->peer->name)) { + tobj->chan->data = "(Empty)"; + } tobj->peer->appl = !tobj->return_to_pbx ? "Transferred Call" : "ManagerBridge"; - tobj->peer->data = tobj->chan->name; + if (set_chan_app_data(tobj->peer, tobj->chan->name)) { + tobj->peer->data = "(Empty)"; + } ast_bridge_call(tobj->peer, tobj->chan, &tobj->bconfig);