mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-10-16 08:14:13 +00:00
Merge branch 'master' into smgmaster
This commit is contained in:
commit
132323c534
54 files changed
+4033
-387
No files matched your search
@@ -242,19 +242,18 @@ static switch_status_t sofia_on_execute(switch_core_session_t *session)
|
||||
return SWITCH_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
char *generate_pai_str(switch_core_session_t *session)
|
||||
char *generate_pai_str(private_object_t *tech_pvt)
|
||||
{
|
||||
private_object_t *tech_pvt = (private_object_t *) switch_core_session_get_private(session);
|
||||
switch_core_session_t *session = tech_pvt->session;
|
||||
const char *callee_name = NULL, *callee_number = NULL;
|
||||
const char *var, *header, *ua = switch_channel_get_variable(tech_pvt->channel, "sip_user_agent");
|
||||
char *pai = NULL;
|
||||
|
||||
if (!sofia_test_pflag(tech_pvt->profile, PFLAG_CID_IN_1XX) ||
|
||||
if (!sofia_test_pflag(tech_pvt->profile, PFLAG_PASS_CALLEE_ID) || !sofia_test_pflag(tech_pvt->profile, PFLAG_CID_IN_1XX) ||
|
||||
((var = switch_channel_get_variable(tech_pvt->channel, "sip_cid_in_1xx")) && switch_false(var))) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
if (zstr((callee_name = switch_channel_get_variable(tech_pvt->channel, "effective_callee_id_name"))) &&
|
||||
zstr((callee_name = switch_channel_get_variable(tech_pvt->channel, "sip_callee_id_name")))) {
|
||||
callee_name = switch_channel_get_variable(tech_pvt->channel, "callee_id_name");
|
||||
@@ -521,7 +520,7 @@ switch_status_t sofia_on_hangup(switch_core_session_t *session)
|
||||
switch_channel_set_variable(channel, "sip_hangup_disposition", "send_refuse");
|
||||
}
|
||||
if (!sofia_test_flag(tech_pvt, TFLAG_BYE)) {
|
||||
char *cid = generate_pai_str(session);
|
||||
char *cid = generate_pai_str(tech_pvt);
|
||||
|
||||
nua_respond(tech_pvt->nh, sip_cause, sip_status_phrase(sip_cause),
|
||||
TAG_IF(!zstr(reason), SIPTAG_REASON_STR(reason)),
|
||||
@@ -703,9 +702,9 @@ static switch_status_t sofia_answer_channel(switch_core_session_t *session)
|
||||
char *extra_headers = sofia_glue_get_extra_headers(channel, SOFIA_SIP_RESPONSE_HEADER_PREFIX);
|
||||
char *cid = NULL;
|
||||
|
||||
if (sofia_test_pflag(tech_pvt->profile, PFLAG_PASS_CALLEE_ID)) {
|
||||
cid = generate_pai_str(session);
|
||||
}
|
||||
|
||||
cid = generate_pai_str(tech_pvt);
|
||||
|
||||
|
||||
if (switch_channel_test_flag(tech_pvt->channel, CF_PROXY_MODE) && tech_pvt->early_sdp && strcmp(tech_pvt->early_sdp, tech_pvt->local_sdp_str)) {
|
||||
/* The SIP RFC for SOA forbids sending a 183 with one sdp then a 200 with another but it won't do us much good unless
|
||||
@@ -1968,7 +1967,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
|
||||
} else if (code == 484 && msg->numeric_arg) {
|
||||
const char *to = switch_channel_get_variable(channel, "sip_to_uri");
|
||||
const char *max_forwards = switch_channel_get_variable(channel, SWITCH_MAX_FORWARDS_VARIABLE);
|
||||
char *cid = generate_pai_str(session);
|
||||
char *cid = generate_pai_str(tech_pvt);
|
||||
char *to_uri = NULL;
|
||||
|
||||
if (to) {
|
||||
@@ -2066,7 +2065,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
|
||||
!switch_channel_test_flag(channel, CF_EARLY_MEDIA) && !switch_channel_test_flag(channel, CF_ANSWERED)) {
|
||||
char *extra_header = sofia_glue_get_extra_headers(channel, SOFIA_SIP_PROGRESS_HEADER_PREFIX);
|
||||
const char *call_info = switch_channel_get_variable(channel, "presence_call_info_full");
|
||||
char *cid = generate_pai_str(session);
|
||||
char *cid = generate_pai_str(tech_pvt);
|
||||
|
||||
switch (ring_ready_val) {
|
||||
|
||||
@@ -2187,9 +2186,8 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
|
||||
char *extra_header = sofia_glue_get_extra_headers(channel, SOFIA_SIP_PROGRESS_HEADER_PREFIX);
|
||||
char *cid = NULL;
|
||||
|
||||
if (sofia_test_pflag(tech_pvt->profile, PFLAG_PASS_CALLEE_ID)) {
|
||||
cid = generate_pai_str(session);
|
||||
}
|
||||
cid = generate_pai_str(tech_pvt);
|
||||
|
||||
|
||||
if (switch_channel_test_flag(tech_pvt->channel, CF_PROXY_MODE) &&
|
||||
tech_pvt->early_sdp && strcmp(tech_pvt->early_sdp, tech_pvt->local_sdp_str)) {
|
||||
@@ -3176,6 +3174,17 @@ static switch_status_t cmd_profile(char **argv, int argc, switch_stream_handle_t
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (!strcasecmp(argv[1], "watchdog")) {
|
||||
if (argc > 2) {
|
||||
int value = switch_true(argv[2]);
|
||||
profile->watchdog_enabled = value;
|
||||
stream->write_function(stream, "%s sip debugging on %s", value ? "Enabled" : "Disabled", profile->name);
|
||||
} else {
|
||||
stream->write_function(stream, "Usage: sofia profile <name> watchdog <on/off>\n");
|
||||
}
|
||||
goto done;
|
||||
}
|
||||
|
||||
|
||||
if (!strcasecmp(argv[1], "gwlist")) {
|
||||
int up = 1;
|
||||
@@ -3601,18 +3610,16 @@ SWITCH_STANDARD_API(sofia_function)
|
||||
"[register|unregister] [<gateway name>|all]|"
|
||||
"killgw <gateway name>|"
|
||||
"[stun-auto-disable|stun-enabled] [true|false]]|"
|
||||
"siptrace [on|off]\n"
|
||||
"siptrace <on|off>|"
|
||||
"watchdog <on|off>\n"
|
||||
"sofia status|xmlstatus profile <name> [ reg <contact str> ] | [ pres <pres str> ] | [ user <user@domain> ]\n"
|
||||
"sofia status|xmlstatus gateway <name>\n"
|
||||
"sofia loglevel <all|default|tport|iptsec|nea|nta|nth_client|nth_server|nua|soa|sresolv|stun> [0-9]\n"
|
||||
"sofia tracelevel <console|alert|crit|err|warning|notice|info|debug>\n"
|
||||
"sofa global siptrace [on|off]\n"
|
||||
"sofia global siptrace <on|off>|"
|
||||
"watchdog <on|off>\n"
|
||||
"--------------------------------------------------------------------------------\n";
|
||||
|
||||
if (session) {
|
||||
return SWITCH_STATUS_FALSE;
|
||||
}
|
||||
|
||||
if (zstr(cmd)) {
|
||||
stream->write_function(stream, "%s", usage_string);
|
||||
goto done;
|
||||
@@ -3663,21 +3670,30 @@ SWITCH_STANDARD_API(sofia_function)
|
||||
stream->write_function(stream, "%s", usage_string);
|
||||
goto done;
|
||||
} else if (!strcasecmp(argv[0], "global")) {
|
||||
int on = -1;
|
||||
int ston = -1;
|
||||
int wdon = -1;
|
||||
|
||||
if (argc > 1) {
|
||||
if (!strcasecmp(argv[1], "siptrace")) {
|
||||
if (argc > 2) {
|
||||
on = switch_true(argv[2]);
|
||||
ston = switch_true(argv[2]);
|
||||
}
|
||||
}
|
||||
if (!strcasecmp(argv[1], "watchdog")) {
|
||||
if (argc > 2) {
|
||||
wdon = switch_true(argv[2]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (on != -1) {
|
||||
sofia_glue_global_siptrace(on);
|
||||
stream->write_function(stream, "+OK Global siptrace %s", on ? "on" : "off");
|
||||
if (ston != -1) {
|
||||
sofia_glue_global_siptrace(ston);
|
||||
stream->write_function(stream, "+OK Global siptrace %s", ston ? "on" : "off");
|
||||
} else if (wdon != -1) {
|
||||
sofia_glue_global_watchdog(wdon);
|
||||
stream->write_function(stream, "+OK Global watchdog %s", wdon ? "on" : "off");
|
||||
} else {
|
||||
stream->write_function(stream, "-ERR Usage: siptrace on|off");
|
||||
stream->write_function(stream, "-ERR Usage: siptrace <on|off>|watchdog <on|off>");
|
||||
}
|
||||
|
||||
goto done;
|
||||
@@ -4759,6 +4775,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_sofia_load)
|
||||
switch_console_set_complete("add sofia tracelevel ::[console:alert:crit:err:warning:notice:info:debug");
|
||||
|
||||
switch_console_set_complete("add sofia global siptrace ::[on:off");
|
||||
switch_console_set_complete("add sofia global watchdog ::[on:off");
|
||||
|
||||
switch_console_set_complete("add sofia profile");
|
||||
switch_console_set_complete("add sofia profile restart all");
|
||||
@@ -4774,6 +4791,8 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_sofia_load)
|
||||
switch_console_set_complete("add sofia profile ::sofia::list_profiles killgw ::sofia::list_profile_gateway");
|
||||
switch_console_set_complete("add sofia profile ::sofia::list_profiles siptrace on");
|
||||
switch_console_set_complete("add sofia profile ::sofia::list_profiles siptrace off");
|
||||
switch_console_set_complete("add sofia profile ::sofia::list_profiles watchdog on");
|
||||
switch_console_set_complete("add sofia profile ::sofia::list_profiles watchdog off");
|
||||
|
||||
switch_console_set_complete("add sofia profile ::sofia::list_profiles gwlist up");
|
||||
switch_console_set_complete("add sofia profile ::sofia::list_profiles gwlist down");
|
||||
|
||||
Reference in new issue
Block a user