diff options
Diffstat (limited to 'addons/ooh323c/src/ooLogChan.c')
-rw-r--r-- | addons/ooh323c/src/ooLogChan.c | 26 |
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; |