--- ../../new-aster/asterisk/channels/chan_vpb.c 2004-04-28 11:26:09.000000000 +0300 +++ channels/chan_vpb.c 2004-05-11 18:59:57.000000000 +0300 @@ -1177,6 +1177,7 @@ /* Stop record */ p->stopreads = 1; + sleep(3); if( p->readthread ) pthread_join(p->readthread, NULL); @@ -1455,7 +1456,8 @@ // Using trylock here to prevent deadlock when channel is hungup // (ast_hangup() immediately gets lock) - if (p->owner && (ast_mutex_trylock(&p->owner->lock)==0) ) { + if (p->owner && !p->stopreads ) { + ast_mutex_lock(&p->owner->lock); ast_queue_frame(p->owner, fr); ast_mutex_unlock(&p->owner->lock); if (option_verbose > 4) {