[mod_signalwire] add configurable stun port

This commit is contained in:
Anthony Minessale 2020-04-01 03:00:54 +00:00 committed by Andrey Volk
parent 182a9cd1d5
commit e2a53bdcb8
1 changed files with 19 additions and 4 deletions

View File

@ -76,6 +76,7 @@ static struct {
char blade_bootstrap[1024];
char adoption_service[1024];
char stun_server[1024];
switch_port_t stun_port;
char adoption_token[64];
char override_context[64];
ks_size_t adoption_backoff;
@ -319,7 +320,7 @@ static ks_status_t mod_signalwire_adoption_post(void)
external_ip = globals.adoption_data_local_ip;
external_port = local_port;
if (switch_stun_lookup(&external_ip, &external_port, globals.stun_server, SWITCH_STUN_DEFAULT_PORT, &error, pool) != SWITCH_STATUS_SUCCESS) {
if (switch_stun_lookup(&external_ip, &external_port, globals.stun_server, globals.stun_port, &error, pool) != SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "SignalWire adoption failed: stun [%s] lookup error: %s\n", globals.stun_server, error);
status = KS_STATUS_FAIL;
goto done;
@ -714,7 +715,8 @@ static switch_status_t load_config()
switch_set_string(globals.blade_bootstrap, "edge.<space>.signalwire.com/api/relay/wss");
switch_set_string(globals.adoption_service, "https://adopt.signalwire.com/adoption");
switch_set_string(globals.stun_server, "stun.freeswitch.org");
globals.stun_port = SWITCH_STUN_DEFAULT_PORT;
if (!(xml = switch_xml_open_cfg(cf, &cfg, NULL))) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "open of %s failed\n", cf);
// don't need the config
@ -736,7 +738,20 @@ static switch_status_t load_config()
} else if (!strcasecmp(var, "adoption-service") && !ks_zstr(val)) {
switch_set_string(globals.adoption_service, val);
} else if (!strcasecmp(var, "stun-server") && !ks_zstr(val)) {
switch_set_string(globals.stun_server, val);
char *p, *ss = strdup(val);
if ((p = strchr(ss, ':'))) {
int port;
*p++ = '\0';
port = atoi(p);
if (port > 0 && port < 65536) {
globals.stun_port = port;
}
}
switch_set_string(globals.stun_server, ss);
switch_safe_free(ss);
} else if (!strcasecmp(var, "ssl-verify")) {
globals.ssl_verify = switch_true(val) ? 1 : 0;
} else if (!strcasecmp(var, "override-context") && !ks_zstr(val)) {
@ -1181,7 +1196,7 @@ static void mod_signalwire_state_configure(void)
external_ip = local_ip;
external_port = local_port;
if (switch_stun_lookup(&external_ip, &external_port, globals.stun_server, SWITCH_STUN_DEFAULT_PORT, &error, pool) != SWITCH_STATUS_SUCCESS) {
if (switch_stun_lookup(&external_ip, &external_port, globals.stun_server, globals.stun_port, &error, pool) != SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "SignalWire configure failed: stun [%s] lookup error: %s\n", globals.stun_server, error);
ks_sleep_ms(4000);
goto done;