aboutsummaryrefslogtreecommitdiffstats
path: root/addons/ooh323c/src/ooLogChan.c
diff options
context:
space:
mode:
Diffstat (limited to 'addons/ooh323c/src/ooLogChan.c')
-rw-r--r--addons/ooh323c/src/ooLogChan.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/addons/ooh323c/src/ooLogChan.c b/addons/ooh323c/src/ooLogChan.c
index 86c8844c7..dfd16c305 100644
--- a/addons/ooh323c/src/ooLogChan.c
+++ b/addons/ooh323c/src/ooLogChan.c
@@ -14,6 +14,9 @@
*
*****************************************************************************/
+#include <asterisk.h>
+#include <asterisk/lock.h>
+
#include "ooCalls.h"
#include "ooh323ep.h"
@@ -187,7 +190,7 @@ OOLogicalChannel * ooFindLogicalChannel(OOH323CallData *call, int sessionID,
{
OOTRACEDBGC3("ooFindLogicalChannel, checking channel: %d:%s\n",
pChannel->sessionID, pChannel->dir);
- if(pChannel->sessionID == sessionID)
+ if(pChannel->sessionID == sessionID || pChannel->sessionID == 0)
{
if(!strcmp(pChannel->dir, dir))
{
@@ -230,6 +233,27 @@ OOLogicalChannel* ooGetLogicalChannel
return NULL;
}
+/* function is to get channel with particular direction */
+
+OOLogicalChannel* ooGetTransmitLogicalChannel
+ (OOH323CallData *call)
+{
+ OOLogicalChannel * pChannel = NULL;
+ pChannel = call->logicalChans;
+ while(pChannel)
+ {
+ OOTRACEINFO6("Listing logical channel %d cap %d state %d for (%s, %s)\n",
+ pChannel->channelNo, pChannel->chanCap->cap, pChannel->state,
+ call->callType, call->callToken);
+ if(!strcmp(pChannel->dir, "transmit") && pChannel->state != OO_LOGICALCHAN_IDLE &&
+ pChannel->state != OO_LOGICALCHAN_PROPOSEDFS)
+ return pChannel;
+ else
+ pChannel = pChannel->next;
+ }
+ return NULL;
+}
+
int ooClearAllLogicalChannels(OOH323CallData *call)
{
OOLogicalChannel * temp = NULL, *prev = NULL;