mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-07-23 20:51:58 +00:00
FS-7602 add some of 3b2d00f3e6 from verto to sip and refactor some code to keep sip working like verto
This commit is contained in:
@@ -2676,9 +2676,15 @@ static switch_status_t cmd_status(char **argv, int argc, switch_stream_handle_t
|
||||
stream->write_function(stream, "Dialplan \t%s\n", switch_str_nil(profile->dialplan));
|
||||
stream->write_function(stream, "Context \t%s\n", switch_str_nil(profile->context));
|
||||
stream->write_function(stream, "Challenge Realm \t%s\n", zstr(profile->challenge_realm) ? "auto_to" : profile->challenge_realm);
|
||||
|
||||
for (x = 0; x < profile->rtpip_index; x++) {
|
||||
stream->write_function(stream, "RTP-IP \t%s\n", switch_str_nil(profile->rtpip[x]));
|
||||
}
|
||||
|
||||
for (x = 0; x < profile->rtpip_index6; x++) {
|
||||
stream->write_function(stream, "RTP-IP \t%s\n", switch_str_nil(profile->rtpip6[x]));
|
||||
}
|
||||
|
||||
if (profile->extrtpip) {
|
||||
stream->write_function(stream, "Ext-RTP-IP \t%s\n", profile->extrtpip);
|
||||
}
|
||||
@@ -2980,6 +2986,9 @@ static switch_status_t cmd_xml_status(char **argv, int argc, switch_stream_handl
|
||||
for (x = 0; x < profile->rtpip_index; x++) {
|
||||
stream->write_function(stream, " <rtp-ip>%s</rtp-ip>\n", switch_str_nil(profile->rtpip[x]));
|
||||
}
|
||||
for (x = 0; x < profile->rtpip_index6; x++) {
|
||||
stream->write_function(stream, " <rtp-ip>%s</rtp-ip>\n", switch_str_nil(profile->rtpip6[x]));
|
||||
}
|
||||
if (profile->extrtpip) {
|
||||
stream->write_function(stream, " <ext-rtp-ip>%s</ext-rtp-ip>\n", profile->extrtpip);
|
||||
}
|
||||
@@ -5467,7 +5476,7 @@ static void general_event_handler(switch_event_t *event)
|
||||
}
|
||||
|
||||
if (!strcmp(profile->rtpip[x], old_ip6)) {
|
||||
profile->rtpip[x] = switch_core_strdup(profile->pool, new_ip6);
|
||||
profile->rtpip6[x] = switch_core_strdup(profile->pool, new_ip6);
|
||||
rb++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -575,11 +575,14 @@ struct sofia_profile {
|
||||
char *shutdown_type;
|
||||
char *extrtpip;
|
||||
char *rtpip[MAX_RTPIP];
|
||||
char *rtpip6[MAX_RTPIP];
|
||||
char *jb_msec;
|
||||
switch_payload_t te;
|
||||
switch_payload_t recv_te;
|
||||
uint32_t rtpip_index;
|
||||
uint32_t rtpip_next;
|
||||
uint32_t rtpip_index6;
|
||||
uint32_t rtpip_next6;
|
||||
char *rtcp_audio_interval_msec;
|
||||
char *rtcp_video_interval_msec;
|
||||
|
||||
|
||||
@@ -4219,6 +4219,7 @@ switch_status_t config_sofia(sofia_config_t reload, char *profile_name)
|
||||
profile->ob_failed_calls = 0;
|
||||
profile->shutdown_type = "false";
|
||||
profile->rtpip_index = 0;
|
||||
profile->rtpip_index6 = 0;
|
||||
|
||||
if (xprofiledomain) {
|
||||
profile->domain_name = switch_core_strdup(profile->pool, xprofiledomain);
|
||||
@@ -4717,10 +4718,19 @@ switch_status_t config_sofia(sofia_config_t reload, char *profile_name)
|
||||
} else {
|
||||
ip = strcasecmp(val, "auto") ? val : mod_sofia_globals.guess_ip;
|
||||
}
|
||||
if (profile->rtpip_index < MAX_RTPIP) {
|
||||
profile->rtpip[profile->rtpip_index++] = switch_core_strdup(profile->pool, ip);
|
||||
|
||||
if (strchr(ip, ':')) {
|
||||
if (profile->rtpip_index < MAX_RTPIP) {
|
||||
profile->rtpip6[profile->rtpip_index6++] = switch_core_strdup(profile->pool, ip);
|
||||
} else {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Max IPs configured for profile %s.\n", profile->name);
|
||||
}
|
||||
} else {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Max IPs configured for profile %s.\n", profile->name);
|
||||
if (profile->rtpip_index6 < MAX_RTPIP) {
|
||||
profile->rtpip[profile->rtpip_index++] = switch_core_strdup(profile->pool, ip);
|
||||
} else {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Max IPs configured for profile %s.\n", profile->name);
|
||||
}
|
||||
}
|
||||
} else if (!strcasecmp(var, "sip-ip")) {
|
||||
char *ip = mod_sofia_globals.guess_ip;
|
||||
@@ -5455,7 +5465,7 @@ switch_status_t config_sofia(sofia_config_t reload, char *profile_name)
|
||||
profile->sipip = switch_core_strdup(profile->pool, mod_sofia_globals.guess_ip);
|
||||
}
|
||||
|
||||
if (!profile->rtpip[0]) {
|
||||
if (!profile->rtpip[0] && !profile->rtpip6[0]) {
|
||||
profile->rtpip[profile->rtpip_index++] = switch_core_strdup(profile->pool, mod_sofia_globals.guess_ip);
|
||||
}
|
||||
|
||||
@@ -5488,7 +5498,7 @@ switch_status_t config_sofia(sofia_config_t reload, char *profile_name)
|
||||
profile->sdp_username = switch_core_strdup(profile->pool, "FreeSWITCH");
|
||||
}
|
||||
|
||||
if (!profile->rtpip[0]) {
|
||||
if (!profile->rtpip[0] && !profile->rtpip6[0]) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Setting ip to '127.0.0.1'\n");
|
||||
profile->rtpip[profile->rtpip_index++] = switch_core_strdup(profile->pool, "127.0.0.1");
|
||||
}
|
||||
|
||||
@@ -92,9 +92,25 @@ void sofia_glue_attach_private(switch_core_session_t *session, sofia_profile_t *
|
||||
|
||||
tech_pvt->profile = profile;
|
||||
|
||||
tech_pvt->mparams.rtpip = switch_core_session_strdup(session, profile->rtpip[profile->rtpip_next++]);
|
||||
if (profile->rtpip_next >= profile->rtpip_index) {
|
||||
profile->rtpip_next = 0;
|
||||
if (!zstr(profile->rtpip[profile->rtpip_next])) {
|
||||
tech_pvt->mparams.rtpip4 = switch_core_session_strdup(session, profile->rtpip[profile->rtpip_next++]);
|
||||
tech_pvt->mparams.rtpip = tech_pvt->mparams.rtpip4;
|
||||
|
||||
if (profile->rtpip_next >= profile->rtpip_index) {
|
||||
profile->rtpip_next = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (!zstr(profile->rtpip[profile->rtpip_next6])) {
|
||||
tech_pvt->mparams.rtpip6 = switch_core_session_strdup(session, profile->rtpip[profile->rtpip_next6++]);
|
||||
|
||||
if (zstr(tech_pvt->mparams.rtpip)) {
|
||||
tech_pvt->mparams.rtpip = tech_pvt->mparams.rtpip6;
|
||||
}
|
||||
|
||||
if (profile->rtpip_next6 >= profile->rtpip_index6) {
|
||||
profile->rtpip_next6 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
profile->inuse++;
|
||||
|
||||
Reference in New Issue
Block a user