[asterisk-commits] dvossel: branch dvossel/hd_confbridge r314406 - in /team/dvossel/hd_confbridg...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Wed Apr 20 09:29:00 CDT 2011
Author: dvossel
Date: Wed Apr 20 09:28:47 2011
New Revision: 314406
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=314406
Log:
fixing automerge
Modified:
team/dvossel/hd_confbridge/ (props changed)
team/dvossel/hd_confbridge/CHANGES
team/dvossel/hd_confbridge/CREDITS
team/dvossel/hd_confbridge/addons/chan_ooh323.c
team/dvossel/hd_confbridge/addons/ooh323c/src/ooCalls.h
team/dvossel/hd_confbridge/addons/ooh323c/src/ooGkClient.c
team/dvossel/hd_confbridge/addons/ooh323c/src/ooGkClient.h
team/dvossel/hd_confbridge/addons/ooh323c/src/ooLogChan.c
team/dvossel/hd_confbridge/addons/ooh323c/src/ooLogChan.h
team/dvossel/hd_confbridge/addons/ooh323c/src/ooSocket.c
team/dvossel/hd_confbridge/addons/ooh323c/src/ooSocket.h
team/dvossel/hd_confbridge/addons/ooh323c/src/oochannels.c
team/dvossel/hd_confbridge/addons/ooh323c/src/ooh245.c
team/dvossel/hd_confbridge/addons/ooh323c/src/ooh323.c
team/dvossel/hd_confbridge/addons/ooh323c/src/ooh323ep.h
team/dvossel/hd_confbridge/addons/ooh323c/src/ooports.c
team/dvossel/hd_confbridge/addons/ooh323c/src/ooq931.c
team/dvossel/hd_confbridge/addons/ooh323c/src/ootypes.h
team/dvossel/hd_confbridge/apps/app_dial.c
team/dvossel/hd_confbridge/apps/app_dumpchan.c
team/dvossel/hd_confbridge/apps/app_meetme.c
team/dvossel/hd_confbridge/apps/app_voicemail.c
team/dvossel/hd_confbridge/channels/chan_dahdi.c
team/dvossel/hd_confbridge/channels/chan_iax2.c
team/dvossel/hd_confbridge/channels/chan_sip.c
team/dvossel/hd_confbridge/channels/chan_skinny.c
team/dvossel/hd_confbridge/channels/sig_analog.c
team/dvossel/hd_confbridge/channels/sig_pri.c
team/dvossel/hd_confbridge/channels/sig_pri.h
team/dvossel/hd_confbridge/channels/sig_ss7.c
team/dvossel/hd_confbridge/channels/sig_ss7.h
team/dvossel/hd_confbridge/channels/sip/include/sip.h
team/dvossel/hd_confbridge/configs/ccss.conf.sample
team/dvossel/hd_confbridge/configs/chan_dahdi.conf.sample
team/dvossel/hd_confbridge/configs/iax.conf.sample
team/dvossel/hd_confbridge/configs/manager.conf.sample
team/dvossel/hd_confbridge/configs/sip.conf.sample
team/dvossel/hd_confbridge/configs/users.conf.sample
team/dvossel/hd_confbridge/configure
team/dvossel/hd_confbridge/configure.ac
team/dvossel/hd_confbridge/funcs/func_channel.c
team/dvossel/hd_confbridge/include/asterisk/autoconfig.h.in
team/dvossel/hd_confbridge/include/asterisk/rtp_engine.h
team/dvossel/hd_confbridge/main/ccss.c
team/dvossel/hd_confbridge/main/channel.c
team/dvossel/hd_confbridge/main/cli.c
team/dvossel/hd_confbridge/main/features.c
team/dvossel/hd_confbridge/main/lock.c
team/dvossel/hd_confbridge/main/manager.c
team/dvossel/hd_confbridge/main/rtp_engine.c
team/dvossel/hd_confbridge/main/tcptls.c
team/dvossel/hd_confbridge/pbx/pbx_config.c
team/dvossel/hd_confbridge/res/res_agi.c
team/dvossel/hd_confbridge/res/res_rtp_asterisk.c
Propchange: team/dvossel/hd_confbridge/
------------------------------------------------------------------------------
--- branch-1.8-blocked (original)
+++ branch-1.8-blocked Wed Apr 20 09:28:47 2011
@@ -1,1 +1,1 @@
-/branches/1.8:299531
+/branches/1.8:299531,313436
Propchange: team/dvossel/hd_confbridge/
------------------------------------------------------------------------------
Binary property 'branch-1.8-merged' - no diff available.
Propchange: team/dvossel/hd_confbridge/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Wed Apr 20 09:28:47 2011
@@ -1,1 +1,1 @@
-/trunk:1-312565
+/trunk:1-314405
Modified: team/dvossel/hd_confbridge/CHANGES
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/hd_confbridge/CHANGES?view=diff&rev=314406&r1=314405&r2=314406
==============================================================================
--- team/dvossel/hd_confbridge/CHANGES (original)
+++ team/dvossel/hd_confbridge/CHANGES Wed Apr 20 09:28:47 2011
@@ -23,6 +23,9 @@
for chan_dahdi ISDN channels.
* Added new action MeetmeListRooms to list active conferences (shows same
data as "meetme list" at the CLI).
+ * DAHDIShowChannels, SIPshowpeer, SIPpeers, and IAXpeers now contains a
+ Description field that is set by 'description' in the channel configuration
+ file.
Asterisk HTTP Server
--------------------------
@@ -39,6 +42,11 @@
gtalk.conf.
* The 'logger reload' command now supports an optional argument, specifying an
alternate configuration file to use.
+ * 'dialplan add extension' command will now automatically create a context if
+ the specified context does not exist with a message indicated it did so.
+ * 'sip show peers', 'iax show peers', and 'dahdi show peers' now contains a
+ Description field which can be populated with 'description' in the channel
+ configuration files (sip.conf, iax2.conf, and chan_dahdi.conf).
CDR
--------------------------
Modified: team/dvossel/hd_confbridge/CREDITS
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/hd_confbridge/CREDITS?view=diff&rev=314406&r1=314405&r2=314406
==============================================================================
--- team/dvossel/hd_confbridge/CREDITS (original)
+++ team/dvossel/hd_confbridge/CREDITS Wed Apr 20 09:28:47 2011
@@ -222,6 +222,8 @@
Despegar.com, Argentina - AstData API implementation, also sponsored by Google as part of the
gsoc/2009 program (developed by Eliel)
+Philippe Lindheimer - DEV_STATE additions to CCSS
+
=== OTHER CONTRIBUTIONS ===
John Todd - Monkey sounds and associated teletorture prompt
Michael Jerris - bug marshaling
Modified: team/dvossel/hd_confbridge/addons/chan_ooh323.c
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/hd_confbridge/addons/chan_ooh323.c?view=diff&rev=314406&r1=314405&r2=314406
==============================================================================
--- team/dvossel/hd_confbridge/addons/chan_ooh323.c (original)
+++ team/dvossel/hd_confbridge/addons/chan_ooh323.c Wed Apr 20 09:28:47 2011
@@ -143,7 +143,7 @@
int faxmode;
int t38_tx_enable;
int t38_init;
- struct sockaddr_in udptlredirip;
+ struct ast_sockaddr udptlredirip;
time_t lastTxT38;
int chmodepend;
@@ -212,7 +212,7 @@
int t38support;
int rtptimeout;
int mUseIP; /* Use IP address or H323-ID to search user */
- char mIP[20];
+ char mIP[4*8+7+2]; /* Max for IPv6 - 2 brackets, 8 4hex, 7 - : */
struct OOH323Regex *rtpmask;
char rtpmaskstr[120];
int rtdrcount, rtdrinterval;
@@ -235,7 +235,7 @@
int dtmfcodec;
int t38support;
int mFriend; /* indicates defined as friend */
- char ip[20];
+ char ip[4*8+7+2]; /* Max for IPv6 - 2 brackets, 8 4hex, 7 - : */
int port;
char *h323id; /* H323-ID alias, which asterisk will register with gk to reach this peer*/
char *email; /* Email alias, which asterisk will register with gk to reach this peer*/
@@ -286,7 +286,9 @@
static char gLogFile[256] = DEFAULT_LOGFILE;
static int gPort = 1720;
-static char gIP[20];
+static char gIP[2+8*4+7]; /* Max for IPv6 addr */
+struct ast_sockaddr bindaddr;
+int v6mode = 0;
static char gCallerID[AST_MAX_EXTENSION] = "";
static struct ooAliases *gAliasList;
static struct ast_format_cap *gCap;
@@ -373,10 +375,6 @@
ast_format_copy(&ch->rawwriteformat, &tmpfmt);
ast_format_copy(&ch->rawreadformat, &tmpfmt);
- ast_channel_set_fd(ch, 0, ast_rtp_instance_fd(i->rtp, 0));
- ast_channel_set_fd(ch, 1, ast_rtp_instance_fd(i->rtp, 1));
- ast_channel_set_fd(ch, 5, ast_udptl_fd(i->udptl));
-
ast_jb_configure(ch, &global_jbconf);
if (state == AST_STATE_RING)
@@ -468,9 +466,7 @@
static struct ooh323_pvt *ooh323_alloc(int callref, char *callToken)
{
struct ooh323_pvt *pvt = NULL;
- struct sockaddr_in ouraddr;
- struct ast_sockaddr tmp;
- struct in_addr ipAddr;
+
if (gH323Debug)
ast_verbose("--- ooh323_alloc\n");
@@ -487,40 +483,6 @@
ast_mutex_init(&pvt->lock);
ast_mutex_lock(&pvt->lock);
-
- if (!inet_aton(gIP, &ipAddr)) {
- ast_log(LOG_ERROR, "Invalid OOH323 driver ip address\n");
- ast_mutex_unlock(&pvt->lock);
- ast_mutex_destroy(&pvt->lock);
- ast_free(pvt);
- return NULL;
- }
-
- ouraddr.sin_family = AF_INET;
- ouraddr.sin_addr = ipAddr;
- ast_sockaddr_from_sin(&tmp, &ouraddr);
- if (!(pvt->rtp = ast_rtp_instance_new("asterisk", sched, &tmp, NULL))) {
- ast_log(LOG_WARNING, "Unable to create RTP session: %s\n",
- strerror(errno));
- ast_mutex_unlock(&pvt->lock);
- ast_mutex_destroy(&pvt->lock);
- ast_free(pvt);
- return NULL;
- }
-
- ast_rtp_instance_set_qos(pvt->rtp, gTOS, 0, "ooh323-rtp");
-
- if (!(pvt->udptl = ast_udptl_new_with_bindaddr(sched, io, 0, &tmp))) {
- ast_log(LOG_WARNING, "Unable to create UDPTL session: %s\n",
- strerror(errno));
- ast_mutex_unlock(&pvt->lock);
- ast_mutex_destroy(&pvt->lock);
- ast_free(pvt);
- return NULL;
- }
-
- ast_udptl_set_error_correction_scheme(pvt->udptl, UDPTL_ERROR_CORRECTION_NONE);
- ast_udptl_set_far_max_datagram(pvt->udptl, 144);
pvt->faxmode = 0;
pvt->t38support = gT38Support;
pvt->rtptimeout = gRTPTimeout;
@@ -1046,13 +1008,13 @@
if (gH323Debug)
ast_verbose(" hanging %s with cause: %d\n", p->username, q931cause);
- ast->tech_pvt = NULL;
+ ast->tech_pvt = NULL;
if (!ast_test_flag(p, H323_ALREADYGONE)) {
- ooHangCall(p->callToken,
+ ooHangCall(p->callToken,
ooh323_convert_hangupcause_asteriskToH323(q931cause), q931cause);
ast_set_flag(p, H323_ALREADYGONE);
/* ast_mutex_unlock(&p->lock); */
- } else
+ } else
ast_set_flag(p, H323_NEEDDESTROY);
/* detach channel here */
if (p->owner) {
@@ -1068,11 +1030,11 @@
/* Notify the module monitors that use count for resource has changed */
ast_update_use_count();
-
+
} else {
ast_debug(1, "No call to hangup\n" );
}
-
+
if (gH323Debug)
ast_verbose("+++ ooh323_hangup\n");
@@ -1092,7 +1054,8 @@
if (ast->_state != AST_STATE_UP) {
ast_channel_lock(ast);
ast_setstate(ast, AST_STATE_UP);
- ast_debug(1, "ooh323_answer(%s)\n", ast->name);
+ if (option_debug)
+ ast_debug(1, "ooh323_answer(%s)\n", ast->name);
ast_channel_unlock(ast);
ooAnswerCall(p->callToken);
}
@@ -1141,10 +1104,11 @@
return res;
}
+
if (f->frametype == AST_FRAME_VOICE) {
/* sending progress for first */
if (!ast_test_flag(p, H323_OUTGOING) && !p->progsent &&
- p->callToken) {
+ p->callToken) {
ooManualProgress(p->callToken);
p->progsent = 1;
}
@@ -1209,39 +1173,39 @@
if (gH323Debug)
ast_verbose("----- ooh323_indicate %d on call %s\n", condition, callToken);
-
- ast_mutex_lock(&p->lock);
+
+ ast_mutex_lock(&p->lock);
switch (condition) {
case AST_CONTROL_CONGESTION:
if (!ast_test_flag(p, H323_ALREADYGONE)) {
- ooHangCall(callToken, OO_REASON_LOCAL_CONGESTED,
+ ooHangCall(callToken, OO_REASON_LOCAL_CONGESTED,
AST_CAUSE_SWITCH_CONGESTION);
ast_set_flag(p, H323_ALREADYGONE);
}
break;
case AST_CONTROL_BUSY:
if (!ast_test_flag(p, H323_ALREADYGONE)) {
- ooHangCall(callToken, OO_REASON_LOCAL_BUSY, AST_CAUSE_USER_BUSY);
+ ooHangCall(callToken, OO_REASON_LOCAL_BUSY, AST_CAUSE_USER_BUSY);
ast_set_flag(p, H323_ALREADYGONE);
}
break;
case AST_CONTROL_HOLD:
- ast_moh_start(ast, data, NULL);
+ ast_moh_start(ast, data, NULL);
break;
case AST_CONTROL_UNHOLD:
ast_moh_stop(ast);
break;
case AST_CONTROL_PROGRESS:
if (ast->_state != AST_STATE_UP) {
- if (!p->progsent) {
- if (gH323Debug) {
+ if (!p->progsent) {
+ if (gH323Debug) {
ast_debug(1, "Sending manual progress for %s, res = %d\n", callToken,
- ooManualProgress(callToken));
+ ooManualProgress(callToken));
} else {
- ooManualProgress(callToken);
+ ooManualProgress(callToken);
}
- p->progsent = 1;
- }
+ p->progsent = 1;
+ }
}
break;
case AST_CONTROL_RINGING:
@@ -1259,10 +1223,14 @@
}
break;
case AST_CONTROL_SRCUPDATE:
- ast_rtp_instance_update_source(p->rtp);
+ if (p->rtp) {
+ ast_rtp_instance_update_source(p->rtp);
+ }
break;
case AST_CONTROL_SRCCHANGE:
- ast_rtp_instance_change_source(p->rtp);
+ if (p->rtp) {
+ ast_rtp_instance_change_source(p->rtp);
+ }
break;
case AST_CONTROL_CONNECTED_LINE:
if (!ast->connected.id.name.valid
@@ -1389,8 +1357,8 @@
if (gH323Debug)
ast_verbose("+++++ ooh323_queryoption %d on channel %s\n", option, ast->name);
-
- ast_mutex_unlock(&p->lock);
+
+ ast_mutex_unlock(&p->lock);
return res;
}
@@ -1434,9 +1402,9 @@
char formats[FORMAT_STRING_SIZE];
if (gH323Debug)
- ast_verbose("--- ooh323_update_writeformat %s/%d\n",
+ ast_verbose("--- ooh323_update_writeformat %s/%d\n",
ast_getformatname(fmt), txframes);
-
+
p = find_call(call);
if (!p) {
ast_log(LOG_ERROR, "No matching call found for %s\n", call->callToken);
@@ -1449,7 +1417,7 @@
if (p->owner) {
while (p->owner && ast_channel_trylock(p->owner)) {
- ast_debug(1, "Failed to grab lock, trying again\n");
+ ast_debug(1,"Failed to grab lock, trying again\n");
DEADLOCK_AVOIDANCE(&p->lock);
}
if (!p->owner) {
@@ -1458,7 +1426,7 @@
return;
}
if (gH323Debug)
- ast_verbose("Writeformat before update %s/%s\n",
+ ast_verbose("Writeformat before update %s/%s\n",
ast_getformatname(&p->owner->writeformat),
ast_getformatname_multiple(formats, sizeof(formats), p->owner->nativeformats));
if (txframes)
@@ -1494,7 +1462,7 @@
if (gH323Debug)
ast_verbose("--- ooh323_update_readformat %s\n",
ast_getformatname(fmt));
-
+
p = find_call(call);
if (!p) {
ast_log(LOG_ERROR, "No matching call found for %s\n", call->callToken);
@@ -1507,7 +1475,7 @@
if (p->owner) {
while (p->owner && ast_channel_trylock(p->owner)) {
- ast_debug(1, "Failed to grab lock, trying again\n");
+ ast_debug(1,"Failed to grab lock, trying again\n");
DEADLOCK_AVOIDANCE(&p->lock);
}
if (!p->owner) {
@@ -1517,12 +1485,12 @@
}
if (gH323Debug)
- ast_verbose("Readformat before update %s\n",
+ ast_verbose("Readformat before update %s\n",
ast_getformatname(&p->owner->readformat));
ast_format_cap_set(p->owner->nativeformats, fmt);
- ast_set_read_format(p->owner, &p->owner->readformat);
+ ast_set_read_format(p->owner, &p->owner->readformat);
ast_channel_unlock(p->owner);
- } else
+ } else
ast_log(LOG_ERROR, "No owner found\n");
ast_mutex_unlock(&p->lock);
@@ -1540,12 +1508,12 @@
if (gH323Debug)
ast_verbose("--- onAlerting %s\n", call->callToken);
- p = find_call(call);
-
- if(!p) {
+ p = find_call(call);
+
+ if(!p) {
ast_log(LOG_ERROR, "No matching call found\n");
return -1;
- }
+ }
ast_mutex_lock(&p->lock);
if (!p->owner) {
ast_mutex_unlock(&p->lock);
@@ -1596,12 +1564,12 @@
if (gH323Debug)
ast_verbose("--- onProgress %s\n", call->callToken);
- p = find_call(call);
-
- if(!p) {
+ p = find_call(call);
+
+ if(!p) {
ast_log(LOG_ERROR, "No matching call found\n");
return -1;
- }
+ }
ast_mutex_lock(&p->lock);
if (!p->owner) {
ast_mutex_unlock(&p->lock);
@@ -1635,8 +1603,8 @@
ast_setstate(c, AST_STATE_RINGING);
ast_queue_control(c, AST_CONTROL_PROGRESS);
- ast_channel_unlock(c);
- ast_mutex_unlock(&p->lock);
+ ast_channel_unlock(c);
+ ast_mutex_unlock(&p->lock);
if (gH323Debug)
ast_verbose("+++ onProgress %s\n", call->callToken);
@@ -1815,10 +1783,14 @@
} else {
ast_mutex_unlock(&p->lock);
ast_log(LOG_ERROR, "Unacceptable ip %s\n", call->remoteIP);
- if (!user)
+ if (!user) {
ooHangCall(call->callToken, ooh323_convert_hangupcause_asteriskToH323(AST_CAUSE_CALL_REJECTED), AST_CAUSE_CALL_REJECTED);
- else
+ call->callEndReason = OO_REASON_REMOTE_REJECTED;
+ }
+ else {
ooHangCall(call->callToken, ooh323_convert_hangupcause_asteriskToH323(AST_CAUSE_NORMAL_CIRCUIT_CONGESTION), AST_CAUSE_NORMAL_CIRCUIT_CONGESTION);
+ call->callEndReason = OO_REASON_REMOTE_REJECTED;
+ }
ast_set_flag(p, H323_NEEDDESTROY);
return -1;
}
@@ -1826,15 +1798,19 @@
ooh323c_set_capability_for_call(call, &p->prefs, p->cap, p->dtmfmode, p->dtmfcodec,
p->t38support, p->g729onlyA);
- configure_local_rtp(p, call);
-
/* Incoming call */
c = ooh323_new(p, AST_STATE_RING, p->username, 0, NULL);
if(!c) {
ast_mutex_unlock(&p->lock);
ast_log(LOG_ERROR, "Could not create ast_channel\n");
return -1;
- }
+ }
+ if (!configure_local_rtp(p, call)) {
+ ast_mutex_unlock(&p->lock);
+ ast_log(LOG_ERROR, "Couldn't create rtp structure\n");
+ return -1;
+ }
+
ast_mutex_unlock(&p->lock);
if (gH323Debug)
@@ -1905,6 +1881,11 @@
ast_copy_string(call->rtpMaskStr, p->rtpmaskstr, sizeof(call->rtpMaskStr));
}
+ if (!configure_local_rtp(p, call)) {
+ ast_mutex_unlock(&p->lock);
+ return OO_FAILED;
+ }
+
ast_mutex_unlock(&p->lock);
}
@@ -1994,7 +1975,7 @@
ooh323c_set_capability_for_call(call, &p->prefs, p->cap,
p->dtmfmode, p->dtmfcodec, p->t38support, p->g729onlyA);
- configure_local_rtp(p, call);
+ /* configure_local_rtp(p, call); */
ast_mutex_unlock(&p->lock);
}
@@ -2017,14 +1998,14 @@
return -1;
}
- if(ast_test_flag(p, H323_OUTGOING)) {
+ if(ast_test_flag(p, H323_OUTGOING)) {
ast_mutex_lock(&p->lock);
if (!p->owner) {
ast_mutex_unlock(&p->lock);
ast_log(LOG_ERROR, "Channel has no owner\n");
return -1;
}
-
+
while (p->owner && ast_channel_trylock(p->owner)) {
ast_debug(1, "Failed to grab lock, trying again\n");
DEADLOCK_AVOIDANCE(&p->lock);
@@ -2046,7 +2027,7 @@
}
ast_queue_control(c, AST_CONTROL_ANSWER);
- ast_channel_unlock(p->owner);
+ ast_channel_unlock(p->owner);
manager_event(EVENT_FLAG_SYSTEM,"ChannelUpdate","Channel: %s\r\nChanneltype: %s\r\n"
"CallRef: %d\r\n", c->name, "OOH323", p->call_reference);
}
@@ -2071,42 +2052,42 @@
if ((p = find_call(call))) {
ast_mutex_lock(&p->lock);
-
+
while (p->owner) {
if (ast_channel_trylock(p->owner)) {
ooTrace(OOTRCLVLINFO, "Failed to grab lock, trying again\n");
- ast_debug(1, "Failed to grab lock, trying again\n");
+ ast_debug(1, "Failed to grab lock, trying again\n");
DEADLOCK_AVOIDANCE(&p->lock);
} else {
- ownerLock = 1; break;
+ ownerLock = 1; break;
}
}
if (ownerLock) {
- if (!ast_test_flag(p, H323_ALREADYGONE)) {
+ if (!ast_test_flag(p, H323_ALREADYGONE)) {
ast_set_flag(p, H323_ALREADYGONE);
p->owner->hangupcause = call->q931cause;
p->owner->_softhangup |= AST_SOFTHANGUP_DEV;
ast_queue_hangup_with_cause(p->owner,call->q931cause);
}
- }
-
- if(p->owner) {
- p->owner->tech_pvt = NULL;
+ }
+
+ if(p->owner) {
+ p->owner->tech_pvt = NULL;
ast_channel_unlock(p->owner);
- p->owner = NULL;
+ p->owner = NULL;
ast_module_unref(myself);
}
ast_set_flag(p, H323_NEEDDESTROY);
- ooh323c_stop_call_thread(call);
+ ooh323c_stop_call_thread(call);
ast_mutex_unlock(&p->lock);
- ast_mutex_lock(&usecnt_lock);
- usecnt--;
- ast_mutex_unlock(&usecnt_lock);
+ ast_mutex_lock(&usecnt_lock);
+ usecnt--;
+ ast_mutex_unlock(&usecnt_lock);
}
@@ -2261,12 +2242,14 @@
user->cap, 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);
+ } else if (!strcasecmp(v->name, "ip") || !strcasecmp(v->name, "host")) {
+ struct ast_sockaddr p;
+ if (!ast_parse_arg(v->value, PARSE_ADDR, &p)) {
+ ast_copy_string(user->mIP, ast_sockaddr_stringify_addr(&p), sizeof(user->mIP)-1);
+ } else {
+ ast_copy_string(user->mIP, v->value, sizeof(user->mIP)-1);
+ }
user->mUseIP = 1;
- } else if (!strcasecmp(v->name, "host")) {
- strncpy(user->mIP, v->value, sizeof(user->mIP)-1);
- user->mUseIP = 1;
} else if (!strcasecmp(v->name, "dtmfmode")) {
if (!strcasecmp(v->value, "rfc2833"))
user->dtmfmode = H323_DTMF_RFC2833;
@@ -2367,10 +2350,14 @@
}
} else if (!strcasecmp(v->name, "port")) {
peer->port = atoi(v->value);
- } else if (!strcasecmp(v->name, "ip")) {
- ast_copy_string(peer->ip, v->value, sizeof(peer->ip));
- } else if (!strcasecmp(v->name, "host")) {
- ast_copy_string(peer->ip, v->value, sizeof(peer->ip));
+ } else if (!strcasecmp(v->name, "host") || !strcasecmp(v->name, "ip")) {
+ struct ast_sockaddr p;
+ if (!ast_parse_arg(v->value, PARSE_ADDR, &p)) {
+ ast_copy_string(peer->ip, ast_sockaddr_stringify_host(&p), sizeof(peer->ip));
+ } else {
+ ast_copy_string(peer->ip, v->value, sizeof(peer->ip));
+ }
+
} else if (!strcasecmp(v->name, "outgoinglimit")) {
peer->outgoinglimit = atoi(v->value);
if (peer->outgoinglimit < 0)
@@ -2579,6 +2566,13 @@
gPort = (int)strtol(v->value, NULL, 10);
} else if (!strcasecmp(v->name, "bindaddr")) {
ast_copy_string(gIP, v->value, sizeof(gIP));
+ if (ast_parse_arg(v->value, PARSE_ADDR, &bindaddr)) {
+ ast_log(LOG_WARNING, "Invalid address: %s\n", v->value);
+ return 1;
+ }
+ if (ast_sockaddr_is_ipv6(&bindaddr)) {
+ v6mode = 1;
+ }
} else if (!strcasecmp(v->name, "h225portrange")) {
char* endlimit = 0;
char temp[512];
@@ -2798,7 +2792,7 @@
/* Determine ip address if neccessary */
if (ast_strlen_zero(gIP)) {
ooGetLocalIPAddress(gIP);
- if (!strcmp(gIP, "127.0.0.1")) {
+ if (!strcmp(gIP, "127.0.0.1") || !strcmp(gIP, "::1")) {
ast_log(LOG_NOTICE, "Failed to determine local ip address. Please "
"specify it in ooh323.conf. OOH323 Disabled\n");
return 1;
@@ -3316,6 +3310,9 @@
ooH323EpSetH225MsgCallbacks(h225Callbacks);
ooH323EpSetTraceLevel(gTRCLVL);
ooH323EpSetLocalAddress(gIP, gPort);
+ if (v6mode) {
+ ast_debug(1, "OOH323 channel is in IP6 mode\n");
+ }
ooH323EpSetCallerID(gCallerID);
if(ooH323EpSetTCPPortRange(ooconfig.mTCPPortStart,
@@ -3553,7 +3550,7 @@
free(cur->callerid_name);
cur->callerid_name = 0;
}
-
+
if (cur->callerid_num) {
free(cur->callerid_num);
cur->callerid_num = 0;
@@ -3568,20 +3565,20 @@
ast_udptl_destroy(cur->udptl);
cur->udptl = NULL;
}
-
+
/* Unlink us from the owner if we have one */
if (cur->owner) {
- while(ast_channel_trylock(cur->owner)) {
- ast_debug(1, "Failed to grab lock, trying again\n");
+ while(ast_channel_trylock(cur->owner)) {
+ ast_debug(1, "Failed to grab lock, trying again\n");
DEADLOCK_AVOIDANCE(&cur->lock);
- }
+ }
ast_debug(1, "Detaching from %s\n", cur->owner->name);
cur->owner->tech_pvt = NULL;
ast_channel_unlock(cur->owner);
cur->owner = NULL;
ast_module_unref(myself);
}
-
+
if (cur->vad) {
ast_dsp_free(cur->vad);
cur->vad = NULL;
@@ -3906,8 +3903,6 @@
{
/* XXX Deal with Video */
struct ooh323_pvt *p;
- struct sockaddr_in them;
- struct sockaddr_in us;
struct ast_sockaddr tmp;
int mode;
@@ -3925,10 +3920,13 @@
return -1;
}
ast_rtp_instance_get_remote_address(rtp, &tmp);
- ast_sockaddr_to_sin(&tmp, &them);
ast_rtp_instance_get_local_address(rtp, &tmp);
- ast_sockaddr_to_sin(&tmp, &us);
return 0;
+
+/* May 20101003 */
+/* What we should to do here? */
+
+
}
@@ -3936,7 +3934,7 @@
int configure_local_rtp(struct ooh323_pvt *p, ooCallData *call)
{
- struct sockaddr_in us;
+ char lhost[INET6_ADDRSTRLEN], *lport=NULL;
struct ast_sockaddr tmp;
ooMediaInfo mediaInfo;
int x;
@@ -3946,6 +3944,46 @@
if (gH323Debug)
ast_verbose("--- configure_local_rtp\n");
+
+
+ if (ast_parse_arg(call->localIP, PARSE_ADDR, &tmp)) {
+ ast_sockaddr_copy(&tmp, &bindaddr);
+ }
+ if (!(p->rtp = ast_rtp_instance_new("asterisk", sched, &tmp, NULL))) {
+ ast_log(LOG_WARNING, "Unable to create RTP session: %s\n",
+ strerror(errno));
+ return 0;
+ }
+
+ ast_rtp_instance_set_qos(p->rtp, gTOS, 0, "ooh323-rtp");
+
+ if (!(p->udptl = ast_udptl_new_with_bindaddr(sched, io, 0, &tmp))) {
+ ast_log(LOG_WARNING, "Unable to create UDPTL session: %s\n",
+ strerror(errno));
+ return 0;
+ }
+ ast_udptl_set_far_max_datagram(p->udptl, 144);
+
+ if (p->owner) {
+ while (p->owner && ast_channel_trylock(p->owner)) {
+ ast_debug(1,"Failed to grab lock, trying again\n");
+ DEADLOCK_AVOIDANCE(&p->lock);
+ }
+ if (!p->owner) {
+ ast_mutex_unlock(&p->lock);
+ ast_log(LOG_ERROR, "Channel has no owner\n");
+ return 0;
+ }
+ } else {
+ ast_log(LOG_ERROR, "Channel has no owner\n");
+ return 0;
+ }
+
+ ast_channel_set_fd(p->owner, 0, ast_rtp_instance_fd(p->rtp, 0));
+ ast_channel_set_fd(p->owner, 1, ast_rtp_instance_fd(p->rtp, 1));
+ ast_channel_set_fd(p->owner, 5, ast_udptl_fd(p->udptl));
+
+ ast_channel_unlock(p->owner);
if (p->rtp) {
ast_rtp_codecs_packetization_set(ast_rtp_instance_get_codecs(p->rtp), p->rtp, &p->prefs);
@@ -3961,7 +3999,8 @@
}
/* figure out our local RTP port and tell the H.323 stack about it*/
ast_rtp_instance_get_local_address(p->rtp, &tmp);
- ast_sockaddr_to_sin(&tmp, &us);
+ strncpy(lhost, ast_sockaddr_stringify_addr(&tmp), sizeof(lhost));
+ lport = ast_sockaddr_stringify_port(&tmp);
if (p->rtptimeout) {
ast_rtp_instance_set_timeout(p->rtp, p->rtptimeout);
@@ -3978,8 +4017,8 @@
}
- ast_copy_string(mediaInfo.lMediaIP, ast_inet_ntoa(us.sin_addr), sizeof(mediaInfo.lMediaIP));
- mediaInfo.lMediaPort = ntohs(us.sin_port);
+ ast_copy_string(mediaInfo.lMediaIP, lhost, sizeof(mediaInfo.lMediaIP));
+ mediaInfo.lMediaPort = atoi(lport);
mediaInfo.lMediaCntrlPort = mediaInfo.lMediaPort +1;
for (x = 0; ast_codec_pref_index(&p->prefs, x, &tmpfmt); x++) {
strcpy(mediaInfo.dir, "transmit");
@@ -4003,19 +4042,18 @@
}
if (p->udptl) {
- struct ast_sockaddr us_tmp;
- ast_sockaddr_from_sin(&us_tmp, &us);
- ast_udptl_get_us(p->udptl, &us_tmp);
- ast_sockaddr_to_sin(&us_tmp, &us);
- }
- ast_copy_string(mediaInfo.lMediaIP, ast_inet_ntoa(us.sin_addr), sizeof(mediaInfo.lMediaIP));
- mediaInfo.lMediaPort = ntohs(us.sin_port);
- mediaInfo.lMediaCntrlPort = mediaInfo.lMediaPort +1;
- mediaInfo.cap = OO_T38;
- strcpy(mediaInfo.dir, "transmit");
- ooAddMediaInfo(call, mediaInfo);
- strcpy(mediaInfo.dir, "receive");
- ooAddMediaInfo(call, mediaInfo);
+ ast_udptl_get_us(p->udptl, &tmp);
+ strncpy(lhost, ast_sockaddr_stringify_addr(&tmp), sizeof(lhost));
+ lport = ast_sockaddr_stringify_port(&tmp);
+ ast_copy_string(mediaInfo.lMediaIP, lhost, sizeof(mediaInfo.lMediaIP));
+ mediaInfo.lMediaPort = atoi(lport);
+ mediaInfo.lMediaCntrlPort = mediaInfo.lMediaPort +1;
+ mediaInfo.cap = OO_T38;
+ strcpy(mediaInfo.dir, "transmit");
+ ooAddMediaInfo(call, mediaInfo);
+ strcpy(mediaInfo.dir, "receive");
+ ooAddMediaInfo(call, mediaInfo);
+ }
if (gH323Debug)
ast_verbose("+++ configure_local_rtp\n");
@@ -4027,7 +4065,6 @@
int remotePort)
{
struct ooh323_pvt *p = NULL;
- struct sockaddr_in them;
struct ast_sockaddr tmp;
if (gH323Debug)
@@ -4041,10 +4078,8 @@
return;
}
- them.sin_family = AF_INET;
- them.sin_addr.s_addr = inet_addr(remoteIp); /* only works for IPv4 */
- them.sin_port = htons(remotePort);
- ast_sockaddr_from_sin(&tmp, &them);
+ ast_parse_arg(remoteIp, PARSE_ADDR, &tmp);
+ ast_sockaddr_set_port(&tmp, remotePort);
ast_rtp_instance_set_remote_address(p->rtp, &tmp);
if (p->writeformat.id == AST_FORMAT_G726_AAL2)
@@ -4110,10 +4145,9 @@
if (!p)
return -1;
ast_mutex_lock(&p->lock);
+
if (udptl) {
- struct ast_sockaddr udptl_addr;
- ast_udptl_get_peer(udptl, &udptl_addr);
- ast_sockaddr_to_sin(&udptl_addr, &p->udptlredirip);
+ ast_udptl_get_peer(udptl, &p->udptlredirip);
} else
memset(&p->udptlredirip, 0, sizeof(p->udptlredirip));
@@ -4126,14 +4160,13 @@
int remotePort)
{
struct ooh323_pvt *p = NULL;
- struct sockaddr_in them;
- struct ast_sockaddr them_addr;
+ struct ast_sockaddr them;
if (gH323Debug)
ast_verbose("--- setup_udptl_connection\n");
/* Find the call or allocate a private structure if call not found */
- p = find_call(call);
+ p = find_call(call);
if (!p) {
ast_log(LOG_ERROR, "Something is wrong: rtp\n");
@@ -4157,11 +4190,10 @@
return;
}
- them.sin_family = AF_INET;
- them.sin_addr.s_addr = inet_addr(remoteIp); /* only works for IPv4 */
- them.sin_port = htons(remotePort);
- ast_sockaddr_from_sin(&them_addr, &them);
- ast_udptl_set_peer(p->udptl, &them_addr);
+ ast_parse_arg(remoteIp, PARSE_ADDR, &them);
+ ast_sockaddr_set_port(&them, remotePort);
+
+ ast_udptl_set_peer(p->udptl, &them);
ast_udptl_set_tag(p->udptl, "%s", p->owner->name);
p->t38_tx_enable = 1;
p->lastTxT38 = time(NULL);
@@ -4173,8 +4205,8 @@
ast_queue_control_data(p->owner, AST_CONTROL_T38_PARAMETERS, ¶meters, sizeof(parameters));
}
if (gH323Debug)
- ast_debug(1, "Receiving UDPTL %s:%d\n", ast_inet_ntoa(them.sin_addr),
- ntohs(them.sin_port));
+ ast_debug(1, "Receiving UDPTL %s:%s\n", ast_sockaddr_stringify_host(&them),
+ ast_sockaddr_stringify_port(&them));
ast_channel_unlock(p->owner);
ast_mutex_unlock(&p->lock);
@@ -4189,12 +4221,12 @@
{
struct ooh323_pvt *p = NULL;
- if(gH323Debug)
+ if(gH323Debug)
ast_verbose("--- close_udptl_connection\n");
p = find_call(call);
if (!p) {
- ast_log(LOG_ERROR, "Couldn't find matching call to close udptl "
+ ast_log(LOG_ERROR, "Couldn't find matching call to close udptl "
"connection\n");
return;
}
@@ -4283,7 +4315,7 @@
case 5:
f = ast_udptl_read(p->udptl); /* UDPTL t.38 data */
if (gH323Debug) {
- ast_debug(1, "Got UDPTL %d/%d len %d for %s\n",
+ ast_debug(1, "Got UDPTL %d/%d len %d for %s\n",
f->frametype, f->subclass.integer, f->datalen, ast->name);
}
break;
@@ -4296,7 +4328,7 @@
/* We already hold the channel lock */
if (f->frametype == AST_FRAME_VOICE && !p->faxmode) {
if (!(ast_format_cap_iscompatible(p->owner->nativeformats, &f->subclass.format))) {
- ast_debug(1, "Oooh, voice format changed to %s\n", ast_getformatname(&f->subclass.format));
+ ast_debug(1, "Oooh, voice format changed to %s\n", ast_getformatname(&f->subclass.format));
ast_format_cap_set(p->owner->nativeformats, &f->subclass.format);
ast_set_read_format(p->owner, &p->owner->readformat);
ast_set_write_format(p->owner, &p->owner->writeformat);
@@ -4306,8 +4338,8 @@
(f->subclass.format.id == AST_FORMAT_SLINEAR || f->subclass.format.id == AST_FORMAT_ALAW ||
f->subclass.format.id == AST_FORMAT_ULAW)) {
f = ast_dsp_process(p->owner, p->vad, f);
- if (f && (f->frametype == AST_FRAME_DTMF)) {
- ast_debug(1, "* Detected inband DTMF '%c'\n", f->subclass.integer);
+ if (f && (f->frametype == AST_FRAME_DTMF)) {
+ ast_debug(1, "* Detected inband DTMF '%c'\n", f->subclass.integer);
}
}
}
@@ -4326,15 +4358,13 @@
ast_mutex_lock(&p->lock);
- if (gH323Debug) {
- ast_debug(1, "change mode to %d for %s\n", t38mode, call->callToken);
- }
+ if (gH323Debug)
+ ast_debug(1, "change mode to %d for %s\n", t38mode, call->callToken);
if (t38mode == p->faxmode) {
- if (gH323Debug) {
+ if (gH323Debug)
ast_debug(1, "mode for %s is already %d\n", call->callToken,
t38mode);
- }
ast_mutex_unlock(&p->lock);
return;
}
Modified: team/dvossel/hd_confbridge/addons/ooh323c/src/ooCalls.h
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/hd_confbridge/addons/ooh323c/src/ooCalls.h?view=diff&rev=314406&r1=314405&r2=314406
==============================================================================
--- team/dvossel/hd_confbridge/addons/ooh323c/src/ooCalls.h (original)
+++ team/dvossel/hd_confbridge/addons/ooh323c/src/ooCalls.h Wed Apr 20 09:28:47 2011
@@ -97,7 +97,7 @@
int cap;
int lMediaPort;
int lMediaCntrlPort;
- char lMediaIP[20];
+ char lMediaIP[2+8*4+7];
struct OOMediaInfo *next;
} OOMediaInfo;
@@ -179,12 +179,13 @@
int dtmfcodec;
OOMediaInfo *mediaInfo;
OOCallFwdData *pCallFwdData;
- char localIP[20];/* Local IP address */
+ char localIP[2+8*4+7];/* Local IP address */
+ int versionIP; /* IP Address family 6 or 4 */
OOH323Channel* pH225Channel;
OOH323Channel* pH245Channel;
OOSOCKET *h245listener;
int *h245listenport;
- char remoteIP[20];/* Remote IP address */
+ char remoteIP[2+8*4+7];/* Remote IP address */
int remotePort;
int remoteH245Port;
char *remoteDisplayName;
Modified: team/dvossel/hd_confbridge/addons/ooh323c/src/ooGkClient.c
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/hd_confbridge/addons/ooh323c/src/ooGkClient.c?view=diff&rev=314406&r1=314405&r2=314406
==============================================================================
--- team/dvossel/hd_confbridge/addons/ooh323c/src/ooGkClient.c (original)
+++ team/dvossel/hd_confbridge/addons/ooh323c/src/ooGkClient.c Wed Apr 20 09:28:47 2011
@@ -22,6 +22,7 @@
*/
#include "asterisk.h"
#include "asterisk/lock.h"
+#include "asterisk/netsock2.h"
#include "ooGkClient.h"
#include "ootypes.h"
@@ -261,7 +262,7 @@
int ret=0;
OOIPADDR ipaddrs;
/* Create socket */
- if((ret=ooSocketCreateUDP(&pGkClient->rasSocket))!=ASN_OK)
+ if((ret=ooSocketCreateUDP(&pGkClient->rasSocket, 4))!=ASN_OK)
{
OOTRACEERR1("Failed to create RAS socket\n");
pGkClient->state = GkClientFailed;
@@ -269,7 +270,7 @@
}
if(pGkClient->localRASPort)
{
- ret= ooSocketStrToAddr (pGkClient->localRASIP, &ipaddrs);
+ inet_pton(AF_INET, pGkClient->localRASIP, &ipaddrs);
if( (ret=ooSocketBind( pGkClient->rasSocket, ipaddrs,
pGkClient->localRASPort))!=ASN_OK )
{
@@ -295,7 +296,7 @@
OOTRACEDBGA1("Determining ip address for RAS channel "
"multihomed mode. \n");
ret = ooSocketGetIpAndPort(pGkClient->rasSocket, pGkClient->localRASIP,
- 20, &pGkClient->localRASPort);
+ 20, &pGkClient->localRASPort, NULL);
if(ret != ASN_OK)
{
OOTRACEERR1("Error:Failed to retrieve local ip and port from "
@@ -666,7 +667,7 @@
}
- ooSocketConvertIpToNwAddr(pGkClient->localRASIP, pRasAddress->ip.data);
+ inet_pton(AF_INET, pGkClient->localRASIP, pRasAddress->ip.data);
pRasAddress->ip.numocts = 4;
pRasAddress->port = pGkClient->localRASPort;
@@ -932,7 +933,7 @@
}
pTransportAddress->t = T_H225TransportAddress_ipAddress;
pTransportAddress->u.ipAddress = pIpAddress;
- ooSocketConvertIpToNwAddr(pGkClient->localRASIP, pIpAddress->ip.data);
+ inet_pton(AF_INET, pGkClient->localRASIP, pIpAddress->ip.data);
pIpAddress->ip.numocts = 4;
pIpAddress->port = gH323ep.listenPort;
@@ -960,7 +961,7 @@
pTransportAddress->t = T_H225TransportAddress_ipAddress;
pTransportAddress->u.ipAddress = pIpAddress;
- ooSocketConvertIpToNwAddr(pGkClient->localRASIP, pIpAddress->ip.data);
+ inet_pton(AF_INET, pGkClient->localRASIP, pIpAddress->ip.data);
pIpAddress->ip.numocts = 4;
pIpAddress->port = pGkClient->localRASPort;
@@ -1430,7 +1431,7 @@
}
pTransportAddress->t = T_H225TransportAddress_ipAddress;
pTransportAddress->u.ipAddress = pIpAddress;
- ooSocketConvertIpToNwAddr(pGkClient->localRASIP, pIpAddress->ip.data);
+ inet_pton(AF_INET, pGkClient->localRASIP, pIpAddress->ip.data);
pIpAddress->ip.numocts = 4;
pIpAddress->port = gH323ep.listenPort;
@@ -1645,14 +1646,14 @@
ast_mutex_unlock(&pGkClient->Lock);
return OO_FAILED;
}
- ooSocketConvertIpToNwAddr(pGkClient->localRASIP, pIpAddressLocal->ip.data);
+ inet_pton(AF_INET, pGkClient->localRASIP, pIpAddressLocal->ip.data);
pIpAddressLocal->ip.numocts = 4;
pIpAddressLocal->port = gH323ep.listenPort;
if(!ooUtilsIsStrEmpty(call->remoteIP))
{
- ooSocketConvertIpToNwAddr(call->remoteIP, pIpAddressRemote->ip.data);
+ inet_pton(AF_INET, call->remoteIP, pIpAddressRemote->ip.data);
pIpAddressRemote->ip.numocts = 4;
pIpAddressRemote->port = call->remotePort;
}
@@ -2153,7 +2154,7 @@
ast_mutex_unlock(&pGkClient->Lock);
return OO_FAILED;
}
- ooSocketConvertIpToNwAddr(pGkClient->localRASIP, pIpAddressLocal->ip.data);
+ inet_pton(AF_INET, pGkClient->localRASIP, pIpAddressLocal->ip.data);
pIpAddressLocal->ip.numocts = 4;
pIpAddressLocal->port = gH323ep.listenPort;
@@ -2184,7 +2185,7 @@
pIpRasAddress->ip.numocts = 4;
pIpRasAddress->port = pGkClient->localRASPort;
- ooSocketConvertIpToNwAddr(pGkClient->localRASIP, pIpRasAddress->ip.data);
+ inet_pton(AF_INET, pGkClient->localRASIP, pIpRasAddress->ip.data);
pIRR->rasAddress.u.ipAddress = pIpRasAddress;
pIRR->rasAddress.t=T_H225TransportAddress_ipAddress; /* IPv4 address */
@@ -2283,11 +2284,11 @@
return OO_FAILED;
}
pLocalAddr->ip.numocts = 4;
- ooSocketConvertIpToNwAddr(call->localIP, pLocalAddr->ip.data);
+ inet_pton(AF_INET, call->localIP, pLocalAddr->ip.data);
pLocalAddr->port = (call->pH225Channel->port) ? call->pH225Channel->port : gH323ep.listenPort;
pRemoteAddr->ip.numocts = 4;
- ooSocketConvertIpToNwAddr(call->remoteIP, pRemoteAddr->ip.data);
+ inet_pton(AF_INET, call->remoteIP, pRemoteAddr->ip.data);
pRemoteAddr->port = call->remotePort;
perCallInfo->callSignaling.m.sendAddressPresent = TRUE;
Modified: team/dvossel/hd_confbridge/addons/ooh323c/src/ooGkClient.h
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/hd_confbridge/addons/ooh323c/src/ooGkClient.h?view=diff&rev=314406&r1=314405&r2=314406
==============================================================================
--- team/dvossel/hd_confbridge/addons/ooh323c/src/ooGkClient.h (original)
+++ team/dvossel/hd_confbridge/addons/ooh323c/src/ooGkClient.h Wed Apr 20 09:28:47 2011
@@ -47,7 +47,7 @@
-#define MAX_IP_LEN 18
+#define MAX_IP_LEN 2+8*4+7
#define DEFAULT_GKPORT 1719
#define MULTICAST_GKADDRESS "224.0.1.41"
#define MULTICAST_GKPORT 1718
@@ -181,9 +181,9 @@
OOCTXT msgCtxt;
OOSOCKET rasSocket;
int localRASPort;
- char localRASIP[20];
- char gkRasIP[20];
- char gkCallSignallingIP[20];
+ char localRASIP[2+8*4+7];
+ char gkRasIP[2+8*4+7];
+ char gkCallSignallingIP[2+8*4+7];
RasGatekeeperInfo gkInfo;
int gkRasPort;
int gkCallSignallingPort;
Modified: team/dvossel/hd_confbridge/addons/ooh323c/src/ooLogChan.c
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/hd_confbridge/addons/ooh323c/src/ooLogChan.c?view=diff&rev=314406&r1=314405&r2=314406
==============================================================================
--- team/dvossel/hd_confbridge/addons/ooh323c/src/ooLogChan.c (original)
+++ team/dvossel/hd_confbridge/addons/ooh323c/src/ooLogChan.c Wed Apr 20 09:28:47 2011
@@ -82,7 +82,7 @@
/* If user application has not specified a specific ip and is using
multihomed mode, substitute appropriate ip.
*/
- if(!strcmp(pMediaInfo->lMediaIP, "0.0.0.0"))
+ if(!strcmp(pMediaInfo->lMediaIP, "0.0.0.0") || !strcmp(pMediaInfo->lMediaIP, "::"))
[... 8761 lines stripped ...]
More information about the asterisk-commits
mailing list