--- res/res_features.c_original 2008-01-28 19:26:31.000000000 +0100 +++ res/res_features.c 2008-04-04 14:09:34.000000000 +0200 @@ -477,6 +477,17 @@ int ast_masq_park_call(struct ast_channe if (f) ast_frfree(f); + { + /* BUGFIX: cleanup data store of duplicated channel */ + struct ast_datastore *datastore; + while ((datastore = AST_LIST_REMOVE_HEAD(&chan->datastores, entry))) { + /* remove entry from datastore but don't free it */ + if (option_debug) + ast_log(LOG_DEBUG, "BUGFIX: remove entry from datastore: %p\n", datastore); + } + AST_LIST_HEAD_INIT_NOLOCK(&chan->datastores); + } + orig_chan_name = ast_strdupa(chan->name); park_call_full(chan, peer, timeout, extout, orig_chan_name);