Fix double alerting, add forced alerting before answer

Fix double alerting (it wasn't fixed here by issue #18542)
Add forced alerting before connect (if it wasn't before)
Try to send all packets from outgoing queue rather than one only
Call goes into clearing state when disconnect command is received

(closes issue #19361)
Reported by: vmikhelson
Patches: 
      issue19361-3.patch uploaded by may213 (license 454)
Tested by: vmikhelson



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@321528 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Alexandr Anikin
2011-06-01 10:40:19 +00:00
parent 8668ec7ef9
commit c8c5461a76
3 changed files with 28 additions and 10 deletions

View File

@@ -671,10 +671,11 @@ int ooProcessCallFDSETsAndTimers
if (0 != call->pH245Channel && 0 != call->pH245Channel->sock)
{
if(call->pH245Channel->outQueue.count>0)
{
if(ooPDWrite(pfds, nfds, call->pH245Channel->sock))
ooSendMsg(call, OOH245MSG);
if(ooPDWrite(pfds, nfds, call->pH245Channel->sock)) {
while (call->pH245Channel->outQueue.count>0) {
if (ooSendMsg(call, OOH245MSG) != OO_OK)
break;
}
}
}
else if(call->h245listener)
@@ -691,20 +692,23 @@ int ooProcessCallFDSETsAndTimers
{
if(ooPDWrite(pfds, nfds, call->pH225Channel->sock))
{
if(call->pH225Channel->outQueue.count>0)
while (call->pH225Channel->outQueue.count>0)
{
OOTRACEDBGC3("Sending H225 message (%s, %s)\n",
call->callType, call->callToken);
ooSendMsg(call, OOQ931MSG);
if (ooSendMsg(call, OOQ931MSG) != OO_OK)
break;
}
if(call->pH245Channel &&
call->pH245Channel->outQueue.count>0 &&
OO_TESTFLAG (call->flags, OO_M_TUNNELING))
{
OO_TESTFLAG (call->flags, OO_M_TUNNELING)) {
while (call->pH245Channel->outQueue.count>0) {
OOTRACEDBGC3("H245 message needs to be tunneled. "
"(%s, %s)\n", call->callType,
call->callToken);
ooSendMsg(call, OOH245MSG);
if (ooSendMsg(call, OOH245MSG) != OO_OK)
break;
}
}
}
}
@@ -1319,7 +1323,7 @@ int ooSendMsg(OOH323CallData *call, int type)
{
OOTRACEDBGA3("Warning:Call marked for cleanup. Can not send message."
"(%s, %s)\n", call->callType, call->callToken);
return OO_OK;
return OO_FAILED;
}
if(type == OOQ931MSG)