Merge branch 'master' of git@git.freeswitch.org:freeswitch

This commit is contained in:
David Yat Sin 2010-04-27 18:26:39 -04:00
commit b837c1f46c
11 changed files with 119 additions and 29 deletions

5
.gitignore vendored
View File

@ -87,3 +87,8 @@ src/mod/say/mod_say_nl/Makefile
src/mod/say/mod_say_th/Makefile src/mod/say/mod_say_th/Makefile
src/mod/say/mod_say_zh/Makefile src/mod/say/mod_say_zh/Makefile
libs/curl/lib/ca-bundle.h libs/curl/lib/ca-bundle.h
libs/g729/
src/mod/codecs/mod_com_g729/
src/mod/languages/mod_lua/mod_lua_wrap.cpp.orig
src/mod/languages/mod_perl/mod_perl_wrap.cpp.orig
src/mod/languages/mod_python/mod_python_wrap.cpp.orig

View File

@ -72,6 +72,8 @@
<param name="mailer-app" value="sendmail"/> <param name="mailer-app" value="sendmail"/>
<param name="mailer-app-args" value="-t"/> <param name="mailer-app-args" value="-t"/>
<param name="dump-cores" value="yes"/> <param name="dump-cores" value="yes"/>
<!-- enable verbose-channel-events to dump every detail about a channel on every event -->
<!--<param name="verbose-channel-events" value="no"/>-->
<!--RTP port range --> <!--RTP port range -->
<!--<param name="rtp-start-port" value="16384"/>--> <!--<param name="rtp-start-port" value="16384"/>-->
<!--<param name="rtp-end-port" value="32768"/>--> <!--<param name="rtp-end-port" value="32768"/>-->

View File

