[svn-commits] tilghman: branch 1.6.0 r604 - in /branches/1.6.0: ./ channels/ channels/ooh32...
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Wed May 28 09:49:04 CDT 2008
Author: tilghman
Date: Wed May 28 09:48:57 2008
New Revision: 604
URL: http://svn.digium.com/view/asterisk-addons?view=rev&rev=604
Log:
Merged revisions 603 via svnmerge from
https://origsvn.digium.com/svn/asterisk-addons/trunk
........
r603 | tilghman | 2008-05-28 09:45:23 -0500 (Wed, 28 May 2008) | 6 lines
Bring trunk up to date.
(related to issue #12715)
Reported by: softins
Patches:
ooh323-1.6.0-trunk-diff.txt uploaded by softins (license 197)
........
Modified:
branches/1.6.0/ (props changed)
branches/1.6.0/channels/chan_ooh323.c
branches/1.6.0/channels/chan_ooh323.h
branches/1.6.0/channels/ooh323c/src/ooCapability.c
branches/1.6.0/channels/ooh323c/src/ooGkClient.c
branches/1.6.0/channels/ooh323c/src/ooLogChan.c
branches/1.6.0/channels/ooh323c/src/ooSocket.c
branches/1.6.0/channels/ooh323c/src/ooh323.c
branches/1.6.0/channels/ooh323c/src/ooq931.c
branches/1.6.0/channels/ooh323c/src/ootrace.c
branches/1.6.0/channels/ooh323c/src/ootypes.h
branches/1.6.0/channels/ooh323cDriver.c
Propchange: branches/1.6.0/
------------------------------------------------------------------------------
--- trunk-merged (original)
+++ trunk-merged Wed May 28 09:48:57 2008
@@ -1,1 +1,1 @@
-/trunk:540-559,575,579,583,586,588,590,592,594
+/trunk:540-559,575,579,583,586,588,590,592,594,603
Modified: branches/1.6.0/channels/chan_ooh323.c
URL: http://svn.digium.com/view/asterisk-addons/branches/1.6.0/channels/chan_ooh323.c?view=diff&rev=604&r1=603&r2=604
==============================================================================
--- branches/1.6.0/channels/chan_ooh323.c (original)
+++ branches/1.6.0/channels/chan_ooh323.c Wed May 28 09:48:57 2008
@@ -84,10 +84,10 @@
};
static struct ast_rtp_protocol ooh323_rtp = {
- type: type,
- get_rtp_info: ooh323_get_rtp_peer,
- get_vrtp_info: ooh323_get_vrtp_peer,
- set_rtp_peer: ooh323_set_rtp_peer
+ .type = type,
+ .get_rtp_info = ooh323_get_rtp_peer,
+ .get_vrtp_info = ooh323_get_vrtp_peer,
+ .set_rtp_peer = ooh323_set_rtp_peer
};
/* H.323 channel private structure */
@@ -145,6 +145,8 @@
struct ast_codec_pref prefs;
int dtmfmode;
int rtptimeout;
+ int mUseIP; /* Use IP address or H323-ID to search user */
+ char mIP[20];
struct ooh323_user *next;
};
@@ -159,6 +161,7 @@
char accountcode[20];
int amaflags;
int dtmfmode;
+ int mFriend; /* indicates defined as friend */
char ip[20];
int port;
char *h323id; /* H323-ID alias, which asterisk will register with gk to reach this peer*/
@@ -221,6 +224,11 @@
static int gOutgoingLimit = 4;
OOBOOL gH323Debug = FALSE;
+static struct ooh323_config
+{
+ int mTCPPortStart;
+ int mTCPPortEnd;
+}ooconfig;
/** Asterisk RTP stuff*/
static struct sched_context *sched;
@@ -460,6 +468,9 @@
char tmp[256];
char formats[512];
int oldformat;
+ char *sport = NULL;
+ int port = 0;
+
if(gH323Debug)
ast_verbose("--- ooh323_request - data %s format %s\n", (char*)data,
ast_getformatname_multiple(formats,512,format) );
@@ -504,9 +515,16 @@
dest = tmp;
ext = NULL;
}
-
- if(dest)
- peer = find_peer(dest);
+
+ /*if((sport = strchr(dest, ':'))) {
+ *sport = '\0';
+ sport++;
+ port = atoi(sport);
+ }*/
+
+ if(dest) {
+ peer = find_peer(dest, port);
+ }
else{
ast_log(LOG_ERROR, "Destination format is not supported\n");
return NULL;
@@ -542,8 +560,12 @@
p->host = strdup(dest);
- if(ext)
+ if(port > 0) {
+ p->port = port;
+ }
+ if(ext) {
strncpy(p->exten, ext, sizeof(p->exten)-1);
+ }
}
@@ -594,53 +616,104 @@
return p;
}
-struct ooh323_user *find_user(const char * name)
+struct ooh323_user *find_user(const char * name, const char* ip)
{
struct ooh323_user *user=NULL;
if(gH323Debug)
ast_verbose("--- find_user\n");
-
user = userl.users;
ast_mutex_lock(&userl.lock);
while(user)
{
- if(name && !strcmp(user->name, name))
+ if(ip && user->mUseIP && !strcmp(user->mIP, ip)) {
break;
+ }
+ if(name && !strcmp(user->name, name)) {
+ break;
+ }
user = user->next;
}
ast_mutex_unlock(&userl.lock);
+
if(gH323Debug)
ast_verbose("+++ find_user\n");
return user;
}
-struct ooh323_peer *find_peer(const char * name)
-{
- struct ooh323_peer *peer=NULL;
-
- if(gH323Debug)
- ast_verbose("--- find_peer\n");
+struct ooh323_peer *find_friend(const char *name, int port)
+{
+ struct ooh323_peer *peer=NULL;
+
+ if(gH323Debug)
+ ast_verbose("--- find_friend \"%s\"\n", name);
peer = peerl.peers;
ast_mutex_lock(&peerl.lock);
while(peer)
{
+ if(gH323Debug) {
+ ast_verbose(" comparing with \"%s\"\n", peer->ip);
+ }
+ if(!strcmp(peer->ip, name)) {
+ if(port > 0 && peer->port == port) { break; }
+ else if (port <= 0) { break; }
+ }
+ peer = peer->next;
+ }
+ ast_mutex_unlock(&peerl.lock);
+
+ if(gH323Debug) {
+ if(peer) {
+ ast_verbose(" found matching friend\n");
+ }
+ ast_verbose("+++ find_friend \"%s\"\n", name);
+ }
+
+ return peer;
+}
+
+
+struct ooh323_peer *find_peer(const char * name, int port)
+{
+ struct ooh323_peer *peer=NULL;
+
+ if(gH323Debug)
+ ast_verbose("--- find_peer \"%s\"\n", name);
+
+
+ peer = peerl.peers;
+ ast_mutex_lock(&peerl.lock);
+ while(peer)
+ {
+ if(gH323Debug) {
+ ast_verbose(" comparing with \"%s\"\n", peer->ip);
+ }
if(!strcasecmp(peer->name, name))
break;
if(peer->h323id && !strcasecmp(peer->h323id, name))
break;
if(peer->e164 && !strcasecmp(peer->e164, name))
break;
+ /*
+ if(!strcmp(peer->ip, name)) {
+ if(port > 0 && peer->port == port) { break; }
+ else if (port <= 0) { break; }
+ }
+ */
peer = peer->next;
}
ast_mutex_unlock(&peerl.lock);
- if(gH323Debug)
- ast_verbose("+++ find_peer\n");
+ if(gH323Debug) {
+ if(peer) {
+ ast_verbose(" found matching peer\n");
+ }
+ ast_verbose("+++ find_peer \"%s\"\n", name);
+ }
return peer;
}
@@ -890,7 +963,7 @@
fr = ooh323_rtp_read(ast, p);
else
fr = &null_frame;
- // time(&p->lastrtprx);
+ /* time(&p->lastrtprx); */
ast_mutex_unlock(&p->lock);
return fr;
}
@@ -996,7 +1069,7 @@
struct ooh323_pvt *p = newchan->tech_pvt;
if(gH323Debug)
- ast_verbose("start: ooh323c ooh323_fixup\n");
+ ast_verbose("--- ooh323c ooh323_fixup\n");
ast_mutex_lock(&p->lock);
if (p->owner != oldchan) {
@@ -1015,7 +1088,7 @@
ast_mutex_unlock(&p->lock);
if(gH323Debug)
- ast_verbose("end: ooh323c ooh323_fixup \n");
+ ast_verbose("+++ ooh323c ooh323_fixup \n");
return 0;
}
@@ -1268,7 +1341,7 @@
if(p->callerid_name)
{
p->username = strdup(p->callerid_name);
- user = find_user(p->username);
+ user = find_user(p->username, call->remoteIP);
if(user)
{
ast_mutex_lock(&user->lock);
@@ -1605,11 +1678,19 @@
v->value, 0);
}
else if (!strcasecmp(v->name, "allow")) {
+ const char* tcodecs = v->value;
+ if(!strcasecmp(v->value, "all")) {
+ tcodecs = "ulaw,alaw,g729,g723,gsm";
+ }
ast_parse_allow_disallow(&user->prefs, &user->capability,
- v->value, 1);
+ tcodecs, 1);
}
else if (!strcasecmp(v->name, "amaflags")) {
user->amaflags = ast_cdr_amaflags2int(v->value);
+ }
+ else if (!strcasecmp(v->name, "ip")) {
+ strncpy(user->mIP, v->value, sizeof(user->mIP)-1);
+ user->mUseIP = 1;
}
else if (!strcasecmp(v->name, "dtmfmode")) {
if(!strcasecmp(v->value, "rfc2833"))
@@ -1631,7 +1712,7 @@
return user;
}
-static struct ooh323_peer *build_peer(const char *name, struct ast_variable *v)
+static struct ooh323_peer *build_peer(const char *name, struct ast_variable *v, int friend_type)
{
struct ooh323_peer *peer=NULL;
@@ -1649,6 +1730,9 @@
strncpy(peer->accountcode, gAccountcode, sizeof(peer->accountcode)-1);
peer->amaflags = gAMAFLAGS;
peer->dtmfmode = gDTMFMode;
+ if(0 == friend_type) {
+ peer->mFriend = 1;
+ }
while(v) {
if (!strcasecmp(v->name, "h323id")) {
@@ -1719,8 +1803,12 @@
v->value, 0);
}
else if (!strcasecmp(v->name, "allow")) {
+ const char* tcodecs = v->value;
+ if(!strcasecmp(v->value, "all")) {
+ tcodecs = "ulaw,alaw,g729,g723,gsm";
+ }
ast_parse_allow_disallow(&peer->prefs, &peer->capability,
- v->value, 1);
+ tcodecs, 1);
}
else if (!strcasecmp(v->name, "amaflags")) {
peer->amaflags = ast_cdr_amaflags2int(v->value);
@@ -1839,6 +1927,8 @@
strcpy(gContext, DEFAULT_CONTEXT);
gAliasList = NULL;
gMediaWaitForConnect = 0;
+ ooconfig.mTCPPortStart = 12030;
+ ooconfig.mTCPPortEnd = 12230;
v = ast_variable_browse(cfg, "general");
while(v) {
@@ -1849,6 +1939,27 @@
else if (!strcasecmp(v->name, "bindaddr")) {
strncpy(gIP, v->value, sizeof(gIP)-1);
}
+ else if (!strcasecmp(v->name, "h225portrange")) {
+ char* endlimit = 0;
+ char temp[512];
+ strncpy(temp, v->value, sizeof(temp) - 1);
+ /* char *temp = ast_strdupa(v->value); */
+ endlimit = strchr(temp, ',');
+ if (endlimit) {
+ *endlimit = '\0';
+ endlimit++;
+ ooconfig.mTCPPortStart = atoi(temp);
+ ooconfig.mTCPPortEnd = atoi(endlimit);
+
+ if(ooH323EpSetTCPPortRange(ooconfig.mTCPPortStart,
+ ooconfig.mTCPPortEnd) == OO_FAILED) {
+ ast_log(LOG_ERROR, "h225portrange: Failed to set range\n");
+ }
+ }
+ else {
+ ast_log(LOG_ERROR, "h225portrange: Invalid format, separate port range with \",\"\n");
+ }
+ }
else if (!strcasecmp(v->name, "gateway")) {
gIsGateway = ast_true(v->value);
}
@@ -1971,7 +2082,11 @@
ast_parse_allow_disallow(&gPrefs, &gCapability, v->value, 0);
}
else if (!strcasecmp(v->name, "allow")) {
- ast_parse_allow_disallow(&gPrefs, &gCapability, v->value, 1);
+ const char* tcodecs = v->value;
+ if(!strcasecmp(v->value, "all")) {
+ tcodecs = "ulaw,alaw,g729,g723,gsm";
+ }
+ ast_parse_allow_disallow(&gPrefs, &gCapability, tcodecs, 1);
}
else if (!strcasecmp(v->name, "dtmfmode")) {
if (!strcasecmp(v->value, "inband"))
@@ -1998,10 +2113,12 @@
{
if(strcasecmp(cat, "general"))
{
+ int friend_type = 0;
utype = ast_variable_retrieve(cfg, cat, "type");
if(utype)
{
- if(!strcmp(utype, "user") || !strcasecmp(utype, "friend"))
+ friend_type = strcasecmp(utype, "friend");
+ if(!strcmp(utype, "user") || 0 == friend_type)
{
user = build_user(cat, ast_variable_browse(cfg, cat));
if (user)
@@ -2015,15 +2132,15 @@
ast_log(LOG_WARNING, "Failed to build user %s\n", cat);
}
}
- if(!strcasecmp(utype, "peer") || !strcasecmp(utype, "friend"))
+ if(!strcasecmp(utype, "peer") || 0 == friend_type)
{
- peer = build_peer(cat, ast_variable_browse(cfg, cat));
+ peer = build_peer(cat, ast_variable_browse(cfg, cat), friend_type);
if(peer)
{
- ast_mutex_lock(&userl.lock);
+ ast_mutex_lock(&peerl.lock);
peer->next = peerl.peers;
peerl.peers = peer;
- ast_mutex_unlock(&userl.lock);
+ ast_mutex_unlock(&peerl.lock);
}
else {
ast_log(LOG_WARNING, "Failed to build peer %s\n", cat);
@@ -2341,7 +2458,6 @@
ast_cli(a->fd, "%-20s%s\n", "Tunneling", gTunneling?"yes":"no");
ast_cli(a->fd, "%-20s%s\n", "CallerId", gCallerID);
ast_cli(a->fd, "%-20s%s\n", "MediaWaitForConnect", gMediaWaitForConnect ? "yes" : "no");
- ast_cli(a->fd, "%-15s%s\n", "MediaWaitForConnect", gMediaWaitForConnect ? "yes" : "no");
#if (0)
{
@@ -2696,24 +2812,36 @@
else
iflist = cur->next;
- if(cur->callToken)
+ if(cur->callToken) {
free(cur->callToken);
-
- if(cur->username)
+ cur->callToken = 0;
+ }
+
+ if(cur->username) {
free(cur->username);
-
- if(cur->host)
+ cur->username = 0;
+ }
+
+ if(cur->host) {
free(cur->host);
-
- if(cur->callerid_name)
+ cur->host = 0;
+ }
+
+ if(cur->callerid_name) {
free(cur->callerid_name);
+ cur->callerid_name = 0;
+ }
- if(cur->callerid_num)
+ if(cur->callerid_num) {
free(cur->callerid_num);
-
-
- if (cur->rtp)
+ cur->callerid_num = 0;
+ }
+
+
+ if (cur->rtp) {
ast_rtp_destroy(cur->rtp);
+ cur->rtp = 0;
+ }
/* Unlink us from the owner if we have one */
if (cur->owner) {
@@ -2978,6 +3106,8 @@
return OO_G729A;
case AST_FORMAT_G723_1:
return OO_G7231;
+ case AST_FORMAT_H263:
+ return OO_H263VIDEO;
default:
ast_log(LOG_NOTICE, "Don't know how to deal with mode %s\n",
ast_getformatname_multiple(formats,512,cap));
@@ -3075,7 +3205,7 @@
}
them.sin_family = AF_INET;
- them.sin_addr.s_addr = inet_addr(remoteIp); // only works for IPv4
+ them.sin_addr.s_addr = inet_addr(remoteIp); /* only works for IPv4 */
them.sin_port = htons(remotePort);
ast_rtp_set_peer(p->rtp, &them);
Modified: branches/1.6.0/channels/chan_ooh323.h
URL: http://svn.digium.com/view/asterisk-addons/branches/1.6.0/channels/chan_ooh323.h?view=diff&rev=604&r1=603&r2=604
==============================================================================
--- branches/1.6.0/channels/chan_ooh323.h (original)
+++ branches/1.6.0/channels/chan_ooh323.h Wed May 28 09:48:57 2008
@@ -77,8 +77,8 @@
struct ooh323_user;
struct ooh323_peer;
/* Helper functions */
-struct ooh323_user *find_user(const char * name);
-struct ooh323_peer *find_peer(const char * name);
+struct ooh323_user *find_user(const char * name, const char *ip);
+struct ooh323_peer *find_peer(const char * name, int port);
void ooh323_delete_peer(struct ooh323_peer *peer);
int delete_users(void);
Modified: branches/1.6.0/channels/ooh323c/src/ooCapability.c
URL: http://svn.digium.com/view/asterisk-addons/branches/1.6.0/channels/ooh323c/src/ooCapability.c?view=diff&rev=604&r1=603&r2=604
==============================================================================
--- branches/1.6.0/channels/ooh323c/src/ooCapability.c (original)
+++ branches/1.6.0/channels/ooh323c/src/ooCapability.c Wed May 28 09:48:57 2008
@@ -898,6 +898,9 @@
H245AudioCapability* audioCap, int dir)
{
int noofframes=0, cap;
+
+ OOTRACEDBGC2("Comparing channel with codec type: %d\n", audioCap->t);
+
switch(audioCap->t)
{
case T_H245AudioCapability_g711Ulaw56k:
@@ -929,7 +932,7 @@
noofframes = audioCap->u.g729;
break;
case T_H245AudioCapability_g729AnnexA:
- cap = OO_G729;
+ cap = OO_G729A;
noofframes = audioCap->u.g729AnnexA;
break;
case T_H245AudioCapability_g7231:
@@ -940,11 +943,15 @@
return FALSE;
}
+ OOTRACEDBGC3("Comparing codecs: current=%d, requested=%d\n",
+ epCap->cap, cap);
if(cap != epCap->cap) { return FALSE; }
/* Can we receive this capability */
if(dir & OORX)
{
+ OOTRACEDBGC3("Comparing RX frame rate: channel's=%d, requested=%d\n",
+ ((OOCapParams*)epCap->params)->rxframes, noofframes);
if(((OOCapParams*)epCap->params)->rxframes >= noofframes) {
return TRUE;
}
@@ -958,6 +965,8 @@
/* Can we transmit compatible stream */
if(dir & OOTX)
{
+ OOTRACEDBGC3("Comparing TX frame rate: channel's=%d, requested=%d\n",
+ ((OOCapParams*)epCap->params)->txframes, noofframes);
if(((OOCapParams*)epCap->params)->txframes <= noofframes) {
return TRUE;
}
@@ -1684,7 +1693,7 @@
if(!cur) return NULL;
- OOTRACEDBGC4("Found matching simple audio capability type %s. Comparing"
+ OOTRACEDBGC4("Found matching H.263 video capability type %s. Comparing"
" other parameters. (%s, %s)\n", ooGetCapTypeText(cap),
call->callType, call->callToken);
if(dir & OORX)
Modified: branches/1.6.0/channels/ooh323c/src/ooGkClient.c
URL: http://svn.digium.com/view/asterisk-addons/branches/1.6.0/channels/ooh323c/src/ooGkClient.c?view=diff&rev=604&r1=603&r2=604
==============================================================================
--- branches/1.6.0/channels/ooh323c/src/ooGkClient.c (original)
+++ branches/1.6.0/channels/ooh323c/src/ooGkClient.c Wed May 28 09:48:57 2008
@@ -981,6 +981,37 @@
pRegReq->discoveryComplete= pGkClient->discoveryComplete;
pRegReq->m.keepAlivePresent=TRUE;
pRegReq->keepAlive= keepAlive;
+
+ /*
+ * Cisco Gatekeeper re-registration fix. Thanks to Mike Tubby (mike at tubby.org) 28feb2007
+ * Without this patch initial registration works, but re-registration fails!
+ *
+ * For light-weight re-registration, keepalive is set true
+ * GK needs rasAddress, keepAlive, endpointIdentifier, gatekeeperIdentifier,
+ * tokens, and timeToLive
+ * GK will ignore all other params if KeepAlive is set.
+ *
+ */
+ if(keepAlive) {
+ /* KeepAlive, re-registration message...
+ allocate storage for endpoint-identifier, and populate it from what the
+ GK told us from the previous RCF. Only allocate on the first pass thru here */
+ pRegReq->endpointIdentifier.data =
+ (ASN116BITCHAR*)memAlloc(pctxt, pGkClient->gkId.nchars*sizeof(ASN116BITCHAR));
+ if (pRegReq->endpointIdentifier.data) {
+ pRegReq->endpointIdentifier.nchars = pGkClient->endpointId.nchars;
+ pRegReq->m.endpointIdentifierPresent = TRUE;
+ memcpy(pRegReq->endpointIdentifier.data, pGkClient->endpointId.data, pGkClient->endpointId.nchars*sizeof(ASN116BITCHAR));
+ OOTRACEINFO1("Sending RRQ for re-registration (with EndpointID)\n");
+ }
+ else {
+ OOTRACEERR1("Error: Failed to allocate memory for EndpointIdentifier in RRQ \n");
+ memReset(pctxt);
+ pGkClient->state = GkClientFailed;
+ return OO_FAILED;
+ }
+ }
+
pRegReq->m.timeToLivePresent = TRUE;
pRegReq->timeToLive = pGkClient->regTimeout;
Modified: branches/1.6.0/channels/ooh323c/src/ooLogChan.c
URL: http://svn.digium.com/view/asterisk-addons/branches/1.6.0/channels/ooh323c/src/ooLogChan.c?view=diff&rev=604&r1=603&r2=604
==============================================================================
--- branches/1.6.0/channels/ooh323c/src/ooLogChan.c (original)
+++ branches/1.6.0/channels/ooh323c/src/ooLogChan.c Wed May 28 09:48:57 2008
@@ -191,6 +191,8 @@
{
if(!strcmp(pChannel->dir, dir))
{
+ OOTRACEDBGC3("ooFindLogicalChannel, comparing channel: %d:%s\n",
+ pChannel->channelNo, pChannel->dir);
if(!strcmp(dir, "receive"))
{
if(ooCapabilityCheckCompatibility(call, pChannel->chanCap,
Modified: branches/1.6.0/channels/ooh323c/src/ooSocket.c
URL: http://svn.digium.com/view/asterisk-addons/branches/1.6.0/channels/ooh323c/src/ooSocket.c?view=diff&rev=604&r1=603&r2=604
==============================================================================
--- branches/1.6.0/channels/ooh323c/src/ooSocket.c (original)
+++ branches/1.6.0/channels/ooh323c/src/ooSocket.c Wed May 28 09:48:57 2008
@@ -338,7 +338,7 @@
if (pNewSocket == 0) return ASN_E_INVPARAM;
*pNewSocket = accept (socket, (struct sockaddr *) (void*) &m_addr,
- (socklen_t*)&addr_length);
+ &addr_length);
if (*pNewSocket <= 0) return ASN_E_INVSOCKET;
if (destAddr != 0)
Modified: branches/1.6.0/channels/ooh323c/src/ooh323.c
URL: http://svn.digium.com/view/asterisk-addons/branches/1.6.0/channels/ooh323c/src/ooh323.c?view=diff&rev=604&r1=603&r2=604
==============================================================================
--- branches/1.6.0/channels/ooh323c/src/ooh323.c (original)
+++ branches/1.6.0/channels/ooh323c/src/ooh323.c Wed May 28 09:48:57 2008
@@ -528,7 +528,14 @@
}
/* Retrieve the H.245 control channel address from the connect msg */
- if(callProceeding->m.h245AddressPresent)
+ if(q931Msg->userInfo->h323_uu_pdu.m.h245TunnelingPresent &&
+ q931Msg->userInfo->h323_uu_pdu.h245Tunneling &&
+ callProceeding->m.h245AddressPresent) {
+ OOTRACEINFO3("Tunneling and h245address provided."
+ "Using Tunneling for H.245 messages (%s, %s)\n",
+ call->callType, call->callToken);
+ }
+ else if(callProceeding->m.h245AddressPresent)
{
if (OO_TESTFLAG (call->flags, OO_M_TUNNELING))
{
@@ -718,7 +725,14 @@
}
/* Retrieve the H.245 control channel address from the connect msg */
- if(alerting->m.h245AddressPresent)
+ if(q931Msg->userInfo->h323_uu_pdu.m.h245TunnelingPresent &&
+ q931Msg->userInfo->h323_uu_pdu.h245Tunneling &&
+ alerting->m.h245AddressPresent) {
+ OOTRACEINFO3("Tunneling and h245address provided."
+ "Giving preference to Tunneling (%s, %s)\n",
+ call->callType, call->callToken);
+ }
+ else if(alerting->m.h245AddressPresent)
{
if (OO_TESTFLAG (call->flags, OO_M_TUNNELING))
{
@@ -933,7 +947,14 @@
}
/* Retrieve the H.245 control channel address from the CONNECT msg */
- if(connect->m.h245AddressPresent)
+ if(q931Msg->userInfo->h323_uu_pdu.m.h245TunnelingPresent &&
+ q931Msg->userInfo->h323_uu_pdu.h245Tunneling &&
+ connect->m.h245AddressPresent) {
+ OOTRACEINFO3("Tunneling and h245address provided."
+ "Giving preference to Tunneling (%s, %s)\n",
+ call->callType, call->callToken);
+ }
+ else if(connect->m.h245AddressPresent)
{
if (OO_TESTFLAG (call->flags, OO_M_TUNNELING))
{
Modified: branches/1.6.0/channels/ooh323c/src/ooq931.c
URL: http://svn.digium.com/view/asterisk-addons/branches/1.6.0/channels/ooh323c/src/ooq931.c?view=diff&rev=604&r1=603&r2=604
==============================================================================
--- branches/1.6.0/channels/ooh323c/src/ooq931.c (original)
+++ branches/1.6.0/channels/ooh323c/src/ooq931.c Wed May 28 09:48:57 2008
@@ -2037,10 +2037,10 @@
/* Set calling party number Q931 IE */
if(call->callingPartyNumber)
ooQ931SetCallingPartyNumberIE(q931msg,
- (const char*)call->callingPartyNumber, 1, 0, 1, 1);
-
-
- /* Set called party number Q931 ie */
+ (const char*)call->callingPartyNumber, 1, 0, 0, 0);
+
+
+ /* Set called party number Q931 IE */
if(call->calledPartyNumber)
ooQ931SetCalledPartyNumberIE(q931msg,
(const char*)call->calledPartyNumber, 1, 0);
@@ -3358,6 +3358,7 @@
"OOConnect",
"OOReleaseComplete",
"OOFacility",
+ "OOInformation",
"OOMasterSlaveDetermination",
"OOMasterSlaveAck",
"OOMasterSlaveReject",
Modified: branches/1.6.0/channels/ooh323c/src/ootrace.c
URL: http://svn.digium.com/view/asterisk-addons/branches/1.6.0/channels/ooh323c/src/ootrace.c?view=diff&rev=604&r1=603&r2=604
==============================================================================
--- branches/1.6.0/channels/ooh323c/src/ootrace.c (original)
+++ branches/1.6.0/channels/ooh323c/src/ootrace.c Wed May 28 09:48:57 2008
@@ -37,7 +37,6 @@
gs_traceLevel = traceLevel;
}
-__attribute__((format (printf, 2, 3)))
void ooTrace(OOUINT32 traceLevel, const char * fmtspec, ...)
{
va_list arglist;
@@ -101,7 +100,7 @@
if(printDate)
{
printDate = 0;
- strftime(dateString, 10, "%F", ptime);
+ strftime(dateString, 10, "%D", ptime);
fprintf(gH323ep.fptraceFile, "---------Date %s---------\n",
dateString);
}
Modified: branches/1.6.0/channels/ooh323c/src/ootypes.h
URL: http://svn.digium.com/view/asterisk-addons/branches/1.6.0/channels/ooh323c/src/ootypes.h?view=diff&rev=604&r1=603&r2=604
==============================================================================
--- branches/1.6.0/channels/ooh323c/src/ootypes.h (original)
+++ branches/1.6.0/channels/ooh323c/src/ootypes.h Wed May 28 09:48:57 2008
@@ -61,7 +61,7 @@
-#define OOH323C_VERSION "v0.8.2"
+#define OOH323C_VERSION "v0.8.3"
#ifndef EXTERN
#ifdef MAKE_DLL
Modified: branches/1.6.0/channels/ooh323cDriver.c
URL: http://svn.digium.com/view/asterisk-addons/branches/1.6.0/channels/ooh323cDriver.c?view=diff&rev=604&r1=603&r2=604
==============================================================================
--- branches/1.6.0/channels/ooh323cDriver.c (original)
+++ branches/1.6.0/channels/ooh323cDriver.c Wed May 28 09:48:57 2008
@@ -121,6 +121,18 @@
}
+ if(format & AST_FORMAT_H263)
+ {
+ if(gH323Debug)
+ ast_verbose("\tAdding h263 capability to H323 endpoint\n");
+ ret = ooH323EpAddH263VideoCapability(OO_H263VIDEO, 1, 0, 0, 0, 0, 320*1024,
+ OORXANDTX, &ooh323c_start_receive_channel,
+ &ooh323c_start_transmit_channel,
+ &ooh323c_stop_receive_channel,
+ &ooh323c_stop_transmit_channel);
+
+ }
+
if(format & AST_FORMAT_GSM)
{
if(gH323Debug)
@@ -218,6 +230,19 @@
ast_verbose("\tAdding g7231 capability to call (%s, %s)\n",
call->callType, call->callToken);
ret = ooCallAddG7231Capability(call, OO_G7231, 4, 7, FALSE,
+ OORXANDTX, &ooh323c_start_receive_channel,
+ &ooh323c_start_transmit_channel,
+ &ooh323c_stop_receive_channel,
+ &ooh323c_stop_transmit_channel);
+
+ }
+
+ if(format & AST_FORMAT_H263)
+ {
+ if(gH323Debug)
+ ast_verbose("\tAdding h263 capability to call (%s, %s)\n",
+ call->callType, call->callToken);
+ ret = ooCallAddH263VideoCapability(call, OO_H263VIDEO, 1, 0, 0, 0, 0, 320*1024,
OORXANDTX, &ooh323c_start_receive_channel,
&ooh323c_start_transmit_channel,
&ooh323c_stop_receive_channel,
@@ -323,6 +348,8 @@
return AST_FORMAT_G729A;
case OO_G7231:
return AST_FORMAT_G723_1;
+ case OO_H263VIDEO:
+ return AST_FORMAT_H263;
default:
ast_debug(1, "Cap %d is not supported by driver yet\n", cap);
return -1;
More information about the svn-commits
mailing list