diff --git a/channel.c b/channel.c index 05cffdfc2fe58526c4691076f64071adc9e9e5a3..c132899b1ae43d3bcb1251b02d090bf641d183b6 100755 --- a/channel.c +++ b/channel.c @@ -1870,13 +1870,16 @@ static int ast_do_masquerade(struct ast_channel *original) channel's backend. I'm not sure we're going to keep this function, because while the features are nice, the cost is very high in terms of pure nastiness. XXX */ + /* We need the clone's lock, too */ + ast_pthread_mutex_lock(&clone->lock); + + ast_log(LOG_DEBUG, "Got clone lock on '%s'\n", clone->name); + /* Having remembered the original read/write formats, we turn off any translation on either one */ free_translation(clone); free_translation(original); - /* We need the clone's lock, too */ - ast_pthread_mutex_lock(&clone->lock); /* Unlink the masquerade */ original->masq = NULL; @@ -1980,10 +1983,12 @@ static int ast_do_masquerade(struct ast_channel *original) a zombie so nothing tries to touch it. If it's already been marked as a zombie, then free it now (since it already is considered invalid). */ if (clone->zombie) { + ast_log(LOG_DEBUG, "Destroying clone '%s'\n", clone->name); pthread_mutex_unlock(&clone->lock); ast_channel_free(clone); manager_event(EVENT_FLAG_CALL, "Hangup", "Channel: %s\r\n", zombn); } else { + ast_log(LOG_DEBUG, "Released clone lock on '%s'\n", clone->name); clone->zombie=1; pthread_mutex_unlock(&clone->lock); }