@ -616,7 +616,7 @@ fi
%config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/lang/ru/dir/*.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/lang/ru/dir/*.xml
%changelog %changelog
* Fr Apr 23 2010 - michal.bielicki@seventhsignal.de * Fri Apr 23 2010 - michal.bielicki@seventhsignal.de
- bumped spec file vrersion up to 1.0.7-trunk for trunk - bumped spec file vrersion up to 1.0.7-trunk for trunk
- added skinny dialplan stuff to specfile - added skinny dialplan stuff to specfile
* Sun Mar 28 2010 - michal.bielicki@seventhsignal.de * Sun Mar 28 2010 - michal.bielicki@seventhsignal.de

View File

@ -248,7 +248,8 @@ typedef enum {
SCF_EARLY_HANGUP = (1 << 7), SCF_EARLY_HANGUP = (1 << 7),
SCF_CALIBRATE_CLOCK = (1 << 8), SCF_CALIBRATE_CLOCK = (1 << 8),
SCF_USE_HEAVY_TIMING = (1 << 9), SCF_USE_HEAVY_TIMING = (1 << 9),
SCF_USE_CLOCK_RT = (1 << 10) SCF_USE_CLOCK_RT = (1 << 10),
SCF_VERBOSE_EVENTS = (1 << 11)
} switch_core_flag_enum_t; } switch_core_flag_enum_t;
typedef uint32_t switch_core_flag_t; typedef uint32_t switch_core_flag_t;
@ -1494,7 +1495,8 @@ typedef enum {
SCSC_CALIBRATE_CLOCK, SCSC_CALIBRATE_CLOCK,
SCSC_SAVE_HISTORY, SCSC_SAVE_HISTORY,
SCSC_CRASH, SCSC_CRASH,
SCSC_MIN_IDLE_CPU SCSC_MIN_IDLE_CPU,
SCSC_VERBOSE_EVENTS
} switch_session_ctl_t; } switch_session_ctl_t;
typedef enum { typedef enum {

View File

@ -1500,6 +1500,16 @@ SWITCH_STANDARD_API(ctl_function)
} else if (!strcasecmp(argv[0], "crash")) { } else if (!strcasecmp(argv[0], "crash")) {
switch_core_session_ctl(SCSC_CRASH, NULL); switch_core_session_ctl(SCSC_CRASH, NULL);
stream->write_function(stream, "+OK\n"); stream->write_function(stream, "+OK\n");
} else if (!strcasecmp(argv[0], "verbose_events")) {
arg = -1;
if (argv[1]) {
arg = switch_true(argv[1]);
}
switch_core_session_ctl(SCSC_VERBOSE_EVENTS, &arg);
stream->write_function(stream, "+OK verbose_events is %s \n", arg ? "on" : "off");
} else if (!strcasecmp(argv[0], "save_history")) { } else if (!strcasecmp(argv[0], "save_history")) {
switch_core_session_ctl(SCSC_SAVE_HISTORY, NULL); switch_core_session_ctl(SCSC_SAVE_HISTORY, NULL);
stream->write_function(stream, "+OK\n"); stream->write_function(stream, "+OK\n");

View File

@ -6433,12 +6433,18 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_
if (uuid) { if (uuid) {
switch_core_session_t *c_session = NULL; switch_core_session_t *c_session = NULL;
int do_conf = 0; int do_conf = 0;
const char *c_app = NULL;
const char *c_data = NULL;
uuid = switch_core_session_strdup(b_session, uuid); uuid = switch_core_session_strdup(b_session, uuid);
if ((c_session = switch_core_session_locate(uuid))) { if ((c_session = switch_core_session_locate(uuid))) {
switch_channel_t *c_channel = switch_core_session_get_channel(c_session); switch_channel_t *c_channel = switch_core_session_get_channel(c_session);
private_object_t *c_tech_pvt = NULL; private_object_t *c_tech_pvt = NULL;
c_app = switch_channel_get_variable(c_channel, SWITCH_CURRENT_APPLICATION_VARIABLE);
c_data = switch_channel_get_variable(c_channel, SWITCH_CURRENT_APPLICATION_DATA_VARIABLE);
if (switch_core_session_check_interface(c_session, sofia_endpoint_interface)) { if (switch_core_session_check_interface(c_session, sofia_endpoint_interface)) {
c_tech_pvt = switch_core_session_get_private(c_session); c_tech_pvt = switch_core_session_get_private(c_session);
} }
@ -6460,8 +6466,22 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_
if (do_conf) { if (do_conf) {
destination_number = switch_core_session_sprintf(b_session, "answer,conference:%s@sla+flags{mintwo}", uuid); destination_number = switch_core_session_sprintf(b_session, "answer,conference:%s@sla+flags{mintwo}", uuid);
} else {
if (one_leg && c_app) {
if (c_data) {
destination_number = switch_core_session_sprintf(b_session, "answer,%s:%s", c_app, c_data);
} else {
destination_number = switch_core_session_sprintf(b_session, "answer,%s", c_app);
}
} else { } else {
destination_number = switch_core_session_sprintf(b_session, "answer,intercept:%s", uuid); destination_number = switch_core_session_sprintf(b_session, "answer,intercept:%s", uuid);
if ((c_session = switch_core_session_locate(uuid))) {
switch_channel_t *c_channel = switch_core_session_get_channel(c_session);
switch_channel_hangup(c_channel, SWITCH_CAUSE_ATTENDED_TRANSFER);
switch_core_session_rwunlock(c_session);
}
}
} }
dialplan = "inline"; dialplan = "inline";

View File

@ -1751,6 +1751,11 @@ void sofia_presence_handle_sip_i_subscribe(int status,
} }
} }
if (!is_nat && sip && sip->sip_via && sip->sip_via->v_port &&
atoi(sip->sip_via->v_port) == 5060 && network_port != 5060 ) {
is_nat = "via port";
}
if (!is_nat && profile->nat_acl_count) { if (!is_nat && profile->nat_acl_count) {
uint32_t x = 0; uint32_t x = 0;
int ok = 1; int ok = 1;

View File

@ -1364,6 +1364,11 @@ void sofia_reg_handle_sip_i_register(nua_t *nua, sofia_profile_t *profile, nua_h
} }
} }
if (!is_nat && sip && sip->sip_via && sip->sip_via->v_port &&
atoi(sip->sip_via->v_port) == 5060 && network_port != 5060 ) {
is_nat = "via port";
}
if (!is_nat && profile->nat_acl_count) { if (!is_nat && profile->nat_acl_count) {
uint32_t x = 0; uint32_t x = 0;
int ok = 1; int ok = 1;

View File

@ -271,6 +271,14 @@ SWITCH_DECLARE(void) switch_caller_profile_event_set_data(switch_caller_profile_
switch_snprintf(header_name, sizeof(header_name), "%s-Caller-ID-Number", prefix); switch_snprintf(header_name, sizeof(header_name), "%s-Caller-ID-Number", prefix);
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, header_name, caller_profile->caller_id_number); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, header_name, caller_profile->caller_id_number);
} }
if (!zstr(caller_profile->callee_id_name)) {
switch_snprintf(header_name, sizeof(header_name), "%s-Callee-ID-Name", prefix);
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, header_name, caller_profile->callee_id_name);
}
if (!zstr(caller_profile->callee_id_number)) {
switch_snprintf(header_name, sizeof(header_name), "%s-Callee-ID-Number", prefix);
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, header_name, caller_profile->callee_id_number);
}
if (!zstr(caller_profile->network_addr)) { if (!zstr(caller_profile->network_addr)) {
switch_snprintf(header_name, sizeof(header_name), "%s-Network-Addr", prefix); switch_snprintf(header_name, sizeof(header_name), "%s-Network-Addr", prefix);
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, header_name, caller_profile->network_addr); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, header_name, caller_profile->network_addr);

View File

@ -1677,11 +1677,13 @@ SWITCH_DECLARE(void) switch_channel_event_set_basic_data(switch_channel_t *chann
SWITCH_DECLARE(void) switch_channel_event_set_extended_data(switch_channel_t *channel, switch_event_t *event) SWITCH_DECLARE(void) switch_channel_event_set_extended_data(switch_channel_t *channel, switch_event_t *event)
{ {
switch_event_header_t *hi; switch_event_header_t *hi;
int x; int x, global_verbos_events = 0;
switch_mutex_lock(channel->profile_mutex); switch_mutex_lock(channel->profile_mutex);
if (switch_channel_test_flag(channel, CF_VERBOSE_EVENTS) || switch_core_session_ctl(SCSC_VERBOSE_EVENTS, &global_verbos_events);
if (global_verbos_events || switch_channel_test_flag(channel, CF_VERBOSE_EVENTS) ||
event->event_id == SWITCH_EVENT_CHANNEL_CREATE || event->event_id == SWITCH_EVENT_CHANNEL_CREATE ||
event->event_id == SWITCH_EVENT_CHANNEL_ORIGINATE || event->event_id == SWITCH_EVENT_CHANNEL_ORIGINATE ||
event->event_id == SWITCH_EVENT_CHANNEL_UUID || event->event_id == SWITCH_EVENT_CHANNEL_UUID ||

View File

@ -1448,6 +1448,13 @@ static void switch_load_core_config(const char *file)
switch_time_set_matrix(switch_true(var)); switch_time_set_matrix(switch_true(var));
} else if (!strcasecmp(var, "max-sessions") && !zstr(val)) { } else if (!strcasecmp(var, "max-sessions") && !zstr(val)) {
switch_core_session_limit(atoi(val)); switch_core_session_limit(atoi(val));
} else if (!strcasecmp(var, "verbose-channel-events") && !zstr(val)) {
int v = switch_true(val);
if (v) {
switch_set_flag((&runtime), SCF_VERBOSE_EVENTS);
} else {
switch_clear_flag((&runtime), SCF_VERBOSE_EVENTS);
}
} else if (!strcasecmp(var, "min-idle-cpu") && !zstr(val)) { } else if (!strcasecmp(var, "min-idle-cpu") && !zstr(val)) {
switch_core_min_idle_cpu(atof(val)); switch_core_min_idle_cpu(atof(val));
} else if (!strcasecmp(var, "tipping-point") && !zstr(val)) { } else if (!strcasecmp(var, "tipping-point") && !zstr(val)) {
@ -1639,12 +1646,29 @@ SWITCH_DECLARE(uint32_t) switch_core_debug_level(void)
SWITCH_DECLARE(int32_t) switch_core_session_ctl(switch_session_ctl_t cmd, void *val) SWITCH_DECLARE(int32_t) switch_core_session_ctl(switch_session_ctl_t cmd, void *val)
{ {
int *intval = (int *) val; int *intval = (int *) val;
int oldintval = 0, newintval = 0;
if (intval) {
oldintval = *intval;
}
if (switch_test_flag((&runtime), SCF_SHUTTING_DOWN)) { if (switch_test_flag((&runtime), SCF_SHUTTING_DOWN)) {
return -1; return -1;
} }
switch (cmd) { switch (cmd) {
case SCSC_VERBOSE_EVENTS:
if (intval) {
if (oldintval > -1) {
if (oldintval) {
switch_set_flag((&runtime), SCF_VERBOSE_EVENTS);
} else {
switch_clear_flag((&runtime), SCF_VERBOSE_EVENTS);
}
}
newintval = switch_test_flag((&runtime), SCF_VERBOSE_EVENTS);
}
break;
case SCSC_CALIBRATE_CLOCK: case SCSC_CALIBRATE_CLOCK:
switch_time_calibrate_clock(); switch_time_calibrate_clock();
break; break;
@ -1656,10 +1680,10 @@ SWITCH_DECLARE(int32_t) switch_core_session_ctl(switch_session_ctl_t cmd, void *
break; break;
case SCSC_SYNC_CLOCK: case SCSC_SYNC_CLOCK:
switch_time_sync(); switch_time_sync();
*intval = 0; newintval = 0;
break; break;
case SCSC_PAUSE_INBOUND: case SCSC_PAUSE_INBOUND:
if (*intval) { if (oldintval) {
switch_set_flag((&runtime), SCF_NO_NEW_SESSIONS); switch_set_flag((&runtime), SCF_NO_NEW_SESSIONS);
} else { } else {
switch_clear_flag((&runtime), SCF_NO_NEW_SESSIONS); switch_clear_flag((&runtime), SCF_NO_NEW_SESSIONS);
@ -1710,7 +1734,7 @@ SWITCH_DECLARE(int32_t) switch_core_session_ctl(switch_session_ctl_t cmd, void *
win_shutdown(); win_shutdown();
#endif #endif
if (*intval) { if (oldintval) {
switch_set_flag((&runtime), SCF_RESTART); switch_set_flag((&runtime), SCF_RESTART);
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Restarting\n"); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Restarting\n");
} else { } else {
@ -1732,7 +1756,7 @@ SWITCH_DECLARE(int32_t) switch_core_session_ctl(switch_session_ctl_t cmd, void *
win_shutdown(); win_shutdown();
#endif #endif
if (*intval) { if (oldintval) {
switch_set_flag((&runtime), SCF_RESTART); switch_set_flag((&runtime), SCF_RESTART);
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Restarting\n"); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Restarting\n");
} else { } else {
@ -1744,62 +1768,69 @@ SWITCH_DECLARE(int32_t) switch_core_session_ctl(switch_session_ctl_t cmd, void *
runtime.running = 0; runtime.running = 0;
break; break;
case SCSC_CHECK_RUNNING: case SCSC_CHECK_RUNNING:
*intval = runtime.running; newintval = runtime.running;
break; break;
case SCSC_LOGLEVEL: case SCSC_LOGLEVEL:
if (*intval > -1) { if (oldintval > -1) {
runtime.hard_log_level = *intval; runtime.hard_log_level = oldintval;
} }
if (runtime.hard_log_level > SWITCH_LOG_DEBUG) { if (runtime.hard_log_level > SWITCH_LOG_DEBUG) {
runtime.hard_log_level = SWITCH_LOG_DEBUG; runtime.hard_log_level = SWITCH_LOG_DEBUG;
} }
*intval = runtime.hard_log_level; newintval = runtime.hard_log_level;
break; break;
case SCSC_DEBUG_LEVEL: case SCSC_DEBUG_LEVEL:
if (*intval > -1) { if (oldintval > -1) {
if (*intval > 10) if (oldintval > 10)
*intval = 10; newintval = 10;
runtime.debug_level = *intval; runtime.debug_level = oldintval;
} }
*intval = runtime.debug_level; newintval = runtime.debug_level;
break; break;
case SCSC_MIN_IDLE_CPU: case SCSC_MIN_IDLE_CPU:
{ {
double *dval = (double *) val; double *dval = (double *) val;
if (dval) {
*dval = switch_core_min_idle_cpu(*dval); *dval = switch_core_min_idle_cpu(*dval);
} }
intval = NULL;
}
break; break;
case SCSC_MAX_SESSIONS: case SCSC_MAX_SESSIONS:
*intval = switch_core_session_limit(*intval); newintval = switch_core_session_limit(oldintval);
break; break;
case SCSC_LAST_SPS: case SCSC_LAST_SPS:
*intval = runtime.sps_last; newintval = runtime.sps_last;
break; break;
case SCSC_MAX_DTMF_DURATION: case SCSC_MAX_DTMF_DURATION:
*intval = switch_core_max_dtmf_duration(*intval); newintval = switch_core_max_dtmf_duration(oldintval);
break; break;
case SCSC_MIN_DTMF_DURATION: case SCSC_MIN_DTMF_DURATION:
*intval = switch_core_min_dtmf_duration(*intval); newintval = switch_core_min_dtmf_duration(oldintval);
break; break;
case SCSC_DEFAULT_DTMF_DURATION: case SCSC_DEFAULT_DTMF_DURATION:
*intval = switch_core_default_dtmf_duration(*intval); newintval = switch_core_default_dtmf_duration(oldintval);
break; break;
case SCSC_SPS: case SCSC_SPS:
switch_mutex_lock(runtime.throttle_mutex); switch_mutex_lock(runtime.throttle_mutex);
if (*intval > 0) { if (oldintval > 0) {
runtime.sps_total = *intval; runtime.sps_total = oldintval;
} }
*intval = runtime.sps_total; newintval = runtime.sps_total;
switch_mutex_unlock(runtime.throttle_mutex); switch_mutex_unlock(runtime.throttle_mutex);
break; break;
case SCSC_RECLAIM: case SCSC_RECLAIM:
switch_core_memory_reclaim_all(); switch_core_memory_reclaim_all();
*intval = 0; newintval = 0;
break; break;
} }
if (intval) {
*intval = newintval;
}
return 0; return 0;
} }