--- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/oochannels.c 2009-06-23 03:09:25.000000000 +0400 +++ channels/ooh323c/src/oochannels.c 2009-06-25 22:06:13.000000000 +0400 @@ -949,13 +949,13 @@ if(ret == -1) { - OOTRACEERR2("Error in select %d ...exiting\n", errno); - call->callEndReason = OO_REASON_INVALIDMESSAGE; - call->callState = OO_CALL_CLEARED; - ooCleanCall(call); break; + OOTRACEERR2("Error in select %d ...exiting\n", errno); + call->callEndReason = OO_REASON_INVALIDMESSAGE; + call->callState = OO_CALL_CLEARED; + ooCleanCall(call); + ooStopMonitorCallChannels(call); + continue; - /* continue; - exit(-1); */ } toMin.tv_sec = 0; --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ooCmdChannel.c 2009-06-03 23:05:09.000000000 +0400 +++ channels/ooh323c/src/ooCmdChannel.c 2009-06-25 21:29:12.000000000 +0400 @@ -61,6 +61,9 @@ if ((ret = pipe(thePipe)) == -1) { + ast_mutex_destroy((ast_mutex_t *)call->CmdChanLock); + free(call->CmdChanLock); + call->CmdChanLock = NULL; return OO_FAILED; } ast_mutex_lock((ast_mutex_t *)call->CmdChanLock);