summaryrefslogtreecommitdiff
path: root/addons/ooh323c/src
diff options
context:
space:
mode:
authorAlexandr Anikin <may@telecom-service.ru>2011-06-01 10:45:12 +0000
committerAlexandr Anikin <may@telecom-service.ru>2011-06-01 10:45:12 +0000
commitea01c3b4fa62d2f3f06059a0119d65ceabafb947 (patch)
tree0ced3cf095e508f46972ee3161d229514336d4fb /addons/ooh323c/src
parent17b852183684947d82e4980d3b710dc7177e7b42 (diff)
Merged revisions 321528 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8 ........ r321528 | may | 2011-06-01 14:40:19 +0400 (Wed, 01 Jun 2011) | 14 lines 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/trunk@321529 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'addons/ooh323c/src')
-rw-r--r--addons/ooh323c/src/oochannels.c24
-rw-r--r--addons/ooh323c/src/ooh245.c2
2 files changed, 16 insertions, 10 deletions
diff --git a/addons/ooh323c/src/oochannels.c b/addons/ooh323c/src/oochannels.c
index 891a12d17..e3ac30fbb 100644
--- a/addons/ooh323c/src/oochannels.c
+++ b/addons/ooh323c/src/oochannels.c
@@ -682,10 +682,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)
@@ -702,20 +703,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;
+ }
}
}
}
@@ -1330,7 +1334,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)
diff --git a/addons/ooh323c/src/ooh245.c b/addons/ooh323c/src/ooh245.c
index 940b8d838..efb0c21f2 100644
--- a/addons/ooh323c/src/ooh245.c
+++ b/addons/ooh323c/src/ooh245.c
@@ -2126,6 +2126,8 @@ int ooHandleH245Command(OOH323CallData *call,
ooClearAllLogicalChannels(call);
}
ooSendEndSessionCommand(call);
+ if (call->callState < OO_CALL_CLEAR)
+ call->callState = OO_CALL_CLEAR;
}