diff --git a/channels/chan_misdn.c b/channels/chan_misdn.c index c6dc759208..69aad49c1c 100644 --- a/channels/chan_misdn.c +++ b/channels/chan_misdn.c @@ -1952,9 +1952,9 @@ static int misdn_hangup(struct ast_channel *ast) struct chan_list *p; struct misdn_bchannel *bc=NULL; - if (!ast || ! (p=MISDN_ASTERISK_TECH_PVT(ast) ) ) return -1; - ast_log(LOG_DEBUG, "misdn_hangup(%s)\n", ast->name); + + if (!ast || ! (p=MISDN_ASTERISK_TECH_PVT(ast) ) ) return -1; if (!p) { chan_misdn_log(3, 0, "misdn_hangup called, without chan_list obj.\n"); @@ -1976,11 +1976,15 @@ static int misdn_hangup(struct ast_channel *ast) if (ast->_state == AST_STATE_RESERVED) { /* between request and call */ + ast_log(LOG_DEBUG, "State Reserved => chanIsAvail\n"); MISDN_ASTERISK_TECH_PVT(ast)=NULL; cl_dequeue_chan(&cl_te, p); - free(p); + close(p->pipe[0]); + close(p->pipe[1]); + + free(p); if (bc) misdn_lib_release(bc);