diff options
author | Alexandr Anikin <may@telecom-service.ru> | 2009-11-04 22:10:44 +0000 |
---|---|---|
committer | Alexandr Anikin <may@telecom-service.ru> | 2009-11-04 22:10:44 +0000 |
commit | 953031095415efa4558ca7eff29d7c85ff8efe89 (patch) | |
tree | c8a21eb3b2896c7f5b558913cb7ea914b40a06ce /addons/ooh323c/src/ooports.c | |
parent | 317435a93200520218c4e9f4bbb8c0258f363876 (diff) |
Reworked chan_ooh323 channel module.
Many architectural and functional changes.
Main changes are threading model chanes (many thread in ooh323 stack
instead of one), modifications and improvements in signalling part,
additional codecs support (726, speex), t38 mode support.
This module tested and used in production environment.
(closes issue #15285)
Reported by: may213
Tested by: sles, c0w, OrNix
Review: https://reviewboard.asterisk.org/r/324/
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@227898 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'addons/ooh323c/src/ooports.c')
-rw-r--r-- | addons/ooh323c/src/ooports.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/addons/ooh323c/src/ooports.c b/addons/ooh323c/src/ooports.c index 3059404db..2b9cc09ff 100644 --- a/addons/ooh323c/src/ooports.c +++ b/addons/ooh323c/src/ooports.c @@ -14,6 +14,8 @@ * *****************************************************************************/ +#include <asterisk.h> +#include <asterisk/lock.h> #include "ooports.h" #include "ooh323ep.h" @@ -21,6 +23,7 @@ /** Global endpoint structure */ extern OOH323EndPoint gH323ep; +extern ast_mutex_t bindPortLock; /* Get the next port of type TCP/UDP/RTP */ int ooGetNextPort (OOH323PortType type) @@ -63,6 +66,8 @@ int ooBindPort (OOH323PortType type, OOSOCKET socket, char *ip) int initialPort, bindPort, ret; OOIPADDR ipAddrs; + ast_mutex_lock(&bindPortLock); + initialPort = ooGetNextPort (type); bindPort = initialPort; @@ -72,12 +77,13 @@ int ooBindPort (OOH323PortType type, OOSOCKET socket, char *ip) { if((ret=ooSocketBind(socket, ipAddrs, bindPort))==0) { + ast_mutex_unlock(&bindPortLock); return bindPort; } else { bindPort = ooGetNextPort (type); - if (bindPort == initialPort) return OO_FAILED; + if (bindPort == initialPort) { ast_mutex_unlock(&bindPortLock); return OO_FAILED; } } } } |