add ws-binding and wss-binding sofia profile params
This commit is contained in:
parent
2ccc771825
commit
81cd770a18
|
@ -534,6 +534,8 @@ struct sofia_profile {
|
|||
char *url;
|
||||
char *public_url;
|
||||
char *bindurl;
|
||||
char *ws_bindurl;
|
||||
char *wss_bindurl;
|
||||
char *tls_url;
|
||||
char *tls_public_url;
|
||||
char *tls_bindurl;
|
||||
|
@ -667,6 +669,10 @@ struct sofia_profile {
|
|||
switch_queue_t *event_queue;
|
||||
switch_thread_t *thread;
|
||||
switch_core_media_vflag_t vflags;
|
||||
char *ws_ip;
|
||||
switch_port_t ws_port;
|
||||
char *wss_ip;
|
||||
switch_port_t wss_port;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -2404,6 +2404,10 @@ void *SWITCH_THREAD_FUNC sofia_profile_thread_run(switch_thread_t *thread, void
|
|||
SOATAG_AF(SOA_AF_IP6_ONLY)),
|
||||
TAG_IF(sofia_test_pflag(profile, PFLAG_TLS),
|
||||
NUTAG_SIPS_URL(profile->tls_bindurl)),
|
||||
TAG_IF(profile->ws_bindurl,
|
||||
NUTAG_WS_URL(profile->ws_bindurl)),
|
||||
TAG_IF(profile->wss_bindurl,
|
||||
NUTAG_WSS_URL(profile->wss_bindurl)),
|
||||
TAG_IF(sofia_test_pflag(profile, PFLAG_TLS),
|
||||
NUTAG_CERTIFICATE_DIR(profile->tls_cert_dir)),
|
||||
TAG_IF(sofia_test_pflag(profile, PFLAG_TLS) && profile->tls_passphrase,
|
||||
|
@ -3352,9 +3356,36 @@ static void config_sofia_profile_urls(sofia_profile_t * profile)
|
|||
|
||||
if (profile->bind_params) {
|
||||
char *bindurl = profile->bindurl;
|
||||
if (!switch_stristr("transport=", profile->bind_params)) {
|
||||
profile->bind_params = switch_core_sprintf(profile->pool, "%s;transport=udp,tcp", profile->bind_params);
|
||||
}
|
||||
profile->bindurl = switch_core_sprintf(profile->pool, "%s;%s", bindurl, profile->bind_params);
|
||||
} else {
|
||||
char *bindurl = profile->bindurl;
|
||||
profile->bindurl = switch_core_sprintf(profile->pool, "%s;transport=udp,tcp", bindurl);
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ( profile->ws_port ) {
|
||||
char *ip = !zstr(profile->ws_ip) ? profile->ws_ip : profile->sipip;
|
||||
switch_port_t port = profile->ws_port;
|
||||
char *ipv6 = strchr(ip, ':');
|
||||
profile->ws_bindurl =
|
||||
switch_core_sprintf(profile->pool,
|
||||
"sip:%s@%s%s%s:%d;transport=ws",
|
||||
profile->contact_user, ipv6 ? "[" : "", ip, ipv6 ? "]" : "", port);
|
||||
}
|
||||
|
||||
if ( profile->wss_port ) {
|
||||
char *ip = !zstr(profile->wss_ip) ? profile->wss_ip : profile->sipip;
|
||||
switch_port_t port = profile->wss_port;
|
||||
char *ipv6 = strchr(ip, ':');
|
||||
profile->wss_bindurl =
|
||||
switch_core_sprintf(profile->pool,
|
||||
"sips:%s@%s%s%s:%d;transport=wss",
|
||||
profile->contact_user, ipv6 ? "[" : "", ip, ipv6 ? "]" : "", port);
|
||||
}
|
||||
|
||||
/*
|
||||
* handle TLS params #2
|
||||
*/
|
||||
|
@ -4401,6 +4432,32 @@ switch_status_t config_sofia(sofia_config_t reload, char *profile_name)
|
|||
SWITCH_DEFAULT_DTMF_DURATION);
|
||||
}
|
||||
|
||||
} else if (!strcasecmp(var, "ws-binding") && !zstr(val)) {
|
||||
int tmp;
|
||||
char *p;
|
||||
|
||||
profile->ws_ip = switch_core_strdup(profile->pool, val);
|
||||
if ((p = strrchr(profile->ws_ip, ':'))) {
|
||||
*p++ = '\0';
|
||||
|
||||
if (p && (tmp = atol(p)) && tmp > 0) {
|
||||
profile->ws_port = (switch_port_t) tmp;
|
||||
}
|
||||
}
|
||||
|
||||
} else if (!strcasecmp(var, "wss-binding") && !zstr(val)) {
|
||||
int tmp;
|
||||
char *p;
|
||||
|
||||
profile->wss_ip = switch_core_strdup(profile->pool, val);
|
||||
if ((p = strrchr(profile->wss_ip, ':'))) {
|
||||
*p++ = '\0';
|
||||
|
||||
if (p && (tmp = atol(p)) && tmp > 0) {
|
||||
profile->wss_port = (switch_port_t) tmp;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* handle TLS params #1
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue