From c56be9bb116f195e81c5a714518b50b78411ff8f Mon Sep 17 00:00:00 2001 From: Michal Bielicki - cypromis Date: Mon, 2 Jan 2012 13:51:57 +0100 Subject: [PATCH 001/292] misplaced word in freeswitch.spec --- freeswitch.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freeswitch.spec b/freeswitch.spec index b63f90d18c..a84f0a0e5d 100644 --- a/freeswitch.spec +++ b/freeswitch.spec @@ -443,7 +443,7 @@ APPLICATION_MODULES_SZ="applications/mod_sms applications/mod_snom applications/ applications/mod_valet_parking applications/mod_vmd applications/mod_voicemail \ applications/mod_voicemail_ivr" -APPLICATIONS_MODULES="$APPLICATION_MODULES_AC $APPLICATION_MODULES_DE prefix$APPLICATION_MODULES_FR $APPLICATION_MODULES_SZ" +APPLICATIONS_MODULES="$APPLICATION_MODULES_AC $APPLICATION_MODULES_DE $APPLICATION_MODULES_FR $APPLICATION_MODULES_SZ" ###################################################################################################################### # # Automatic Speech Recognition and Text To Speech Modules From e00a61c48bce26cb96f3d615bd0f08091d7143e1 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 31 Jan 2012 15:31:08 -0600 Subject: [PATCH 002/292] [Freeswitch-dev] Absolute conditions are not changing the proceed variable... (mod_dialplan_xml.c) --- src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c b/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c index 45a736facf..db45f2933b 100644 --- a/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c +++ b/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c @@ -189,7 +189,7 @@ static int parse_exten(switch_core_session_t *session, switch_caller_profile_t * total++; field = (char *) switch_xml_attr(xregex, "field"); - + if (field) { if (strchr(field, '$')) { if ((field_expanded = switch_channel_expand_variables(channel, field)) == field) { @@ -222,9 +222,11 @@ static int parse_exten(switch_core_session_t *session, switch_caller_profile_t * switch_log_printf(SWITCH_CHANNEL_SESSION_LOG_CLEAN(session), SWITCH_LOG_DEBUG, "Dialplan: %s Absolute Condition [%s] match=%s\n", switch_channel_get_name(channel), exten_name, all ? "all" : "any"); pass++; + proceed = 1; if (!all && !xor) break; } else if (time_match == 1) { pass++; + proceed = 1; if (!all && !xor) break; } From 675cd2d432a134ea1d9e83732f9bbe7bc058d28d Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 1 Feb 2012 12:07:36 -0600 Subject: [PATCH 003/292] add proceed cases --- src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c b/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c index db45f2933b..b208a3a90d 100644 --- a/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c +++ b/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c @@ -143,6 +143,7 @@ static int parse_exten(switch_core_session_t *session, switch_caller_profile_t * "Dialplan: %s Date/Time Match (PASS) [%s] break=%s\n", switch_channel_get_name(channel), exten_name, do_break_a ? do_break_a : "on-false"); anti_action = SWITCH_FALSE; + proceed = 1 } else if (time_match == 0) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG_CLEAN(session), SWITCH_LOG_DEBUG, "Dialplan: %s Date/TimeMatch (FAIL) [%s] break=%s\n", @@ -312,6 +313,7 @@ static int parse_exten(switch_core_session_t *session, switch_caller_profile_t * switch_log_printf(SWITCH_CHANNEL_SESSION_LOG_CLEAN(session), SWITCH_LOG_DEBUG, "Dialplan: %s Absolute Condition [%s]\n", switch_channel_get_name(channel), exten_name); anti_action = SWITCH_FALSE; + proceed = 1; } } From 9c908b983f428475bcf9bc51c32b326944358f37 Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Wed, 1 Feb 2012 12:27:18 -0600 Subject: [PATCH 004/292] fix syntax error with last commit --- src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c b/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c index b208a3a90d..9faaa1852b 100644 --- a/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c +++ b/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c @@ -143,7 +143,7 @@ static int parse_exten(switch_core_session_t *session, switch_caller_profile_t * "Dialplan: %s Date/Time Match (PASS) [%s] break=%s\n", switch_channel_get_name(channel), exten_name, do_break_a ? do_break_a : "on-false"); anti_action = SWITCH_FALSE; - proceed = 1 + proceed = 1; } else if (time_match == 0) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG_CLEAN(session), SWITCH_LOG_DEBUG, "Dialplan: %s Date/TimeMatch (FAIL) [%s] break=%s\n", From 19d3e646368ee5fa1fc8f88c475d3063c4ae740a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 1 Feb 2012 15:17:18 -0600 Subject: [PATCH 005/292] FS-3863 try this please --- .../mod_dialplan_xml/mod_dialplan_xml.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c b/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c index 9faaa1852b..97b3431d3d 100644 --- a/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c +++ b/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c @@ -84,7 +84,7 @@ static int parse_exten(switch_core_session_t *session, switch_caller_profile_t * switch_xml_t xcond, xaction, xexpression, xregex; switch_channel_t *channel = switch_core_session_get_channel(session); char *exten_name = (char *) switch_xml_attr(xexten, "name"); - int proceed = 0, save_proceed = 0; + int proceed = 0, save_proceed = 0, soft_proceed = 0; char *expression_expanded = NULL, *field_expanded = NULL; switch_regex_t *re = NULL, *save_re = NULL; int offset = 0; @@ -117,7 +117,7 @@ static int parse_exten(switch_core_session_t *session, switch_caller_profile_t * if (switch_xml_child(xcond, "condition")) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Nested conditions are not allowed!\n"); - proceed = 1; + soft_proceed = 1; goto done; } @@ -143,7 +143,7 @@ static int parse_exten(switch_core_session_t *session, switch_caller_profile_t * "Dialplan: %s Date/Time Match (PASS) [%s] break=%s\n", switch_channel_get_name(channel), exten_name, do_break_a ? do_break_a : "on-false"); anti_action = SWITCH_FALSE; - proceed = 1; + soft_proceed = 1; } else if (time_match == 0) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG_CLEAN(session), SWITCH_LOG_DEBUG, "Dialplan: %s Date/TimeMatch (FAIL) [%s] break=%s\n", @@ -223,11 +223,11 @@ static int parse_exten(switch_core_session_t *session, switch_caller_profile_t * switch_log_printf(SWITCH_CHANNEL_SESSION_LOG_CLEAN(session), SWITCH_LOG_DEBUG, "Dialplan: %s Absolute Condition [%s] match=%s\n", switch_channel_get_name(channel), exten_name, all ? "all" : "any"); pass++; - proceed = 1; + soft_proceed = 1; if (!all && !xor) break; } else if (time_match == 1) { pass++; - proceed = 1; + soft_proceed = 1; if (!all && !xor) break; } @@ -313,7 +313,7 @@ static int parse_exten(switch_core_session_t *session, switch_caller_profile_t * switch_log_printf(SWITCH_CHANNEL_SESSION_LOG_CLEAN(session), SWITCH_LOG_DEBUG, "Dialplan: %s Absolute Condition [%s]\n", switch_channel_get_name(channel), exten_name); anti_action = SWITCH_FALSE; - proceed = 1; + soft_proceed = 1; } } @@ -368,7 +368,7 @@ static int parse_exten(switch_core_session_t *session, switch_caller_profile_t * switch_caller_extension_add_application(session, *extension, application, data); } } - proceed = 1; + soft_proceed = 1; } } else { if (field && strchr(expression, '(')) { @@ -443,7 +443,7 @@ static int parse_exten(switch_core_session_t *session, switch_caller_profile_t * switch_regex_safe_free(re); switch_safe_free(field_expanded); switch_safe_free(expression_expanded); - return proceed; + return proceed ? proceed : soft_proceed; } static switch_status_t dialplan_xml_locate(switch_core_session_t *session, switch_caller_profile_t *caller_profile, switch_xml_t *root, From 71db5cb290976fefa1288d24cd53eaa140049e0e Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 1 Feb 2012 16:44:18 -0600 Subject: [PATCH 006/292] FS-3863 --resolve --- src/mod/endpoints/mod_sofia/sofia_presence.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 30d5ba7888..3b73913510 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -461,8 +461,8 @@ static void actual_sofia_presence_mwi_event_handler(switch_event_t *event) char buf[512] = ""; switch_console_callback_match_t *matches; - sql = switch_mprintf("select profile_name from sip_registrations where hostname='%q' and profile_name='%q' and (sip_host='%s' or mwi_host='%s')", - mod_sofia_globals.hostname, profile->name, host, host); + sql = switch_mprintf("select profile_name from sip_registrations where hostname='%q' and (sip_host='%s' or mwi_host='%s')", + mod_sofia_globals.hostname, host, host); if (list_profiles_full(NULL, NULL, &matches, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS) { switch_console_callback_match_node_t *m; @@ -481,7 +481,7 @@ static void actual_sofia_presence_mwi_event_handler(switch_event_t *event) switch_console_free_matches(&matches); } - + switch_safe_free(sql); if (!(profile = sofia_glue_find_profile(buf))) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot find profile %s\n", switch_str_nil(host)); From b4943888ff70cd9bc14dca3751a472f4c69efbd3 Mon Sep 17 00:00:00 2001 From: Raymond Chandler Date: Wed, 1 Feb 2012 19:37:23 -0500 Subject: [PATCH 007/292] we might want this at some point ;-) --- support-d/.bashrc | 1 + 1 file changed, 1 insertion(+) diff --git a/support-d/.bashrc b/support-d/.bashrc index a0f1d0c66a..818afe0cef 100644 --- a/support-d/.bashrc +++ b/support-d/.bashrc @@ -21,6 +21,7 @@ export PS1='\n\[\033[01;31m\]\u@\h\[\033[01;36m\] [\d \@] \[\033[01;33m\] \w\n\[ export PS2="\[\033[1m\]> \[\033[0m\]" export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export VISUAL=emacs +export GIT_SSL_NO_VERIFY=true umask 022 alias e='emacs' From 80050b5b2770f25f9d46fba415d11314a8cd07b3 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 1 Feb 2012 19:32:22 -0600 Subject: [PATCH 008/292] FS-3794 sekil can you test this one --- src/mod/endpoints/mod_sofia/sofia_presence.c | 17 +++++++++++++---- src/switch_channel.c | 4 ---- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 3b73913510..351f1d87d5 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -571,13 +571,15 @@ static int sofia_presence_dialog_callback(void *pArg, int argc, char **argv, cha struct dialog_helper *helper = (struct dialog_helper *) pArg; if (argc == 3) { - switch_set_string(helper->status, argv[0]); - switch_set_string(helper->rpid, argv[1]); - switch_set_string(helper->presence_id, argv[2]); + if (!helper->hits) { + switch_set_string(helper->status, argv[0]); + switch_set_string(helper->rpid, argv[1]); + switch_set_string(helper->presence_id, argv[2]); + } helper->hits++; } - return -1; + return 0; } @@ -856,6 +858,7 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) char *call_info_state = switch_event_get_header(event, "presence-call-info-state"); switch_console_callback_match_t *matches; struct presence_helper helper = { 0 }; + int hup = 0; if (!mod_sofia_globals.running) { return; @@ -877,6 +880,7 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) if (status && switch_stristr("CS_HANGUP", status)) { status = "Available"; + hup = 1; } if (rpid) { @@ -1091,6 +1095,11 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) sofia_glue_execute_sql_callback(profile, profile->ireg_mutex, sql, sofia_presence_dialog_callback, &dh); switch_safe_free(sql); + + if (hup && dh.hits > 0) { + goto done; + } + if (zstr(call_id) && (dh.hits && presence_source && (!strcasecmp(presence_source, "register") || switch_stristr("register", status)))) { goto done; diff --git a/src/switch_channel.c b/src/switch_channel.c index df3bedeacf..617c7f58b5 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -620,10 +620,6 @@ SWITCH_DECLARE(void) switch_channel_perform_presence(switch_channel_t *channel, call_info = switch_channel_get_variable(channel, "presence_call_info"); if (switch_event_create(&event, type) == SWITCH_STATUS_SUCCESS) { - if (!strcasecmp(status, "CS_HANGUP")) { - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "refresh", "true"); - } - switch_channel_event_set_data(channel, event); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", "any"); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", __FILE__); From eeb9851028a6981cd7c11af4de290ef361d170ce Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 2 Feb 2012 10:21:04 -0600 Subject: [PATCH 009/292] fix seg --- src/mod/endpoints/mod_sofia/sofia_glue.c | 37 ++++++++++++------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 5f7ba23c57..c8422e1eeb 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -6868,24 +6868,6 @@ char *sofia_glue_gen_contact_str(sofia_profile_t *profile, sip_t const *sip, nua np->is_nat = NULL; } - if (zstr(contact_host)) { - np->is_nat = "No contact host"; - } - - - if (np->is_nat && !np->fs_path) { - contact_host = np->network_ip; - switch_snprintf(new_port, sizeof(new_port), ":%d", np->network_port); - port = NULL; - } - - - if (port) { - switch_snprintf(new_port, sizeof(new_port), ":%s", port); - } - - ipv6 = strchr(contact_host, ':'); - if (np->is_nat && np->fs_path) { char *full_contact = sip_header_as_string(nh->nh_home, (void *) contact); char *full_contact_dup; @@ -6918,6 +6900,25 @@ char *sofia_glue_gen_contact_str(sofia_profile_t *profile, sip_t const *sip, nua free(path_val); } else { + + if (zstr(contact_host)) { + np->is_nat = "No contact host"; + } + + if (np->is_nat) { + contact_host = np->network_ip; + switch_snprintf(new_port, sizeof(new_port), ":%d", np->network_port); + port = NULL; + } + + + if (port) { + switch_snprintf(new_port, sizeof(new_port), ":%s", port); + } + + ipv6 = strchr(contact_host, ':'); + + if (contact->m_url->url_params) { contact_str = switch_mprintf("%s %s", display, contact->m_url->url_user, From 8d97aeff6995b6f81de56c78dbb5518fbb10e760 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 2 Feb 2012 12:05:15 -0600 Subject: [PATCH 010/292] FS-3794 i'm starting to loathe this bug id --- src/mod/endpoints/mod_sofia/sofia_presence.c | 68 ++++++++++++++------ 1 file changed, 47 insertions(+), 21 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 351f1d87d5..ab4fa384df 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -56,6 +56,7 @@ static int sofia_dialog_probe_callback(void *pArg, int argc, char **argv, char * static int sofia_dialog_probe_notify_callback(void *pArg, int argc, char **argv, char **columnNames); struct dialog_helper { + char state[128]; char status[512]; char rpid[512]; char presence_id[1024]; @@ -570,11 +571,12 @@ static int sofia_presence_dialog_callback(void *pArg, int argc, char **argv, cha { struct dialog_helper *helper = (struct dialog_helper *) pArg; - if (argc == 3) { + if (argc == 4) { if (!helper->hits) { - switch_set_string(helper->status, argv[0]); - switch_set_string(helper->rpid, argv[1]); - switch_set_string(helper->presence_id, argv[2]); + switch_set_string(helper->state, argv[0]); + switch_set_string(helper->status, argv[1]); + switch_set_string(helper->rpid, argv[2]); + switch_set_string(helper->presence_id, argv[3]); } helper->hits++; } @@ -1088,16 +1090,42 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE); } - sql = switch_mprintf("select status,rpid,presence_id from sip_dialogs " + sql = switch_mprintf("select state,status,rpid,presence_id from sip_dialogs " "where hostname='%q' and profile_name='%q' and " "((sip_from_user='%q' and sip_from_host='%q') or presence_id='%q@%q') order by rcd desc", mod_sofia_globals.hostname, profile->name, euser, host, euser, host); sofia_glue_execute_sql_callback(profile, profile->ireg_mutex, sql, sofia_presence_dialog_callback, &dh); switch_safe_free(sql); - if (hup && dh.hits > 0) { - goto done; + /* sigh, mangle this packet to simulate a call that is up instead of hungup */ + event->flags |= EF_UNIQ_HEADERS; + + if (!strcasecmp(dh.state, "early")) { + status = "CS_ROUTING"; + if (rpid) { + rpid = sofia_presence_translate_rpid(rpid, status); + } + + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Answer-State", "early"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "status", status); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Channel-State", status); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Channel-Call-State", "EARLY"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "astate", "early"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "answer-state", "early"); + } else { + status = "CS_EXECUTE"; + if (rpid) { + rpid = sofia_presence_translate_rpid(rpid, status); + } + + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Answer-State", "answered"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "status", status); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Channel-State", status); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Channel-Call-State", "ACTIVE"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "astate", "confirmed"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "answer-state", "confirmed"); + } } @@ -1217,22 +1245,20 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) } #if 0 - if (event) { - const char *refresh = switch_event_get_header(event, "refresh"); - if (switch_true(refresh)) { - switch_event_t *s_event; - - if (switch_event_create(&s_event, SWITCH_EVENT_PRESENCE_PROBE) == SWITCH_STATUS_SUCCESS) { - switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "proto", SOFIA_CHAT_PROTO); - switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "login", profile->name); - switch_event_add_header(s_event, SWITCH_STACK_BOTTOM, "from", "%s@%s", euser, host); - switch_event_add_header(s_event, SWITCH_STACK_BOTTOM, "to", "%s@%s", euser, host); - switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "event_type", "presence"); - switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "alt_event_type", "dialog"); - switch_event_fire(&s_event); - } + if (hup) { + switch_event_t *s_event; + + if (switch_event_create(&s_event, SWITCH_EVENT_PRESENCE_PROBE) == SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "proto", SOFIA_CHAT_PROTO); + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "login", profile->name); + switch_event_add_header(s_event, SWITCH_STACK_BOTTOM, "from", "%s@%s", euser, host); + switch_event_add_header(s_event, SWITCH_STACK_BOTTOM, "to", "%s@%s", euser, host); + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "event_type", "presence"); + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "alt_event_type", "dialog"); + switch_event_fire(&s_event); } } + #endif if (!zstr((char *) helper.stream.data)) { From 27221fa4d37a43dcd4db4338c6f2c921e3a231ca Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 2 Feb 2012 13:54:18 -0600 Subject: [PATCH 011/292] fix sql stmt --- src/mod/endpoints/mod_sofia/sofia_presence.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index ab4fa384df..02054d3cd1 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -646,7 +646,7 @@ static void do_normal_probe(switch_event_t *event) "from sip_registrations " "left join sip_dialogs on " - "sip_dialogs.hostname = sip_registration.hostname and sip_dialogs.profile_name = sip_registration.profile_name and (" + "sip_dialogs.hostname = sip_registrations.hostname and sip_dialogs.profile_name = sip_registrations.profile_name and (" "sip_dialogs.presence_id = sip_registrations.sip_user %q '@' %q sip_registrations.sub_host " "or (sip_dialogs.sip_from_user = sip_registrations.sip_user " "and sip_dialogs.sip_from_host = sip_registrations.sip_host)) " From 63c3ec6774133b0fe32cd0acfc2ac89949138fc5 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 2 Feb 2012 13:54:22 -0600 Subject: [PATCH 012/292] FS-3870 --resolve that is amazing that nobody found this before, we've probably been vulnerable to that bug for years --- src/switch_caller.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_caller.c b/src/switch_caller.c index ac31d99d01..9382efd58c 100644 --- a/src/switch_caller.c +++ b/src/switch_caller.c @@ -136,7 +136,7 @@ SWITCH_DECLARE(switch_caller_profile_t *) switch_caller_profile_dup(switch_memor profile->flags = tocopy->flags; profile->pool = pool; profile->direction = tocopy->direction; - + profile->times = tocopy->times; if (tocopy->soft) { profile_node_t *pn; From eb93c17df2d09c4d2663aeb49d76e54fb2779add Mon Sep 17 00:00:00 2001 From: Michael S Collins Date: Thu, 2 Feb 2012 13:08:00 -0800 Subject: [PATCH 013/292] Update ChangeLog thru Nov 30 (more coming) --- docs/ChangeLog | 59 ++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 50 insertions(+), 9 deletions(-) diff --git a/docs/ChangeLog b/docs/ChangeLog index 78d8f84d85..6f92097c5f 100644 --- a/docs/ChangeLog +++ b/docs/ChangeLog @@ -31,6 +31,9 @@ freeswitch (1.0.7) build: unimrcp vs2010 build fixes for new version (r:2dcca5f4) build: add sqlite to clean on make current or update-clean (r:2366f429) build: Update windows to use Lame 3.98.4 (r:4349ec00) + build: fix mod_silk build issue (r:6fe6d8d7/FS-3649) + build: Rename AUTOMAKE_OPTS to AUTOMAKE_OPTIONS in several places (r:992eafd0) + build: don't allow using system libcurl on systems that strip out Curl_setopt, we use it (r:36f0a5b8/FS-2936) codec2: working prototype, still for testing only (r:04ca0751) config: move limit.conf to db.conf config: Update VM phrase macros to voice option then action on main, config menus @@ -57,6 +60,7 @@ freeswitch (1.0.7) config: Fix mod_directory phrase file references to 'dir-press.wav' (correct: vm-press) (r:3ef2692f) config: bump ru sounds version to 1.0.13 (r:2b1b19bf) config: Fix eavesdrop so that *0 works as well as 88 as the access code (r:cbfe83cc) + config: change default to short date-time in VM sounds (r:3603a69d) core: Add RTCP support (FSRTP-14) core: handle some errors on missing db handle conditions core: add ... and shutdown as a fail-safe when no modules are loaded @@ -336,6 +340,15 @@ freeswitch (1.0.7) core: add getGlobalVariable and setGlobalVariable to swig stuff (r:2faaee0e) core: Fix erroneous "module busy" messages on module unload (r:bad5964b/FS-3589) core: move code from uuid_kill into core (r:3c9551ee) + core: Directed pickup sends "call completed elsewhere" (r:43ca3ee8/FS-3634) + core: jitter-buffer tweaks (r:e3ade445/FS-3671 and r:599a4543/FS-3672) + core: Add option to disable PLC when using the jitter buffer (r:ba14f95d/FS-3678) + core: Allow fail_on_single_reject to do negated causes, i.e. fail_on_single_reject=!UNALLOCATED_NUMBER (r:522c0d53/FS-3675) + core: move the thing that passes proto_specific_hangup_cause to the core and prefix it with last_bridge_ and also log last_bridge_hangup_cauuse for good measure (r:e04f9ba9) + core: Add CHANNEL_EXECUTE to the list of default "verbose events" (r:ff7432d9/FS-3680) + core: fix queued dtmf on channels with no timer issue (r:bc968ca8) + core: use the non-signal checking version of switch_channel_up/down in the core (r:9ecf187d) + core: Link curl into core (r:74ed2cef) docs: Major clean up of doxygen generated core API documentation (r:794246e1) docs: Add libteletone back to core API documentation (r:c35c138d) embedded languages: Provide core level support for conditional Set Global Variable (r:c017c24b/FSCORE-612) @@ -404,6 +417,7 @@ freeswitch (1.0.7) libs: Merged OpenZAP and FreeTDM into the FreeSWITCH tree. libs: Add support for TLS on Windows using openssl (r:1abe3b93/MODSOFIA-92) libs: fix bsd shell incompatibility (r:e2b85e94/FS-287) + libsndfile: Update libsndfile and edit mod_sndfile.c to support ogg and flac (r:02a604f7/FS-1197) libsofiasip: Fix random crashes (r:c15ee980/SFSIP-219) libsofiasip: Fix T.38 bug in sofia_glue (r:2843f1ad/MODSOFIA-94) libsofiasip: VS2010 sofia posix problem (r:46dd24c2/SFSIP-220) @@ -478,6 +492,7 @@ freeswitch (1.0.7) mod_callcenter: New strategies: round-robin, random, and 'top-down' (r:2b4b23aa,r:bee247ca) mod_callcenter: Display an warning when MOH is invalid and resume wait with silence. (r:37b14c9a/FS-2740) mod_callcenter: Fix member been switch as abandoned when he was pickup by an agent (r:9ff8f53f/FS-3281) + mod_callcenter: Adapt mod_callcenter loopback agent fix to work with commit 2eae19e6 (r:d32ba761/FS-3657) mod_cdr_mongodb: add MongoDB CDR module (r:a9169199) mod_cdr_sqlite: initial commit (r:f625fe3b) mod_cdr_sqlite: config file for mod_cdr_sqlite (r:25bc8fe3) @@ -562,9 +577,14 @@ freeswitch (1.0.7) mod_conference: remove waste flags from both conference and member and explicitly always send audio from conferences to avoid random interop issues and general discomfort these flags are now deprecated (r:5d77e789) mod_conference: add conference cdrs to mod_conference (r:127be02d) mod_conference: add custom kick sound to conference (r:8fde25cc) + mod_conference: Fix bug where not entering PIN allows caller into PIN-protected conference (r:9dd45e35/FS-3661) + mod_conference: fix crash in video-bridge mode (r:4c13e7c0) mod_curl: use method=post when post requested (r:c6a4ddd0/FSMOD-69) mod_db: fix stack corruption (MODAPP-407) mod_dialplan_xml: Add in the INFO log the caller id number when processing a request (Currenly only show the caller name) (r:e1df5e13) + mod_dialplan_xml: Add tag for OR logic in XML dialplan (r:c1615dbb/FS-3655) + mod_dialplan_xml: add xor to regex attr (r:7c7b0068/FS-3655) + mod_dialplan_xml: add tod_tz_offset variable to set to the integer value of the tz offset or the tz-offset tag on a per-tag basis (r:65a75664) mod_dingaling: make mod_dingaling compat with google's new free phonecalls thing (r:ba0a2a32) mod_dingaling: make dingaling work with google voice inbound too (r:4ee68141) mod_dingaling: Fix crash when testing the new gv-dingaling with around 24 concurrent calls (r:73e1ec5e/FSCORE-667) @@ -602,6 +622,8 @@ freeswitch (1.0.7) mod_dptools: fix seg on user_recurse_variables reported on the mailing list (r:01b2bd04) mod_dptools: add digit_action_set_target app that can set the target (direction of the dtmf flow and subsequent channel who gets the events) to self or peer (bridged channel when possible) (r:cf9859ea) mod_dptools: get rid of digit_action_set target and add target,bind_target params to bind_digit_action (r:42b64ccd) + mod_dptools: add flags to digit bindings (r:d93ed90b) + mod_dptools: New dialplan app: play_and_detect_speech (r:34338e5a/FS-3692) mod_easyroute: Fix possible segfaults and memory leak during unload, and add new setting odbc-retries (r:7fbc47f8/FS-2973) mod_enum: switch mod_enum to use new portable in-tree version (r:2bbc37e3) mod_enum: fix race condition between ldns configure creating ldns/util.h and mod_enum (r:87884c5c) @@ -685,6 +707,15 @@ freeswitch (1.0.7) mod_gsmopen: copy from branch mod_gsmopen: fix FS-2793, compilation stops (r:355c0dbb/FS-2793) mod_gsmopen: retry serial initialization if failed, zeroing audio buffers, slower retry on soundcard busy (EAGAIN) (r:c7aefe93) + mod_h323: initial t.38 support. remake logical channel opening. add missing param name in example config. (r:8c58074c) + mod_h323: some t.38 and locking improvements. replace ptrace with switch_log_printf. (r:5efe5c88) + mod_h323: add missing conf praameter (r:0b353d7a) + mod_h323: Add mod_h323 to windows (r:015bcaf6/MODENDP-301) + mod_h323: move PTrace level set to FSH323EndPoint::Initialise. partially apply patch from from Peter Olsson, Remove UnLock() when TryLock() failed and DEBUG_RTP_PACKETS directiv e. (r:7b5803f7) + mod_h323: set network_addr of caller profile to signaling ip address. (requested by Steven Ayre) (r:072bf5ad) + mod_h323: fix race condition on destroying signaling thread in h323 library (r:c22aac0e) + mod_h323: move the switch_rtp_request_port() call from the contructor to FSH323Connection::CreateRealTimeLogicalChannel() - fix rtp port leak. tnx to Peter Olsson. (r:6f4c4ea0) + mod_h323: fix stale calls then fax send/recv in some circumstance (r:00fce043) mod_hash: free all hashtables on shutdown (r:e76d7d92) mod_hash: remove unneeded initializer (r:10d468a6) mod_hash: begin working on remote support (r:c5ad49da) @@ -701,14 +732,6 @@ freeswitch (1.0.7) mod_hash: limit_remote_thread sending invalid handle to esl_connect_timeout causing core (r:6cdd3e2a/MODAPP-446) mod_hash: avoid scheduler calling a function on null hash during shutdown (r:8458adeb) mod_hash: add realm filter to hash_dump db command so that you can quickly dump all entries that belong only to a specific realm without getting the whole db (r:81347126) - mod_h323: initial t.38 support. remake logical channel opening. add missing param name in example config. (r:8c58074c) - mod_h323: some t.38 and locking improvements. replace ptrace with switch_log_printf. (r:5efe5c88) - mod_h323: add missing conf praameter (r:0b353d7a) - mod_h323: Add mod_h323 to windows (r:015bcaf6/MODENDP-301) - mod_h323: move PTrace level set to FSH323EndPoint::Initialise. partially apply patch from from Peter Olsson, Remove UnLock() when TryLock() failed and DEBUG_RTP_PACKETS directiv e. (r:7b5803f7) - mod_h323: set network_addr of caller profile to signaling ip address. (requested by Steven Ayre) (r:072bf5ad) - mod_h323: fix race condition on destroying signaling thread in h323 library (r:c22aac0e) - mod_h323: move the switch_rtp_request_port() call from the contructor to FSH323Connection::CreateRealTimeLogicalChannel() - fix rtp port leak. tnx to Peter Olsson. (r:6f4c4ea0) mod_http_cache: Initial commit of new module (thanks crienzo) (r:c51acfcc/FS-3597) mod_java: fix eventConsumer issue and add flush() method (r:7fd3aff6) mod_java: Allow user defined java methods to be called at startup and shutdown of JVM (r:1339e218/MODLANG-117) @@ -730,6 +753,7 @@ freeswitch (1.0.7) mod_lcr: fix "as xml" for larger number of arguments (r:3dca2ebb/FS-3283) mod_lcr: fix malformed XML when has embedded %s (r:5fa9619f/FS-3284) mod_lcr: initial addition of very basic LRN (r:6d1d4a9c) + mod_logfile: Replace hard-coded file permissions w/ OS default or umask (r:513a9e1a/FS-3710) mod_loopback: add loopback_bowout_on_execute var to make 1 legged loopback calls bow out of the picture mod_loopback: only execute app once in app mode (r:64f58f2d) mod_loopback: fix bug in mod_loopback where bowout=false (r:e9ab5368) @@ -780,7 +804,8 @@ freeswitch (1.0.7) mod_portaudio: move load_config a bit lower since it needs to use the hashtables (r:1529c0ec) mod_portaudio: Fix Windows crash (r:94c9cbf6/FS-3498) mod_portaudio_stream: update to specify the channel index (r:d1169d6e) - mod_protovm: This is a very early new prototype voicemail ivr system. You need to copy the sounds.xml and make it loadale in the language folder and protovm.conf.xml inside the autoload_configs folder. Configs file will most definitly change. Once stabilized, we make it install those file by default. (r:fb549777) + mod_portaudio: mod_portaudio: fix incorrect use of pa input buffer that could lead to garbage audio (r:f2cf68bf) + mod_protovm: Removed by author; replaced by mod_voicemail_ivr mod_python: add chat app to python (r:08917021) mod_radius_cdr: Add 'Freeswitch-Direction' av pair (r:a5170df0) mod_radius_cdr: Add 'Freeswitch-Other-Leg-Id' av pair (r:18d29b46) @@ -818,6 +843,7 @@ freeswitch (1.0.7) mod_say_de: method PRONOUNCED - grammatical fixes, thank you Christian Benke (r:5d46ddbc/FS-3195) mod_say_en: introduce new say_string method of doing say and use it in mod_say_en as an example. try: eval ${say_string en.gsm en current_date_time pronounced ${strepoch()}} from the cli with this patch. We can do more to centralize the say things and go back and apply it to other langs, using this method you can set the desired file ext as well which I think is a bounty.... (r:d5ef86d7) mod_say_en: If you only tell SAY CURRENCY to say 100 it should only say 100 dollars without the "0 cents" (r:426a4e76/FS-2922) + mod_say_en: add "PRONOUNCED_YEAR" so 1985 is "nineteen eighty-five" (r:c0af0a85) mod_say_es: fix grammar when saying dates and time (r:6bed19b2/MODAPP-429) mod_say_he: Add Hebrew say module (r:ebd9c83e/FS-3211) mod_say_ja: initial commit, still needs sound files (r:b2423158/FS-2755) @@ -828,6 +854,7 @@ freeswitch (1.0.7) mod_shout: bump mod_shout to use mpg123-1.13.2 to hopefully address unwanted calls to exit() and inherit other upstream fixes (r:079f3f73) mod_shout: add append flag to mod_shout, can append MP3's (r:0419c4e0) mod_shout: add ability to set bitrate, samplerate, and encoder quality in config file (r:8ea3cbd5/FS-1231) + mod_shout: Initialize Lame sooner for file open (r:44b5cf82/FS-3646) mod_silk: Fix mod_silk compliance and performance issues (r:2ddbc457/MODCODEC-20) mod_skinny: Add the missing api files mod_skinny: add example dialplan and directory config (r:1bfcc17e) @@ -1093,6 +1120,16 @@ freeswitch (1.0.7) mod_sofia: add presence_map config (r:48416707) mod_sofia: add lookup params to presence_map (r:ea7f6a18) mod_sofia: add missing mod_sofia indexes (r:40df8d65) + mod_sofia: When doing direct pickup send CANCEL with reason="call completed elsewhere" (r:6cd6a719/FS-3634) + mod_sofia: Handle "isup-oli" in SIP From: field (similar to "gw" handling) (r:0ed54079/FS-3663) + mod_sofia: Fix NOTIFY expiry time to conform to RFC 3265 (r:42c69c04/FS-3685) + mod_sofia: Preserve VIA headers in sofia recovery (r:5a6231b6/FS-3686) + mod_sofia: Add respond 503 "Maximum Calls In Progress" param for incoming SIP OPTIONS when busy (r:a891514c/FS-3697) + mod_sofia: don't list all registrations when doing "sofia status profile foo" (use 'reg' option instead) (r:00e381f1/FS-3699) + mod_sofia: Fix typo and possible memory corruption in sofia presence (r:ff910276/FS-3706) + mod_sofia: comment out optional Require header from re-invites for the sake of interop with testy t.38 terminals (r:58c3c3a0) + mod_sofia: Set reg and invite auto failures to loglevel debug10 to satisfy Fail2ban (r:35112f22/FS-3586) + mod_sofia: Fix segfault on malformed NOTIFY (r:82807998/FS-3718) mod_soundtouch: updated soundtouch to library 1.5.0 to fix gcc > 4.3 incompatibilities (r:dfb5c629) mod_soundtouch: Update soundtouch to 1.6.0 to fix FS-3634 (r:d8ae59fd/FS-3634) mod_spandsp: initial checkin of mod_fax/mod_voipcodecs merge into mod_spandsp (r:fa9a59a8) @@ -1143,6 +1180,7 @@ freeswitch (1.0.7) mod_valet_parking: valet_info now returns uuid properly (r:34ddeb75/FS-3613) mod_valet_parking: add presence to mod_valet_parking subscribe to the lot name for general stats or individual slots to monitor with park+ prefix *note* this used to be used in mod_fifo which now will use queue+ going forward (r:9daa42c1) mod_valet_parking: lower token freq to 5, put it in a define and have more obvious warning about full lots (r:2f786a07) + mod_valet_parking: make auto unpark choose the one waiting the longest instead of the earliest ext val (r:00cf5aed) mod_voicemail: Fix vm_prefs profile lock (MODAPP-417) mod_voicemail: add 'vm-enabled' param (default true) mod_voicemail: fix vm msg being deleted when pressing key to forward to email (MODAPP-403) @@ -1167,6 +1205,9 @@ freeswitch (1.0.7) mod_voicemail: use vm_email as notification address if vm_notify_email isn't set (that behavior was in voicemail_leave_main but not in deliver_vm) (r:8974f9d6) mod_voicemail: better fix for voicemail email key match (r:aff4bcbe/FS-3080) mod_voicemail: Prevent rewind key from breaking out of message playback (r:923a104b/FS-3637) + mod_voicemail: add variable vm_auth_only or option auth_only to voicemail app so you can use it as a pin checker (r:3051480d) + mod_voicemail: fix wrong message count with saved urgent messages (r:54b4b088) + mod_voicemail: add voicemail_formatted_caller_id_number param for templates in vm (r:94b9cc0f) mod_xml_cdr: add force_process_cdr var to process b leg cdr on a case by case basis when b leg cdr is disabled (XML-17) mod_xml_cdr: add leg param to query string (XML-24) mod_xml_cdr: fix locked sessions (XML-26) From 23dcdbd8d1ad11806568ca25349d6f0e4b024f56 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 2 Feb 2012 15:09:25 -0600 Subject: [PATCH 014/292] produce sip_full_via var --- src/mod/endpoints/mod_sofia/sofia.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 4634f9f9bd..28d6008a86 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -239,21 +239,25 @@ static void extract_header_vars(sofia_profile_t *profile, sip_t const *sip, switch_stream_handle_t stream = { 0 }; int x = 0; - if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) { - SWITCH_STANDARD_STREAM(stream); + SWITCH_STANDARD_STREAM(stream); - for(vp = sip->sip_via; vp; vp = vp->v_next) { - char *v = sip_header_as_string(nh->nh_home, (void *) vp); - - stream.write_function(&stream, x == 0 ? "%s" : ",%s", v); - su_free(nh->nh_home, v); - - x++; - } + for(vp = sip->sip_via; vp; vp = vp->v_next) { + char *v = sip_header_as_string(nh->nh_home, (void *) vp); - switch_channel_set_variable(channel, "sip_recover_via", (char *)stream.data); - free(stream.data); + stream.write_function(&stream, x == 0 ? "%s" : ",%s", v); + su_free(nh->nh_home, v); + + x++; } + + switch_channel_set_variable(channel, "sip_full_via", (char *)stream.data); + + if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) { + switch_channel_set_variable(channel, "sip_recover_via", (char *)stream.data); + } + + free(stream.data); + } if (sip->sip_from) { From e64b988c193ccdcc1ea75183f6988d0ad78185aa Mon Sep 17 00:00:00 2001 From: Michael S Collins Date: Thu, 2 Feb 2012 13:10:04 -0800 Subject: [PATCH 015/292] update unrecorded sound prompts --- docs/phrase/phrase_en.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/phrase/phrase_en.xml b/docs/phrase/phrase_en.xml index d073cf447a..5ef6baecd9 100644 --- a/docs/phrase/phrase_en.xml +++ b/docs/phrase/phrase_en.xml @@ -509,6 +509,14 @@ + + + + + + + + From 12907b454c77d9880363d5c29013dc5316608dd3 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 2 Feb 2012 16:17:57 -0600 Subject: [PATCH 016/292] FS-3868 --resolve --- src/mod/endpoints/mod_sofia/sofia.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 28d6008a86..3dd28d7f60 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -3360,7 +3360,7 @@ switch_status_t reconfig_sofia(sofia_profile_t *profile) } else if (!strcasecmp(var, "context")) { profile->context = switch_core_strdup(profile->pool, val); } else if (!strcasecmp(var, "local-network-acl")) { - if (!strcasecmp(var, "none")) { + if (!strcasecmp(val, "none")) { profile->local_network = NULL; } else { profile->local_network = switch_core_strdup(profile->pool, val); From a72fb34f92f211d2e83c65028bd4eb4c79e6016e Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 2 Feb 2012 17:38:08 -0600 Subject: [PATCH 017/292] FS-3872 --resolve --- src/switch_core_media_bug.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/switch_core_media_bug.c b/src/switch_core_media_bug.c index 8727fa896c..cffeb0e2b9 100644 --- a/src/switch_core_media_bug.c +++ b/src/switch_core_media_bug.c @@ -213,19 +213,14 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_read(switch_media_bug_t *b return SWITCH_STATUS_FALSE; } - if (fill) { - fill_read = !do_read; - fill_write = !do_write; - } - - if (fill && fill_read && fill_write) { + + fill_read = !do_read; + fill_write = !do_write; + + if (fill_read && fill_write) { return SWITCH_STATUS_FALSE; } - if (!((do_read || fill_read) && (do_write || fill_write))) { - return SWITCH_STATUS_FALSE; - } - if (do_read) { switch_mutex_lock(bug->read_mutex); if (switch_buffer_read(bug->raw_read_buffer, &rh, sizeof(rh))) { @@ -336,6 +331,10 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_read(switch_media_bug_t *b return SWITCH_STATUS_BREAK; } + if (fill_read || fill_write) { + return SWITCH_STATUS_FALSE; + } + return SWITCH_STATUS_SUCCESS; } From ee3e450425f25b07347fe2595a18b7a568f7886d Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 2 Feb 2012 18:47:04 -0600 Subject: [PATCH 018/292] FS-3869 --resolve --- .../mod_conference/mod_conference.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index 2689acb62a..8ba21c5b84 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -1257,15 +1257,17 @@ static void *SWITCH_THREAD_FUNC conference_video_thread_run(switch_thread_t *thr } session = conference->floor_holder->session; - switch_core_session_read_lock(session); - switch_mutex_unlock(conference->mutex); - if (!switch_channel_ready(switch_core_session_get_channel(session))) { - status = SWITCH_STATUS_FALSE; - } else { - status = switch_core_session_read_video_frame(session, &vid_frame, SWITCH_IO_FLAG_NONE, 0); + + if ((status = switch_core_session_read_lock(session)) == SWITCH_STATUS_SUCCESS) { + switch_mutex_unlock(conference->mutex); + if (!switch_channel_ready(switch_core_session_get_channel(session))) { + status = SWITCH_STATUS_FALSE; + } else { + status = switch_core_session_read_video_frame(session, &vid_frame, SWITCH_IO_FLAG_NONE, 0); + } + switch_mutex_lock(conference->mutex); + switch_core_session_rwunlock(session); } - switch_mutex_lock(conference->mutex); - switch_core_session_rwunlock(session); if (!SWITCH_READ_ACCEPTABLE(status)) { yield = 100000; From 018c784431b2fe6b50dc417e86569d972aa8fda2 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 2 Feb 2012 19:58:39 -0600 Subject: [PATCH 019/292] FS-3794 contd --- src/mod/endpoints/mod_sofia/sofia_presence.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 02054d3cd1..62e7104097 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -571,7 +571,13 @@ static int sofia_presence_dialog_callback(void *pArg, int argc, char **argv, cha { struct dialog_helper *helper = (struct dialog_helper *) pArg; - if (argc == 4) { + if (argc >= 4) { + + if (mod_sofia_globals.debug_presence > 0) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "CHECK DIALOG state[%s] status[%s] rpid[%s] pres[%s]\n", + argv[0], argv[1], argv[2], argv[3]); + } + if (!helper->hits) { switch_set_string(helper->state, argv[0]); switch_set_string(helper->status, argv[1]); @@ -615,7 +621,7 @@ static void do_normal_probe(switch_event_t *event) } if (probe_euser && probe_host && (profile = sofia_glue_find_profile(probe_host))) { - sql = switch_mprintf("select status,rpid,presence_id from sip_dialogs " + sql = switch_mprintf("select state,status,rpid,presence_id from sip_dialogs " "where hostname='%q' and profile_name='%q' and " "((sip_from_user='%q' and sip_from_host='%q') or presence_id='%q@%q') order by rcd desc", mod_sofia_globals.hostname, profile->name, probe_euser, probe_host, probe_euser, probe_host); @@ -1091,10 +1097,16 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) } sql = switch_mprintf("select state,status,rpid,presence_id from sip_dialogs " - "where hostname='%q' and profile_name='%q' and " + "where call_info_state != 'seized' and hostname='%q' and profile_name='%q' and " "((sip_from_user='%q' and sip_from_host='%q') or presence_id='%q@%q') order by rcd desc", mod_sofia_globals.hostname, profile->name, euser, host, euser, host); sofia_glue_execute_sql_callback(profile, profile->ireg_mutex, sql, sofia_presence_dialog_callback, &dh); + + if (mod_sofia_globals.debug_presence > 0) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "CHECK SQL: %s@%s [%s]\nhits: %d\n", euser, host, sql, dh.hits); + } + + switch_safe_free(sql); if (hup && dh.hits > 0) { From 74e07f8af1953193dbe513baad99ee9f9df48abe Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 2 Feb 2012 20:00:46 -0600 Subject: [PATCH 020/292] FS-3864 --resolve no philosophical constraint here. Just saying since FS is a b2bua the message really does terminate at US but its find to do 202 per this patch --- src/mod/endpoints/mod_sofia/sofia_presence.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 62e7104097..a34b15f042 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -3972,7 +3972,7 @@ void sofia_presence_handle_sip_i_message(int status, end: - nua_respond(nh, SIP_200_OK, NUTAG_WITH_THIS_MSG(de->data->e_msg), TAG_END()); + nua_respond(nh, SIP_202_ACCEPTED, NUTAG_WITH_THIS_MSG(de->data->e_msg), TAG_END()); } From d79d15d43a774d5e52fd474a1ebbb1248a8f45c7 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 2 Feb 2012 20:20:38 -0600 Subject: [PATCH 021/292] FS-3865 --resolve --- src/mod/applications/mod_conference/mod_conference.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index 8ba21c5b84..777fdd2f27 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -1104,6 +1104,7 @@ static switch_status_t conference_del_member(conference_obj_t *conference, confe if (test_eflag(conference, EFLAG_FLOOR_CHANGE)) { switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT); + conference_add_event_data(conference, event); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "floor-change"); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Old-ID", "%d", member->id); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "New-ID", "none"); From 7f5b8fba5547fa8fc828f40c8bf47c8c449d2565 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 2 Feb 2012 20:41:15 -0600 Subject: [PATCH 022/292] FS-3794 this bug haunts me --- src/mod/endpoints/mod_sofia/sofia_presence.c | 25 +++++++++++++------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index a34b15f042..2818d7c5f6 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -864,10 +864,12 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) char *call_id = switch_event_get_header(event, "call-id"); char *presence_source = switch_event_get_header(event, "presence-source"); char *call_info_state = switch_event_get_header(event, "presence-call-info-state"); + const char *uuid = switch_event_get_header(event, "unique-id"); switch_console_callback_match_t *matches; struct presence_helper helper = { 0 }; int hup = 0; + if (!mod_sofia_globals.running) { return; } @@ -1052,9 +1054,7 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) continue; } - if (call_info) { - const char *uuid = switch_event_get_header(event, "unique-id"); - + if (call_info) { #if 0 if (mod_sofia_globals.debug_sla > 1) { @@ -1095,17 +1095,26 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) rpid, status, mod_sofia_globals.hostname, profile->name, euser, host); sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE); } + + if (zstr(uuid)) { - sql = switch_mprintf("select state,status,rpid,presence_id from sip_dialogs " - "where call_info_state != 'seized' and hostname='%q' and profile_name='%q' and " - "((sip_from_user='%q' and sip_from_host='%q') or presence_id='%q@%q') order by rcd desc", - mod_sofia_globals.hostname, profile->name, euser, host, euser, host); - sofia_glue_execute_sql_callback(profile, profile->ireg_mutex, sql, sofia_presence_dialog_callback, &dh); + sql = switch_mprintf("select state,status,rpid,presence_id from sip_dialogs " + "where call_info_state != 'seized' and hostname='%q' and profile_name='%q' and " + "((sip_from_user='%q' and sip_from_host='%q') or presence_id='%q@%q') order by rcd desc", + mod_sofia_globals.hostname, profile->name, euser, host, euser, host); + } else { + sql = switch_mprintf("select state,status,rpid,presence_id from sip_dialogs " + "where uuid != '%q' and call_info_state != 'seized' and hostname='%q' and profile_name='%q' and " + "((sip_from_user='%q' and sip_from_host='%q') or presence_id='%q@%q') order by rcd desc", + uuid, mod_sofia_globals.hostname, profile->name, euser, host, euser, host); + } if (mod_sofia_globals.debug_presence > 0) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "CHECK SQL: %s@%s [%s]\nhits: %d\n", euser, host, sql, dh.hits); } + sofia_glue_execute_sql_callback(profile, profile->ireg_mutex, sql, sofia_presence_dialog_callback, &dh); + switch_safe_free(sql); From 32c73c082579330a16a654639938324524a2b74b Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 3 Feb 2012 11:05:22 -0600 Subject: [PATCH 023/292] FS-3873 --resolve cool someone is finally testing it --- src/mod/applications/mod_httapi/mod_httapi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mod/applications/mod_httapi/mod_httapi.c b/src/mod/applications/mod_httapi/mod_httapi.c index ab674cce46..4a42aec823 100644 --- a/src/mod/applications/mod_httapi/mod_httapi.c +++ b/src/mod/applications/mod_httapi/mod_httapi.c @@ -545,7 +545,7 @@ static switch_status_t parse_playback(const char *tag_name, client_t *client, sw if (input_timeout && status == SWITCH_STATUS_SUCCESS) { if ((status = switch_ivr_sleep(client->session, input_timeout, SWITCH_TRUE, args)) == SWITCH_STATUS_SUCCESS) { - status = SWITCH_STATUS_BREAK; + status = (input || !pause) ? SWITCH_STATUS_BREAK : SWITCH_STATUS_SUCCESS; } } @@ -622,7 +622,7 @@ static switch_status_t parse_playback(const char *tag_name, client_t *client, sw if (dmachine) { switch_ivr_dmachine_destroy(&dmachine); } - + printf("WTF %d\n", status); return status; } From 451e3eaa1fba7f84a877e10314381552df332ece Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 3 Feb 2012 11:21:40 -0600 Subject: [PATCH 024/292] FS-3858 --resolve there we go that's the detail we needed --- src/switch_core_media_bug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_core_media_bug.c b/src/switch_core_media_bug.c index cffeb0e2b9..b8e84661a0 100644 --- a/src/switch_core_media_bug.c +++ b/src/switch_core_media_bug.c @@ -332,7 +332,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_read(switch_media_bug_t *b } if (fill_read || fill_write) { - return SWITCH_STATUS_FALSE; + return SWITCH_STATUS_BREAK; } return SWITCH_STATUS_SUCCESS; From 320d04a9f8b213883a31ee9221ee9ef8451fae63 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 3 Feb 2012 11:50:24 -0600 Subject: [PATCH 025/292] remove warning --- src/mod/endpoints/mod_sofia/mod_sofia.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index 58869d49d5..0a49cc3730 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -2098,12 +2098,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi number = tech_pvt->caller_profile->destination_number; } - if (sofia_test_flag(tech_pvt, TFLAG_UPDATING_DISPLAY) || !switch_channel_test_flag(channel, CF_ANSWERED)) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_WARNING, - "Cannot send display update to %s " - "Did not receive reply to last update or channel has not been answered yet.\n", - switch_channel_get_name(tech_pvt->channel)); - } else { + if (!sofia_test_flag(tech_pvt, TFLAG_UPDATING_DISPLAY) && switch_channel_test_flag(channel, CF_ANSWERED)) { if (zstr(tech_pvt->last_sent_callee_id_name) || strcmp(tech_pvt->last_sent_callee_id_name, name) || zstr(tech_pvt->last_sent_callee_id_number) || strcmp(tech_pvt->last_sent_callee_id_number, number)) { From 2ea5686e4d03eab5f99242a99be28fa8afd8bb75 Mon Sep 17 00:00:00 2001 From: David Yat Sin Date: Fri, 3 Feb 2012 14:20:08 -0500 Subject: [PATCH 026/292] freetdm: DTMF duration not checked if duration is set to zero --- .../src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c b/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c index a329a04494..e4367b8f70 100644 --- a/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c +++ b/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c @@ -1476,18 +1476,25 @@ static __inline__ ftdm_status_t wanpipe_channel_process_event(ftdm_channel_t *fc if (tdm_api->wp_tdm_cmd.event.wp_tdm_api_event_dtmf_type == WAN_EC_TONE_PRESENT) { ftdm_set_flag(fchan, FTDM_CHANNEL_MUTE); - fchan->dtmfdetect.start_time = ftdm_current_time_in_ms(); + if (fchan->dtmfdetect.duration_ms) { + fchan->dtmfdetect.start_time = ftdm_current_time_in_ms(); + } } if (tdm_api->wp_tdm_cmd.event.wp_tdm_api_event_dtmf_type == WAN_EC_TONE_STOP) { ftdm_clear_flag(fchan, FTDM_CHANNEL_MUTE); if (ftdm_test_flag(fchan, FTDM_CHANNEL_INUSE)) { - ftdm_time_t diff = ftdm_current_time_in_ms() - fchan->dtmfdetect.start_time; - if (diff > fchan->dtmfdetect.duration_ms) { - ftdm_log_chan(fchan, FTDM_LOG_DEBUG, "Queuing wanpipe DTMF: %c (duration:%d min:%d)\n", tmp_dtmf[0], diff, fchan->dtmfdetect.duration_ms); + if (!fchan->dtmfdetect.duration_ms) { + /* Do not check if DTMF duration if min DTMF duration is 0 */ ftdm_channel_queue_dtmf(fchan, tmp_dtmf); } else { - ftdm_log_chan(fchan, FTDM_LOG_DEBUG, "Ignoring wanpipe DTMF: %c (duration:%d min:%d)\n", tmp_dtmf[0], diff, fchan->dtmfdetect.duration_ms); + ftdm_time_t diff = ftdm_current_time_in_ms() - fchan->dtmfdetect.start_time; + if (diff > fchan->dtmfdetect.duration_ms) { + ftdm_log_chan(fchan, FTDM_LOG_DEBUG, "Queuing wanpipe DTMF: %c (duration:%d min:%d)\n", tmp_dtmf[0], diff, fchan->dtmfdetect.duration_ms); + ftdm_channel_queue_dtmf(fchan, tmp_dtmf); + } else { + ftdm_log_chan(fchan, FTDM_LOG_DEBUG, "Ignoring wanpipe DTMF: %c (duration:%d min:%d)\n", tmp_dtmf[0], diff, fchan->dtmfdetect.duration_ms); + } } } } From 1015883e1b1b9e3878a556172226dcdfaf52c654 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 3 Feb 2012 15:23:46 -0600 Subject: [PATCH 027/292] commenting this out completely until a better solution is implemented. also FYI you should be refreshing .update on each commit that changes the lib or any of its mods to force a rebuild from the top level --- libs/freetdm/.update | 2 +- .../src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c | 22 +++++++------------ 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/libs/freetdm/.update b/libs/freetdm/.update index e9475b68ed..b537cc4f2d 100644 --- a/libs/freetdm/.update +++ b/libs/freetdm/.update @@ -1 +1 @@ -Fri Oct 3 17:54:41 EDT 2008 +Fri Feb 3 11:55:29 PST 2012 diff --git a/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c b/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c index e4367b8f70..3c53b0edbc 100644 --- a/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c +++ b/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c @@ -1476,26 +1476,20 @@ static __inline__ ftdm_status_t wanpipe_channel_process_event(ftdm_channel_t *fc if (tdm_api->wp_tdm_cmd.event.wp_tdm_api_event_dtmf_type == WAN_EC_TONE_PRESENT) { ftdm_set_flag(fchan, FTDM_CHANNEL_MUTE); - if (fchan->dtmfdetect.duration_ms) { - fchan->dtmfdetect.start_time = ftdm_current_time_in_ms(); - } + //fchan->dtmfdetect.start_time = ftdm_current_time_in_ms(); } if (tdm_api->wp_tdm_cmd.event.wp_tdm_api_event_dtmf_type == WAN_EC_TONE_STOP) { ftdm_clear_flag(fchan, FTDM_CHANNEL_MUTE); if (ftdm_test_flag(fchan, FTDM_CHANNEL_INUSE)) { - if (!fchan->dtmfdetect.duration_ms) { - /* Do not check if DTMF duration if min DTMF duration is 0 */ + //ftdm_time_t diff = ftdm_current_time_in_ms() - fchan->dtmfdetect.start_time; + //if (diff > fchan->dtmfdetect.duration_ms) { + //ftdm_log_chan(fchan, FTDM_LOG_DEBUG, "Queuing wanpipe DTMF: %c (duration:%d min:%d)\n", tmp_dtmf[0], diff, fchan->dtmfdetect.duration_ms); + ftdm_log_chan(fchan, FTDM_LOG_DEBUG, "Queuing wanpipe DTMF: %c\n", tmp_dtmf[0]); ftdm_channel_queue_dtmf(fchan, tmp_dtmf); - } else { - ftdm_time_t diff = ftdm_current_time_in_ms() - fchan->dtmfdetect.start_time; - if (diff > fchan->dtmfdetect.duration_ms) { - ftdm_log_chan(fchan, FTDM_LOG_DEBUG, "Queuing wanpipe DTMF: %c (duration:%d min:%d)\n", tmp_dtmf[0], diff, fchan->dtmfdetect.duration_ms); - ftdm_channel_queue_dtmf(fchan, tmp_dtmf); - } else { - ftdm_log_chan(fchan, FTDM_LOG_DEBUG, "Ignoring wanpipe DTMF: %c (duration:%d min:%d)\n", tmp_dtmf[0], diff, fchan->dtmfdetect.duration_ms); - } - } + //} else { + //ftdm_log_chan(fchan, FTDM_LOG_DEBUG, "Ignoring wanpipe DTMF: %c (duration:%d min:%d)\n", tmp_dtmf[0], diff, fchan->dtmfdetect.duration_ms); + //} } } } From 65fc2f8ac13c61ed767f07d8309f384bb9f1ced8 Mon Sep 17 00:00:00 2001 From: Brian West Date: Fri, 3 Feb 2012 23:40:53 -0600 Subject: [PATCH 028/292] clean up switch.conf and add all the missing options needs more docs --- conf/autoload_configs/switch.conf.xml | 172 ++++++++++++++++---------- 1 file changed, 108 insertions(+), 64 deletions(-) diff --git a/conf/autoload_configs/switch.conf.xml b/conf/autoload_configs/switch.conf.xml index b0f0c53fef..64f3d6fa71 100644 --- a/conf/autoload_configs/switch.conf.xml +++ b/conf/autoload_configs/switch.conf.xml @@ -16,32 +16,32 @@ - - + + - + - + - + - + - - + + - - - - - - + + + + + + + + + + + + + + + + + + + If you want to send out voicemail notifications via Windows you'll need to change the mailer-app + variable to the setting below: + + + + Do not change mailer-app-args. + You will also need to download a sendmail clone for Windows (msmtp). This version works without issue: + http://msmtp.sourceforge.net/index.html. Download and copy the .exe to %winddir%\system32. + You'll need to create a small config file for smtp credentials (host name, authentication, tls, etc.) in + %USERPROFILE%\Application Data\ called "msmtprc.txt". Below is a sample copy of this file: + + ################################### + # The SMTP server of the provider. + account provider + host smtp.myisp.com + from john@myisp.com + auth login + user johndoe + password mypassword + + # Set a default account + account default : provider + ################################### + + --> + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + + + + + + + From 8b3dd5cc1c25de0b8e298983c80bad5640dcaba3 Mon Sep 17 00:00:00 2001 From: Steve Underwood Date: Sat, 4 Feb 2012 20:33:06 +0800 Subject: [PATCH 029/292] Fixed issue where junk T.38 received after a FAX exchange is totally completed s not simply ignored. --- libs/spandsp/src/t38_terminal.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libs/spandsp/src/t38_terminal.c b/libs/spandsp/src/t38_terminal.c index 836210ca9f..427997cac2 100644 --- a/libs/spandsp/src/t38_terminal.c +++ b/libs/spandsp/src/t38_terminal.c @@ -234,6 +234,10 @@ static int process_rx_indicator(t38_core_state_t *t, void *user_data, int indica s = (t38_terminal_state_t *) user_data; fe = &s->t38_fe; + /* Protect against T.38 stuff arriving after we've actually finished. */ + if (fe->current_rx_type == T30_MODEM_DONE) + return 0; + if (t->current_rx_indicator == indicator) { /* This is probably due to the far end repeating itself, or slipping @@ -332,6 +336,11 @@ static int process_rx_data(t38_core_state_t *t, void *user_data, int data_type, s = (t38_terminal_state_t *) user_data; fe = &s->t38_fe; + + /* Protect against T.38 stuff arriving after we've actually finished. */ + if (fe->current_rx_type == T30_MODEM_DONE) + return 0; + /* In termination mode we don't care very much what the data type is apart from a couple of special cases. */ switch (data_type) From 676768371143b29edc4cca8b6b89203f1f1de89e Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Sat, 4 Feb 2012 10:19:21 -0600 Subject: [PATCH 030/292] FS-3862 --resolve --- conf/dialplan/default.xml | 2 +- conf/dialplan/public.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/dialplan/default.xml b/conf/dialplan/default.xml index af7344837e..fb6713d0ce 100644 --- a/conf/dialplan/default.xml +++ b/conf/dialplan/default.xml @@ -145,7 +145,7 @@ - + diff --git a/conf/dialplan/public.xml b/conf/dialplan/public.xml index b54aff9b4f..e44006e33b 100644 --- a/conf/dialplan/public.xml +++ b/conf/dialplan/public.xml @@ -27,7 +27,7 @@ - + From 9b086c4beac23e4bd28e225eae0b0d2336e1c6b3 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 6 Feb 2012 11:59:57 -0600 Subject: [PATCH 031/292] FS-3881 try this, i think the contact in the notify is causing the phone to change the destination for future subs --- src/mod/endpoints/mod_sofia/sofia_presence.c | 24 +++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 2818d7c5f6..75c663ef07 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -1835,7 +1835,7 @@ static void _send_presence_notify(sofia_profile_t *profile, sofia_destination_t *dst = NULL; char *contact_str, *contact, *user_via = NULL; - char *route_uri = NULL, *o_contact_dup = NULL, *tmp; + char *route_uri = NULL, *o_contact_dup = NULL, *tmp, *to_uri, *dcs = NULL; const char *tp; tmp = (char *)o_contact; @@ -1882,6 +1882,27 @@ static void _send_presence_notify(sofia_profile_t *profile, } else { contact_str = our_contact; } + + + if ((to_uri = sofia_glue_get_url_from_contact((char *)full_to, 1))) { + char *p; + + if ((p = strstr(to_uri, "sip:"))) { + char *q; + + p += 4; + if ((q = strchr(p, '@'))) { + *q++ = '\0'; + + if ((dcs = switch_string_replace(contact_str, "mod_sofia", p))) { + contact_str = dcs; + } + + } + } + + free(to_uri); + } dst = sofia_glue_get_destination((char *) o_contact); switch_assert(dst); @@ -1980,6 +2001,7 @@ static void _send_presence_notify(sofia_profile_t *profile, switch_safe_free(route_uri); + switch_safe_free(dcs); switch_safe_free(contact); sofia_glue_free_destination(dst); From e5d1dd7529ddd09016eeedd79bd1a2872023439a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 6 Feb 2012 12:02:48 -0600 Subject: [PATCH 032/292] FS-3879 --resolve --- src/mod/endpoints/mod_sofia/sofia_glue.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index c8422e1eeb..ab68e108be 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -4398,9 +4398,12 @@ uint8_t sofia_glue_negotiate_sdp(switch_core_session_t *session, const char *r_s continue; } - if (!strcasecmp(attr->a_name, "sendonly") || !strcasecmp(attr->a_name, "inactive")) { + if (!strcasecmp(attr->a_name, "sendonly")) { sendonly = 1; switch_channel_set_variable(tech_pvt->channel, "media_audio_mode", "recvonly"); + } else if (!strcasecmp(attr->a_name, "inactive")) { + sendonly = 1; + switch_channel_set_variable(tech_pvt->channel, "media_audio_mode", "inactive"); } else if (!strcasecmp(attr->a_name, "recvonly")) { switch_channel_set_variable(tech_pvt->channel, "media_audio_mode", "sendonly"); recvonly = 1; From d2c9fb5f7d11d4dcd8709a3042f65fbbfa5933c3 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 6 Feb 2012 14:12:22 -0600 Subject: [PATCH 033/292] FS-3878 --resolve --- src/mod/applications/mod_voicemail/mod_voicemail.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/applications/mod_voicemail/mod_voicemail.c b/src/mod/applications/mod_voicemail/mod_voicemail.c index f456ceecc3..8461f480bc 100644 --- a/src/mod/applications/mod_voicemail/mod_voicemail.c +++ b/src/mod/applications/mod_voicemail/mod_voicemail.c @@ -4378,7 +4378,7 @@ SWITCH_STANDARD_API(voicemail_inject_api_function) static int api_del_callback(void *pArg, int argc, char **argv, char **columnNames) { - unlink(argv[2]); + unlink(argv[3]); return 0; } From 1815d4d06fa016ec41035bab205c4592364726e6 Mon Sep 17 00:00:00 2001 From: Christopher Rienzo Date: Tue, 7 Feb 2012 16:29:15 +0000 Subject: [PATCH 034/292] use correct #includes for posix timer API --- src/mod/timers/mod_posix_timer/mod_posix_timer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mod/timers/mod_posix_timer/mod_posix_timer.c b/src/mod/timers/mod_posix_timer/mod_posix_timer.c index f5b9a61a1f..1ba3e23015 100644 --- a/src/mod/timers/mod_posix_timer/mod_posix_timer.c +++ b/src/mod/timers/mod_posix_timer/mod_posix_timer.c @@ -28,8 +28,8 @@ * */ #include -#include -#include +#include +#include SWITCH_MODULE_LOAD_FUNCTION(mod_posix_timer_load); SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_posix_timer_shutdown); From 8f05f098cf04baf80d9c504f0090500a83d216a0 Mon Sep 17 00:00:00 2001 From: Christopher Rienzo Date: Tue, 7 Feb 2012 16:45:54 +0000 Subject: [PATCH 035/292] use union sigval instead of sigval_t for mod_posix_timer --- src/mod/timers/mod_posix_timer/mod_posix_timer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/timers/mod_posix_timer/mod_posix_timer.c b/src/mod/timers/mod_posix_timer/mod_posix_timer.c index 1ba3e23015..425e98c93d 100644 --- a/src/mod/timers/mod_posix_timer/mod_posix_timer.c +++ b/src/mod/timers/mod_posix_timer/mod_posix_timer.c @@ -59,7 +59,7 @@ static struct { /** * Notified by POSIX timer of a tick */ -static void posix_timer_notify(sigval_t data) +static void posix_timer_notify(union sigval data) { interval_timer_t *it = (interval_timer_t *)data.sival_ptr; switch_mutex_lock(it->mutex); From 9b02315282a639f2985f8085071367298c8521de Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 7 Feb 2012 11:10:42 -0600 Subject: [PATCH 036/292] add presence-disable-early sofia option to send non-specifc presence messages w/o special case for early --- src/mod/endpoints/mod_sofia/mod_sofia.h | 1 + src/mod/endpoints/mod_sofia/sofia.c | 12 ++++++++++++ src/mod/endpoints/mod_sofia/sofia_presence.c | 8 +++++++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index 1860c08290..0a2f672df6 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -262,6 +262,7 @@ typedef enum { PFLAG_SHUTDOWN, PFLAG_PRESENCE_MAP, PFLAG_OPTIONS_RESPOND_503_ON_BUSY, + PFLAG_PRESENCE_DISABLE_EARLY, /* No new flags below this line */ PFLAG_MAX } PFLAGS; diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 3dd28d7f60..0668eedf57 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -3035,6 +3035,12 @@ switch_status_t reconfig_sofia(sofia_profile_t *profile) } else { sofia_clear_pflag(profile, PFLAG_T38_PASSTHRU); } + } else if (!strcasecmp(var, "presence-disable-early")) { + if (switch_true(val)) { + sofia_set_pflag(profile, PFLAG_PRESENCE_DISABLE_EARLY); + } else { + sofia_clear_pflag(profile, PFLAG_PRESENCE_DISABLE_EARLY); + } } else if (!strcasecmp(var, "ignore-183nosdp")) { if (switch_true(val)) { sofia_set_pflag(profile, PFLAG_IGNORE_183NOSDP); @@ -3809,6 +3815,12 @@ switch_status_t config_sofia(int reload, char *profile_name) } else { sofia_clear_pflag(profile, PFLAG_T38_PASSTHRU); } + } else if (!strcasecmp(var, "presence-disable-early")) { + if (switch_true(val)) { + sofia_set_pflag(profile, PFLAG_PRESENCE_DISABLE_EARLY); + } else { + sofia_clear_pflag(profile, PFLAG_PRESENCE_DISABLE_EARLY); + } } else if (!strcasecmp(var, "ignore-183nosdp")) { if (switch_true(val)) { sofia_set_pflag(profile, PFLAG_IGNORE_183NOSDP); diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 75c663ef07..683903fc66 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -2499,11 +2499,17 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * if (!strcasecmp(astate, "answered")) { astate = "confirmed"; } - + if (!strcasecmp(astate, "hangup")) { astate = "terminated"; } + if (!sofia_test_pflag(profile, PFLAG_PRESENCE_DISABLE_EARLY)) { + if (!strcasecmp(astate, "ringing") || !strcasecmp(astate, "early")) { + astate = "confirmed"; + } + } + if (is_dialog) { if (!strcasecmp(astate, "ringing")) { From a14c46c38cf492b5f106e39a22674b4f7fd954c8 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 7 Feb 2012 11:25:23 -0600 Subject: [PATCH 037/292] FS-3886 --resolve --- src/switch_event.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/switch_event.c b/src/switch_event.c index 7e8a8676ba..25bab3185a 100644 --- a/src/switch_event.c +++ b/src/switch_event.c @@ -85,6 +85,7 @@ static switch_mutex_t *EVENT_QUEUE_MUTEX = NULL; static switch_hash_t *CUSTOM_HASH = NULL; static int THREAD_COUNT = 0; static int SYSTEM_RUNNING = 0; +static uint64_t EVENT_SEQUENCE_NR = 0; #ifdef SWITCH_EVENT_RECYCLE static switch_queue_t *EVENT_RECYCLE_QUEUE = NULL; static switch_queue_t *EVENT_HEADER_RECYCLE_QUEUE = NULL; @@ -1740,6 +1741,10 @@ SWITCH_DECLARE(void) switch_event_prep_for_delivery_detailed(const char *file, c switch_size_t retsize; switch_time_t ts = switch_micro_time_now(); + switch_mutex_lock(EVENT_QUEUE_MUTEX); + EVENT_SEQUENCE_NR++; + switch_mutex_unlock(EVENT_QUEUE_MUTEX); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Event-Name", switch_event_name(event->event_id)); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Core-UUID", switch_core_get_uuid()); @@ -1757,6 +1762,7 @@ SWITCH_DECLARE(void) switch_event_prep_for_delivery_detailed(const char *file, c switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Event-Calling-File", switch_cut_path(file)); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Event-Calling-Function", func); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Event-Calling-Line-Number", "%d", line); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Event-Sequence", "%" SWITCH_UINT64_T_FMT, (uint64_t) EVENT_SEQUENCE_NR); } From b6ec1271940d744dd99beb7b806be6a667cc1f13 Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Tue, 7 Feb 2012 16:44:55 +0100 Subject: [PATCH 038/292] [ftmod_misdn] Extend misdn_event_types[] and use a helper macro. Add missing mISDN event/message types (e.g. MPH_INFORMATION_IND) and use a helper macro (MISDN_EVENT_TYPE) to define the entries, like we already do for misdn_control_types[]. Signed-off-by: Stefan Knoblich --- .../src/ftmod/ftmod_misdn/ftmod_misdn.c | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c index 9673549f79..e78facf287 100644 --- a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c +++ b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c @@ -96,18 +96,27 @@ const static struct { const int id; const char *name; } misdn_event_types[] = { - { PH_DATA_REQ, "PH_DATA_REQ" }, - { PH_DATA_IND, "PH_DATA_IND" }, - { PH_DATA_CNF, "PH_DATA_CNF" }, - { PH_CONTROL_REQ, "PH_CONTROL_REQ" }, - { PH_CONTROL_IND, "PH_CONTROL_IND" }, - { PH_CONTROL_CNF, "PH_CONTROL_CNF" }, - { PH_ACTIVATE_REQ, "PH_ACTIVATE_REQ" }, - { PH_ACTIVATE_IND, "PH_ACTIVATE_IND" }, - { PH_ACTIVATE_CNF, "PH_ACTIVATE_CNF" }, - { PH_DEACTIVATE_REQ, "PH_DEACTIVATE_REQ" }, - { PH_DEACTIVATE_IND, "PH_DEACTIVATE_IND" }, - { PH_DEACTIVATE_CNF, "PH_DEACTIVATE_CNF" }, +#define MISDN_EVENT_TYPE(x) { x, #x } + MISDN_EVENT_TYPE(PH_DATA_REQ), + MISDN_EVENT_TYPE(PH_DATA_IND), + MISDN_EVENT_TYPE(PH_DATA_CNF), + MISDN_EVENT_TYPE(PH_DATA_E_IND), + MISDN_EVENT_TYPE(PH_CONTROL_REQ), + MISDN_EVENT_TYPE(PH_CONTROL_IND), + MISDN_EVENT_TYPE(PH_CONTROL_CNF), + MISDN_EVENT_TYPE(PH_ACTIVATE_REQ), + MISDN_EVENT_TYPE(PH_ACTIVATE_IND), + MISDN_EVENT_TYPE(PH_ACTIVATE_CNF), + MISDN_EVENT_TYPE(PH_DEACTIVATE_REQ), + MISDN_EVENT_TYPE(PH_DEACTIVATE_IND), + MISDN_EVENT_TYPE(PH_DEACTIVATE_CNF), + MISDN_EVENT_TYPE(MPH_ACTIVATE_REQ), + MISDN_EVENT_TYPE(MPH_ACTIVATE_IND), + MISDN_EVENT_TYPE(MPH_DEACTIVATE_REQ), + MISDN_EVENT_TYPE(MPH_DEACTIVATE_IND), + MISDN_EVENT_TYPE(MPH_INFORMATION_REQ), + MISDN_EVENT_TYPE(MPH_INFORMATION_IND), +#undef MISDN_EVENT_TYPE }; static const char *misdn_event2str(const int event) From 9e0928a7ea2bc718e7204d846c05d37056e3a4f0 Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Tue, 7 Feb 2012 16:49:31 +0100 Subject: [PATCH 039/292] [ftmod_misdn] Undefine MISDN_CONTROL_TYPE helper macro after use. No reason to keep it around for longer. Signed-off-by: Stefan Knoblich --- libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c index e78facf287..dcba43512e 100644 --- a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c +++ b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c @@ -137,6 +137,7 @@ const static struct { } misdn_control_types[] = { #define MISDN_CONTROL_TYPE(x) { x, #x } MISDN_CONTROL_TYPE(DTMF_HFC_COEF), +#undef MISDN_CONTROL_TYPE }; #if 0 /* unused for now */ From fd3ebc7ae3c83b9c4ca0d6b9dec135076daf7da4 Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Tue, 7 Feb 2012 18:22:30 +0100 Subject: [PATCH 040/292] [ftmod_misdn] Handle MPH_INFORMATION_IND during channel activation. Add MISDN_MSG_DATA() helper macro for easy access to mISDN message payload. Add forward declaration of misdn_handle_mph_information_ind() and use it in misdn_activate_channel(). Signed-off-by: Stefan Knoblich --- libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c index dcba43512e..239ec400f7 100644 --- a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c +++ b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c @@ -91,6 +91,7 @@ typedef enum { #define MISDN_IS_RAW(x) (x & MISDN_CAPS_RAW) #define MISDN_IS_HDLC(x) (x & MISDN_CAPS_HDLC) +#define MISDN_MSG_DATA(x) ((void *)((unsigned char *)(x) + MISDN_HEADER_LEN)) const static struct { const int id; @@ -199,6 +200,7 @@ struct misdn_chan_private { #define ftdm_span_io_private(x) ((x)->io_data) static ftdm_status_t misdn_handle_incoming(ftdm_channel_t *ftdmchan, const char *rbuf, const int size); +static int misdn_handle_mph_information_ind(ftdm_channel_t *chan, const struct mISDNhead *hh, const void *data, const int data_len); /*********************************************************************************** * mISDN interface functions @@ -461,6 +463,11 @@ static ftdm_status_t misdn_activate_channel(ftdm_channel_t *chan, int activate) ftdm_log_chan(chan, FTDM_LOG_DEBUG, "mISDN got '%s' echo while waiting for %s confirmation (id: %#x)\n", misdn_event2str(hh->prim), (activate) ? "activation" : "deactivation", hh->id); break; + case MPH_INFORMATION_IND: + ftdm_log_chan(chan, FTDM_LOG_DEBUG, "mISDN ignoring event '%s (%#x)' while waiting for %s confirmation\n", + misdn_event2str(hh->prim), hh->prim, (activate) ? "activation" : "deactivation"); + misdn_handle_mph_information_ind(chan, hh, MISDN_MSG_DATA(buf), retval - MISDN_HEADER_LEN); + break; default: /* other messages, ignore */ ftdm_log_chan(chan, FTDM_LOG_DEBUG, "mISDN ignoring event '%s' while waiting for %s confirmation\n", misdn_event2str(hh->prim), (activate) ? "activation" : "deactivation"); From 452c13573d7c7a37fa8d877b51a07e4448d68ccd Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Tue, 7 Feb 2012 18:24:12 +0100 Subject: [PATCH 041/292] [ftmod_misdn] Include mISDN message primitive id in channel activation log messages. Signed-off-by: Stefan Knoblich --- libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c index 239ec400f7..643e6daeb8 100644 --- a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c +++ b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c @@ -444,8 +444,8 @@ static ftdm_status_t misdn_activate_channel(ftdm_channel_t *chan, int activate) return FTDM_FAIL; } //#ifdef MISDN_DEBUG_EVENTS - ftdm_log_chan(chan, FTDM_LOG_DEBUG, "mISDN got event '%s' while waiting for %s confirmation\n", - misdn_event2str(hh->prim), (activate) ? "activation" : "deactivation"); + ftdm_log_chan(chan, FTDM_LOG_DEBUG, "mISDN got event '%s (%#x)' while waiting for %s confirmation\n", + misdn_event2str(hh->prim), hh->prim, (activate) ? "activation" : "deactivation"); //#endif switch (hh->prim) { case PH_ACTIVATE_IND: /* success (or not): save last response, */ @@ -469,8 +469,8 @@ static ftdm_status_t misdn_activate_channel(ftdm_channel_t *chan, int activate) misdn_handle_mph_information_ind(chan, hh, MISDN_MSG_DATA(buf), retval - MISDN_HEADER_LEN); break; default: /* other messages, ignore */ - ftdm_log_chan(chan, FTDM_LOG_DEBUG, "mISDN ignoring event '%s' while waiting for %s confirmation\n", - misdn_event2str(hh->prim), (activate) ? "activation" : "deactivation"); + ftdm_log_chan(chan, FTDM_LOG_DEBUG, "mISDN ignoring event '%s (%#x)' while waiting for %s confirmation\n", + misdn_event2str(hh->prim), hh->prim, (activate) ? "activation" : "deactivation"); break; } } From 810f0d4eaa4c9fc072fe8777a99086f2024d805a Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Tue, 7 Feb 2012 18:25:29 +0100 Subject: [PATCH 042/292] [ftmod_misdn] Make misdn_handle_mph_information_ind() cope with hfcsusb-style MPH_INFORMATION_IND messages. Only two mISDN hardware drivers emit MPH_INFORMATION_IND messages and both use a different payload: - hfcsusb (HFC-based USB dongle) sends a set of ph_info + ph_info_ch structures which contain the complete state information of the port (including internal hw-specific state and flags). - hfcmulti which sends a single integer, a single L1_SIGNAL_* event. We now try to guess the type of message from the payload length. The hfcmulti signals are converted to FreeTDM alarm flags; the hfcsusb state/flags are defined in kernel internal hw-specific headers and are ignored ATM (todo). Signed-off-by: Stefan Knoblich --- .../src/ftmod/ftmod_misdn/ftmod_misdn.c | 118 ++++++++++++------ 1 file changed, 78 insertions(+), 40 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c index 643e6daeb8..306f884c05 100644 --- a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c +++ b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c @@ -622,50 +622,88 @@ static int misdn_handle_ph_control_ind(ftdm_channel_t *chan, const struct mISDNh static int misdn_handle_mph_information_ind(ftdm_channel_t *chan, const struct mISDNhead *hh, const void *data, const int data_len) { struct misdn_chan_private *priv = ftdm_chan_io_private(chan); - int alarm_flags, value; - if (data_len < sizeof(value)) { - ftdm_log_chan_msg(chan, FTDM_LOG_ERROR, "mISDN MPH_INFORMATION_IND message is too short\n"); + /* + * mISDN has some inconsistency issues here. + * + * There are only two drivers that emit MPH_INFORMATION_IND messages, + * hfcsusb and hfcmulti. The former sends a set of ph_info and ph_info_ch structures, + * while the latter just sends an int containing the current L1_SIGNAL_* event id. + * + * The flags and state information in the ph_info and ph_info_ch structures + * are defined in kernel internal hw-specific headers (mISDNhw.h). + * + * Use the payload size to guess the type of message. + */ + if (data_len >= sizeof(struct ph_info)) { + /* complete port status, hfcsusb sends this */ + struct ph_info *info = (struct ph_info *)data; + struct ph_info_ch *bch_info = NULL; + + if (data_len < (sizeof(*info) + info->dch.num_bch * sizeof(*bch_info))) { + ftdm_log_chan_msg(chan, FTDM_LOG_ERROR, "mISDN MPH_INFORMATION_IND message is too short\n"); + return FTDM_FAIL; + } + bch_info = &info->bch[0]; + + ftdm_log_chan(chan, FTDM_LOG_DEBUG, "mISDN port state:\n\tD-Chan state:\t%hu\n\tD-Chan flags:\t%#x\n\tD-Chan proto:\t%hu\n\tD-Chan active:\t%s\n", + info->dch.state, info->dch.ch.Flags, info->dch.ch.protocol, info->dch.ch.Flags & (1 << 6) ? "yes" : "no"); + + /* TODO: try to translate this to a usable set of alarm flags */ + + } else if (data_len == sizeof(int)) { + /* alarm info, sent by hfcmulti */ + int value = *(int *)data; + int alarm_flags = chan->alarm_flags; + + if (data_len < sizeof(value)) { + ftdm_log_chan_msg(chan, FTDM_LOG_ERROR, "mISDN MPH_INFORMATION_IND message is too short\n"); + return FTDM_FAIL; + } + + switch (value) { + case L1_SIGNAL_LOS_ON: + alarm_flags |= FTDM_ALARM_RED; + break; + case L1_SIGNAL_LOS_OFF: + alarm_flags &= ~FTDM_ALARM_RED; + break; + case L1_SIGNAL_AIS_ON: + alarm_flags |= FTDM_ALARM_AIS; + break; + case L1_SIGNAL_AIS_OFF: + alarm_flags &= ~FTDM_ALARM_AIS; + break; + case L1_SIGNAL_RDI_ON: + alarm_flags |= FTDM_ALARM_YELLOW; + break; + case L1_SIGNAL_RDI_OFF: + alarm_flags &= ~FTDM_ALARM_YELLOW; + break; + case L1_SIGNAL_SLIP_RX: + priv->slip_rx_cnt++; + break; + case L1_SIGNAL_SLIP_TX: + priv->slip_tx_cnt++; + break; + default: + ftdm_log_chan(chan, FTDM_LOG_ERROR, "mISDN unknown MPH_INFORMATION_IND signal: %#04x\n", + value); + return FTDM_FAIL; + } + + /* check whether alarm status has changed, update channel flags if it has */ + if ((value = (alarm_flags ^ chan->alarm_flags))) { + ftdm_log_chan(chan, FTDM_LOG_DEBUG, "mISDN alarm flags have changed %#x -> %#x\n", + chan->alarm_flags, alarm_flags); + chan->alarm_flags ^= value; + } + } else { + ftdm_log_chan(chan, FTDM_LOG_ERROR, "mISDN sent MPH_INFORMATION_IND message with unknown size %d\n", + data_len); return FTDM_FAIL; } - value = *(int *)data; - alarm_flags = chan->alarm_flags; - switch (value) { - case L1_SIGNAL_LOS_ON: - alarm_flags |= FTDM_ALARM_RED; - break; - case L1_SIGNAL_LOS_OFF: - alarm_flags &= ~FTDM_ALARM_RED; - break; - case L1_SIGNAL_AIS_ON: - alarm_flags |= FTDM_ALARM_AIS; - break; - case L1_SIGNAL_AIS_OFF: - alarm_flags &= ~FTDM_ALARM_AIS; - break; - case L1_SIGNAL_RDI_ON: - alarm_flags |= FTDM_ALARM_YELLOW; - break; - case L1_SIGNAL_RDI_OFF: - alarm_flags &= ~FTDM_ALARM_YELLOW; - break; - case L1_SIGNAL_SLIP_RX: - priv->slip_rx_cnt++; - break; - case L1_SIGNAL_SLIP_TX: - priv->slip_tx_cnt++; - break; - default: - ftdm_log_chan(chan, FTDM_LOG_ERROR, "mISDN unknown MPH_INFORMATION_IND message: %d\n", - value); - return FTDM_FAIL; - } - if ((value = (alarm_flags ^ chan->alarm_flags))) { - ftdm_log_chan(chan, FTDM_LOG_DEBUG, "mISDN alarm flags have changed %#x -> %#x\n", - chan->alarm_flags, alarm_flags); - chan->alarm_flags ^= value; - } return FTDM_SUCCESS; } From 4bb1ab0113c371f1aaa29981f9b19f7b75fbb919 Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Tue, 7 Feb 2012 18:38:09 +0100 Subject: [PATCH 043/292] [ftmod_misdn] Add some TODO items at the top of ftmod_misdn.c. Signed-off-by: Stefan Knoblich --- libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c index 306f884c05..06caeef7ae 100644 --- a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c +++ b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c @@ -25,6 +25,15 @@ * NOTE: This is intended as a Layer 1 interface only, signaling * is handled by other modules (e.g. ftmod_libpri or ftmod_isdn). */ +/* + * TODO: + * - Use a fifo and PH_DATA_CNF for b-channel write polling (drop timerfd) + * + * - Disable L1 idle deactivation on BRI PTMP with IMGL1HOLD ioctl(? optional) + * + * - Add hfcsusb specific state + flag defines and try to do something useful with + * it in misdn_handle_mph_information_ind(). + */ #include #include From 18289fa0131c18753996dc99a09d5590c206dc8f Mon Sep 17 00:00:00 2001 From: Michael S Collins Date: Tue, 7 Feb 2012 10:22:35 -0800 Subject: [PATCH 044/292] mod_voicemail: Change vm_announce_cid to be true/false and utilize vm_play_phone_number_macro --- conf/lang/en/vm/sounds.xml | 12 ++++++++++-- src/mod/applications/mod_voicemail/mod_voicemail.c | 8 ++------ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/conf/lang/en/vm/sounds.xml b/conf/lang/en/vm/sounds.xml index 976fcde32d..449ad55f2d 100644 --- a/conf/lang/en/vm/sounds.xml +++ b/conf/lang/en/vm/sounds.xml @@ -315,7 +315,7 @@ - + @@ -331,9 +331,17 @@ + + + + + - + + + + diff --git a/src/mod/applications/mod_voicemail/mod_voicemail.c b/src/mod/applications/mod_voicemail/mod_voicemail.c index 8461f480bc..df68f28166 100644 --- a/src/mod/applications/mod_voicemail/mod_voicemail.c +++ b/src/mod/applications/mod_voicemail/mod_voicemail.c @@ -1544,8 +1544,6 @@ static switch_status_t listen_file(switch_core_session_t *session, vm_profile_t char cid_buf[1024] = ""; if (switch_channel_ready(channel)) { - const char *vm_announce_cid = NULL; - switch_snprintf(cid_buf, sizeof(cid_buf), "%s|%s", cbt->cid_number, cbt->cid_name); msg.from = __FILE__; @@ -1556,10 +1554,8 @@ static switch_status_t listen_file(switch_core_session_t *session, vm_profile_t cid_buf, switch_channel_get_name(channel)); switch_core_session_receive_message(session, &msg); - if (!zstr(cbt->cid_number) && (vm_announce_cid = switch_channel_get_variable(channel, "vm_announce_cid"))) { - switch_ivr_play_file(session, NULL, vm_announce_cid, NULL); - switch_ivr_sleep(session, 500, SWITCH_TRUE, NULL); - switch_ivr_say(session, cbt->cid_number, NULL, "name_spelled", "pronounced", NULL, NULL); + if (!zstr(cbt->cid_number) && (switch_true(switch_channel_get_variable(channel, "vm_announce_cid")))) { + TRY_CODE(switch_ivr_phrase_macro(session, VM_SAY_PHONE_NUMBER_MACRO, cbt->cid_number, NULL, NULL)); } args.input_callback = cancel_on_dtmf; From 9a8524924ab682aca46411bdbdc5ba9c90a55179 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 7 Feb 2012 13:03:55 -0600 Subject: [PATCH 045/292] FS-3889 --resolve --- src/mod/applications/mod_spandsp/mod_spandsp_fax.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mod/applications/mod_spandsp/mod_spandsp_fax.c b/src/mod/applications/mod_spandsp/mod_spandsp_fax.c index f1d56a92c5..7cb0982591 100644 --- a/src/mod/applications/mod_spandsp/mod_spandsp_fax.c +++ b/src/mod/applications/mod_spandsp/mod_spandsp_fax.c @@ -341,6 +341,7 @@ static int phase_b_handler(t30_state_t *s, void *user_data, int result) /* Fire event */ if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, pvt->app_mode == FUNCTION_TX ? SPANDSP_EVENT_TXFAXNEGOCIATERESULT : SPANDSP_EVENT_RXFAXNEGOCIATERESULT) == SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "uuid", switch_core_session_get_uuid(session)); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-transfer-rate", fax_transfer_rate); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-ecm-used", (t30_stats.error_correcting_mode) ? "on" : "off"); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-local-station-id", local_ident); @@ -437,6 +438,7 @@ static int phase_d_handler(t30_state_t *s, void *user_data, int msg) switch_channel_execute_on(channel, "execute_on_fax_phase_d"); if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, pvt->app_mode == FUNCTION_TX ? SPANDSP_EVENT_TXFAXPAGERESULT : SPANDSP_EVENT_RXFAXPAGERESULT) == SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "uuid", switch_core_session_get_uuid(session)); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-document-transferred-pages", fax_document_transferred_pages); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-image-resolution", fax_image_resolution); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-image-size", fax_image_size); From 1377b9c84d966448f0f9f786f6ca28da3b424126 Mon Sep 17 00:00:00 2001 From: David Yat Sin Date: Tue, 7 Feb 2012 14:28:47 -0500 Subject: [PATCH 046/292] freetdm: support for dtmf_on_start --- libs/freetdm/src/ftdm_io.c | 17 +++++++++++++ .../src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c | 25 +++++++++++++------ libs/freetdm/src/include/freetdm.h | 1 + libs/freetdm/src/include/private/ftdm_core.h | 2 ++ 4 files changed, 37 insertions(+), 8 deletions(-) diff --git a/libs/freetdm/src/ftdm_io.c b/libs/freetdm/src/ftdm_io.c index 07def33034..2d8ca00380 100644 --- a/libs/freetdm/src/ftdm_io.c +++ b/libs/freetdm/src/ftdm_io.c @@ -4610,6 +4610,9 @@ FT_DECLARE(ftdm_status_t) ftdm_configure_span_channels(ftdm_span_t *span, const } span->channels[chan_index]->dtmfdetect.duration_ms = chan_config->dtmfdetect_ms; + if (chan_config->dtmf_on_start) { + span->channels[chan_index]->dtmfdetect.trigger_on_start = 1; + } } return FTDM_SUCCESS; @@ -4808,9 +4811,23 @@ static ftdm_status_t load_config(void) chan_config.debugdtmf = ftdm_true(val); ftdm_log(FTDM_LOG_DEBUG, "Setting debugdtmf to '%s'\n", chan_config.debugdtmf ? "yes" : "no"); } else if (!strncasecmp(var, "dtmfdetect_ms", sizeof("dtmfdetect_ms")-1)) { + if (chan_config.dtmf_on_start == FTDM_TRUE) { + chan_config.dtmf_on_start = FTDM_FALSE; + ftdm_log(FTDM_LOG_WARNING, "dtmf_on_start parameter disabled because dtmfdetect_ms specified\n"); + } if (sscanf(val, "%d", &(chan_config.dtmfdetect_ms)) != 1) { ftdm_log(FTDM_LOG_ERROR, "invalid dtmfdetect_ms: '%s'\n", val); } + } else if (!strncasecmp(var, "dtmf_on_start", sizeof("dtmf_on_start")-1)) { + if (chan_config.dtmfdetect_ms) { + ftdm_log(FTDM_LOG_WARNING, "dtmf_on_start parameter ignored because dtmf_detect_ms specified\n"); + } else { + if (ftdm_true(val)) { + chan_config.dtmf_on_start = FTDM_TRUE; + } else { + chan_config.dtmf_on_start = FTDM_FALSE; + } + } } else if (!strncasecmp(var, "iostats", sizeof("iostats")-1)) { if (ftdm_true(val)) { chan_config.iostats = FTDM_TRUE; diff --git a/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c b/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c index 3c53b0edbc..a6c6e8cd5a 100644 --- a/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c +++ b/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c @@ -1476,20 +1476,29 @@ static __inline__ ftdm_status_t wanpipe_channel_process_event(ftdm_channel_t *fc if (tdm_api->wp_tdm_cmd.event.wp_tdm_api_event_dtmf_type == WAN_EC_TONE_PRESENT) { ftdm_set_flag(fchan, FTDM_CHANNEL_MUTE); - //fchan->dtmfdetect.start_time = ftdm_current_time_in_ms(); + if (fchan->dtmfdetect.duration_ms) { + fchan->dtmfdetect.start_time = ftdm_current_time_in_ms(); + } else if (fchan->dtmfdetect.trigger_on_start) { + ftdm_log_chan(fchan, FTDM_LOG_DEBUG, "Queuing wanpipe DTMF: %c\n", tmp_dtmf[0]); + ftdm_channel_queue_dtmf(fchan, tmp_dtmf); + } } if (tdm_api->wp_tdm_cmd.event.wp_tdm_api_event_dtmf_type == WAN_EC_TONE_STOP) { ftdm_clear_flag(fchan, FTDM_CHANNEL_MUTE); if (ftdm_test_flag(fchan, FTDM_CHANNEL_INUSE)) { - //ftdm_time_t diff = ftdm_current_time_in_ms() - fchan->dtmfdetect.start_time; - //if (diff > fchan->dtmfdetect.duration_ms) { - //ftdm_log_chan(fchan, FTDM_LOG_DEBUG, "Queuing wanpipe DTMF: %c (duration:%d min:%d)\n", tmp_dtmf[0], diff, fchan->dtmfdetect.duration_ms); - ftdm_log_chan(fchan, FTDM_LOG_DEBUG, "Queuing wanpipe DTMF: %c\n", tmp_dtmf[0]); + if (fchan->dtmfdetect.duration_ms) { + ftdm_time_t diff = ftdm_current_time_in_ms() - fchan->dtmfdetect.start_time; + if (diff > fchan->dtmfdetect.duration_ms) { + ftdm_log_chan(fchan, FTDM_LOG_DEBUG, "Queuing wanpipe DTMF: %c (duration:%d min:%d)\n", tmp_dtmf[0], diff, fchan->dtmfdetect.duration_ms); + ftdm_channel_queue_dtmf(fchan, tmp_dtmf); + } else { + ftdm_log_chan(fchan, FTDM_LOG_DEBUG, "Ignoring wanpipe DTMF: %c (duration:%d min:%d)\n", tmp_dtmf[0], diff, fchan->dtmfdetect.duration_ms); + } + } else if (!fchan->dtmfdetect.trigger_on_start) { + ftdm_log_chan(fchan, FTDM_LOG_DEBUG, "Queuing wanpipe DTMF: %c\n", tmp_dtmf[0]); ftdm_channel_queue_dtmf(fchan, tmp_dtmf); - //} else { - //ftdm_log_chan(fchan, FTDM_LOG_DEBUG, "Ignoring wanpipe DTMF: %c (duration:%d min:%d)\n", tmp_dtmf[0], diff, fchan->dtmfdetect.duration_ms); - //} + } } } } diff --git a/libs/freetdm/src/include/freetdm.h b/libs/freetdm/src/include/freetdm.h index c7be3cb4a8..0fbc4bf29b 100755 --- a/libs/freetdm/src/include/freetdm.h +++ b/libs/freetdm/src/include/freetdm.h @@ -487,6 +487,7 @@ typedef struct ftdm_channel_config { float rxgain; float txgain; uint8_t debugdtmf; + uint8_t dtmf_on_start; uint32_t dtmfdetect_ms; uint8_t iostats; } ftdm_channel_config_t; diff --git a/libs/freetdm/src/include/private/ftdm_core.h b/libs/freetdm/src/include/private/ftdm_core.h index fb1a2c71b7..d27bac345b 100644 --- a/libs/freetdm/src/include/private/ftdm_core.h +++ b/libs/freetdm/src/include/private/ftdm_core.h @@ -362,6 +362,8 @@ typedef struct { typedef struct { uint32_t duration_ms; ftdm_time_t start_time; + /* If set to 1, we will send DTMF event the the tone starts, instead of waiting for end */ + uint8_t trigger_on_start; } ftdm_dtmf_detect_t; /* 2^8 table size, one for each byte (sample) value */ From 9de1e1ad67373c77d8cdc2971ed995baab4258b8 Mon Sep 17 00:00:00 2001 From: David Yat Sin Date: Tue, 7 Feb 2012 14:36:22 -0500 Subject: [PATCH 047/292] freetdm - disabled dtmf detect duration by default --- libs/freetdm/src/ftdm_io.c | 1 - 1 file changed, 1 deletion(-) diff --git a/libs/freetdm/src/ftdm_io.c b/libs/freetdm/src/ftdm_io.c index 2d8ca00380..0477220237 100644 --- a/libs/freetdm/src/ftdm_io.c +++ b/libs/freetdm/src/ftdm_io.c @@ -4635,7 +4635,6 @@ static ftdm_status_t load_config(void) memset(&chan_config, 0, sizeof(chan_config)); sprintf(chan_config.group_name, "__default"); - chan_config.dtmfdetect_ms = 45; if (!ftdm_config_open_file(&cfg, cfg_name)) { return FTDM_FAIL; From 77b8c0785c8408c979273ef79eb802587ca8af4f Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 8 Feb 2012 12:11:15 -0600 Subject: [PATCH 048/292] FS-3882 please try this patch --- src/mod/endpoints/mod_rtmp/rtmp.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/mod/endpoints/mod_rtmp/rtmp.c b/src/mod/endpoints/mod_rtmp/rtmp.c index 701487020e..25f769b552 100644 --- a/src/mod/endpoints/mod_rtmp/rtmp.c +++ b/src/mod/endpoints/mod_rtmp/rtmp.c @@ -886,6 +886,11 @@ switch_status_t rtmp_handle_data(rtmp_session_t *rsession) if (rsession->tech_pvt) { uint16_t len = state->origlen; + if (!rsession->tech_pvt->readbuf) { + return SWITCH_STATUS_FALSE; + } + + switch_mutex_lock(rsession->tech_pvt->readbuf_mutex); if (rsession->tech_pvt->maxlen && switch_buffer_inuse(rsession->tech_pvt->readbuf) > rsession->tech_pvt->maxlen * 40) { rsession->tech_pvt->over_size++; From 4c07a00ad7224ce2373b19a9066bddec4218c464 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 8 Feb 2012 16:52:13 -0600 Subject: [PATCH 049/292] FS-3883 can you see if this helps --- src/switch_caller.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/switch_caller.c b/src/switch_caller.c index 9382efd58c..715ab85486 100644 --- a/src/switch_caller.c +++ b/src/switch_caller.c @@ -137,6 +137,13 @@ SWITCH_DECLARE(switch_caller_profile_t *) switch_caller_profile_dup(switch_memor profile->pool = pool; profile->direction = tocopy->direction; profile->times = tocopy->times; + profile->times->answered = 0; + profile->times->progress = 0; + profile->times->progress_media = 0; + profile->times->created = switch_time_now(); + profile->times->profile_created = profile->times->created; + profile->times->hungup = 0; + profile->times->transferred = 0; if (tocopy->soft) { profile_node_t *pn; From 36b26c51aca57bf6497fe515971a9b98e8c9b109 Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Thu, 9 Feb 2012 12:56:02 +0100 Subject: [PATCH 050/292] [ftmod_misdn] Fix a couple of ftdm_log() printf format errors Also adds a local ftdm_channel_get_type_str() helper. Signed-off-by: Stefan Knoblich --- libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c index 06caeef7ae..8d3bd8df28 100644 --- a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c +++ b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c @@ -211,6 +211,11 @@ struct misdn_chan_private { static ftdm_status_t misdn_handle_incoming(ftdm_channel_t *ftdmchan, const char *rbuf, const int size); static int misdn_handle_mph_information_ind(ftdm_channel_t *chan, const struct mISDNhead *hh, const void *data, const int data_len); +static const char *ftdm_channel_get_type_str(const ftdm_channel_t *chan) +{ + return ftdm_chan_type2str(ftdm_channel_get_type(chan)); +} + /*********************************************************************************** * mISDN interface functions ***********************************************************************************/ @@ -655,7 +660,7 @@ static int misdn_handle_mph_information_ind(ftdm_channel_t *chan, const struct m } bch_info = &info->bch[0]; - ftdm_log_chan(chan, FTDM_LOG_DEBUG, "mISDN port state:\n\tD-Chan state:\t%hu\n\tD-Chan flags:\t%#x\n\tD-Chan proto:\t%hu\n\tD-Chan active:\t%s\n", + ftdm_log_chan(chan, FTDM_LOG_DEBUG, "mISDN port state:\n\tD-Chan state:\t%hu\n\tD-Chan flags:\t%#lx\n\tD-Chan proto:\t%hu\n\tD-Chan active:\t%s\n", info->dch.state, info->dch.ch.Flags, info->dch.ch.protocol, info->dch.ch.Flags & (1 << 6) ? "yes" : "no"); /* TODO: try to translate this to a usable set of alarm flags */ @@ -792,7 +797,7 @@ static FIO_OPEN_FUNCTION(misdn_open) break; default: ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "mISDN invalid channel type '%s'\n", - ftdm_channel_get_type(ftdmchan)); + ftdm_channel_get_type_str(ftdmchan)); break; } return FTDM_SUCCESS; From f4774047b8ff5db7a5f7d122f4000528ccf48f18 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 9 Feb 2012 11:08:46 -0600 Subject: [PATCH 051/292] FS-3894 --resolve --- src/switch_caller.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/switch_caller.c b/src/switch_caller.c index 715ab85486..ca6be0b7ac 100644 --- a/src/switch_caller.c +++ b/src/switch_caller.c @@ -136,14 +136,15 @@ SWITCH_DECLARE(switch_caller_profile_t *) switch_caller_profile_dup(switch_memor profile->flags = tocopy->flags; profile->pool = pool; profile->direction = tocopy->direction; - profile->times = tocopy->times; - profile->times->answered = 0; - profile->times->progress = 0; - profile->times->progress_media = 0; - profile->times->created = switch_time_now(); - profile->times->profile_created = profile->times->created; - profile->times->hungup = 0; - profile->times->transferred = 0; + if ((profile->times = tocopy->times)) { + profile->times->answered = 0; + profile->times->progress = 0; + profile->times->progress_media = 0; + profile->times->created = switch_time_now(); + profile->times->profile_created = profile->times->created; + profile->times->hungup = 0; + profile->times->transferred = 0; + } if (tocopy->soft) { profile_node_t *pn; From d5f47a87cecc3f8f7e9bb748497121390755df81 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 9 Feb 2012 12:03:11 -0600 Subject: [PATCH 052/292] FS-3794 --- src/mod/endpoints/mod_sofia/sofia_presence.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 683903fc66..ad11706022 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -2503,8 +2503,8 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * if (!strcasecmp(astate, "hangup")) { astate = "terminated"; } - - if (!sofia_test_pflag(profile, PFLAG_PRESENCE_DISABLE_EARLY)) { + + if (sofia_test_pflag(profile, PFLAG_PRESENCE_DISABLE_EARLY)) { if (!strcasecmp(astate, "ringing") || !strcasecmp(astate, "early")) { astate = "confirmed"; } From e6bfa118ec6ae98e5c3ff6f0f21ee6f7ecbd243e Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 9 Feb 2012 16:47:32 -0600 Subject: [PATCH 053/292] minor presence tweaks --- src/mod/applications/mod_conference/mod_conference.c | 10 ++++++++-- src/mod/endpoints/mod_sofia/sofia_presence.c | 4 ++-- src/switch_ivr.c | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index 777fdd2f27..e92971ab80 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -6957,7 +6957,7 @@ static conference_obj_t *conference_new(char *name, conf_xml_cfg_t cfg, switch_c switch_uuid_t uuid; switch_codec_implementation_t read_impl = { 0 }; switch_channel_t *channel = NULL; - const char *force_rate = NULL, *force_interval = NULL; + const char *force_rate = NULL, *force_interval = NULL, *presence_id = NULL; uint32_t force_rate_i = 0, force_interval_i = 0; /* Validate the conference name */ @@ -6972,6 +6972,8 @@ static conference_obj_t *conference_new(char *name, conf_xml_cfg_t cfg, switch_c switch_core_session_get_read_impl(session, &read_impl); channel = switch_core_session_get_channel(session); + presence_id = switch_channel_get_variable(channel, "presence_id"); + if ((force_rate = switch_channel_get_variable(channel, "conference_force_rate"))) { if (!strcasecmp(force_rate, "auto")) { force_rate_i = read_impl.actual_samples_per_second; @@ -7365,7 +7367,11 @@ static conference_obj_t *conference_new(char *name, conf_xml_cfg_t cfg, switch_c conference->name = switch_core_strdup(conference->pool, name); - if ((name_domain = strchr(conference->name, '@'))) { + if (presence_id && (name_domain = strchr(presence_id, '@'))) { + name_domain++; + conference->domain = switch_core_strdup(conference->pool, name_domain); + } else if ((name_domain = strchr(conference->name, '@'))) { + name_domain++; conference->domain = switch_core_strdup(conference->pool, name_domain); } else if (domain) { conference->domain = switch_core_strdup(conference->pool, domain); diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index ad11706022..75b7b9f0d3 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -1090,7 +1090,7 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) } if (!strcmp(proto, "dp")) { - sql = switch_mprintf("update sip_presence set rpid='%q',status='%q' where hostname='%q' nad profile_name='%q' and " + sql = switch_mprintf("update sip_presence set rpid='%q',status='%q' where hostname='%q' and profile_name='%q' and " "sip_user='%q' and sip_host='%q'", rpid, status, mod_sofia_globals.hostname, profile->name, euser, host); sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE); @@ -3299,7 +3299,7 @@ void sofia_presence_handle_sip_i_subscribe(int status, np.network_port, np.network_ip, orig_proto, full_to, to_tag); switch_assert(sql != NULL); - + if (mod_sofia_globals.debug_presence > 0 || mod_sofia_globals.debug_sla > 0) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "%s SUBSCRIBE %s@%s %s@%s\n%s\n", diff --git a/src/switch_ivr.c b/src/switch_ivr.c index c56a862584..a4046b32b4 100644 --- a/src/switch_ivr.c +++ b/src/switch_ivr.c @@ -3184,7 +3184,7 @@ SWITCH_DECLARE(char *) switch_ivr_check_presence_mapping(const char *exten_name, for (x_domain = switch_xml_child(x_domains, "domain"); x_domain; x_domain = x_domain->next) { const char *dname = switch_xml_attr(x_domain, "name"); - if (!dname || strcasecmp(domain_name, dname)) continue; + if (!dname || (strcasecmp(dname, "*") && strcasecmp(domain_name, dname))) continue; for (x_exten = switch_xml_child(x_domain, "exten"); x_exten; x_exten = x_exten->next) { const char *regex = switch_xml_attr(x_exten, "regex"); From 124c04624adaea6779f5537a1961ca8312ec35a8 Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Fri, 10 Feb 2012 13:14:29 +0100 Subject: [PATCH 054/292] [ftmod_misdn] Add missing braces around condition of ternary operator. For compilers that seem to do the wrong thing(tm). Speculative fix for: segfault at 1 ip b72145d3 sp b58f8bfc error 4 in libc-2.11.3.so #0 0xb7a5d5d3 in vfprintf () from /lib/i686/cmov/libc.so.6 #1 0xb7a7cec7 in vasprintf () from /lib/i686/cmov/libc.so.6 #2 0xb7dd7c5b in switch_vasprintf (...) #3 0xb6296de2 in ftdm_logger (...) #4 0xb621625d in misdn_handle_mph_information_ind (...) at ftmod_misdn.c:658 Signed-off-by: Stefan Knoblich --- libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c index 8d3bd8df28..d74c54934b 100644 --- a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c +++ b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c @@ -661,7 +661,7 @@ static int misdn_handle_mph_information_ind(ftdm_channel_t *chan, const struct m bch_info = &info->bch[0]; ftdm_log_chan(chan, FTDM_LOG_DEBUG, "mISDN port state:\n\tD-Chan state:\t%hu\n\tD-Chan flags:\t%#lx\n\tD-Chan proto:\t%hu\n\tD-Chan active:\t%s\n", - info->dch.state, info->dch.ch.Flags, info->dch.ch.protocol, info->dch.ch.Flags & (1 << 6) ? "yes" : "no"); + info->dch.state, info->dch.ch.Flags, info->dch.ch.protocol, (info->dch.ch.Flags & (1 << 6)) ? "yes" : "no"); /* TODO: try to translate this to a usable set of alarm flags */ From 9d5eb0737be55885bf9b14da8b554cae256dc5a6 Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Fri, 10 Feb 2012 13:24:57 +0100 Subject: [PATCH 055/292] [FreeTDM] Fix a couple of ftdm_log() format string errors. ... that could cause segmentation faults. Caught while working on __check_printf() support for ftdm_log(). Signed-off-by: Stefan Knoblich --- libs/freetdm/src/ftdm_config.c | 3 ++- libs/freetdm/src/ftdm_threadmutex.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/libs/freetdm/src/ftdm_config.c b/libs/freetdm/src/ftdm_config.c index 1b023e93eb..4dfc395e06 100644 --- a/libs/freetdm/src/ftdm_config.c +++ b/libs/freetdm/src/ftdm_config.c @@ -255,7 +255,8 @@ FT_DECLARE (int) ftdm_config_get_cas_bits(char *strvalue, unsigned char *outbits if ('1' == cas_bits[x]) { *outbits |= bit; } else if ('0' != cas_bits[x]) { - ftdm_log(FTDM_LOG_ERROR, "Invalid CAS pattern specified: %s, just 0 or 1 allowed for each bit\n"); + ftdm_log(FTDM_LOG_ERROR, "Invalid CAS pattern specified: %s, just 0 or 1 allowed for each bit\n", + strvalue); return -1; } bit >>= 1; diff --git a/libs/freetdm/src/ftdm_threadmutex.c b/libs/freetdm/src/ftdm_threadmutex.c index 56653811fa..20b85ae91e 100644 --- a/libs/freetdm/src/ftdm_threadmutex.c +++ b/libs/freetdm/src/ftdm_threadmutex.c @@ -472,7 +472,7 @@ FT_DECLARE(ftdm_status_t) ftdm_interrupt_signal(ftdm_interrupt_t *interrupt) * otherwise users that never call interrupt wait eventually will * eventually have the pipe buffer filled */ if ((err = write(interrupt->writefd, "w", 1)) != 1) { - ftdm_log(FTDM_LOG_ERROR, "Failed to signal interrupt: %s\n", errno, strerror(errno)); + ftdm_log(FTDM_LOG_ERROR, "Failed to signal interrupt: %s\n", strerror(errno)); return FTDM_FAIL; } } From 674dc9850b631078ed4fb0b0c16345683ef9e47c Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Fri, 10 Feb 2012 13:29:49 +0100 Subject: [PATCH 056/292] [FreeTDM] Another round of ftdm_log() format string fixes. Use FTDM_SIZE_FMT where needed, don't treat ftdm_event_t as an int (even if the e_type enum is the first member), datalen vs. *datalen fix and other warnings. All reported by __check_printf() (GCC + __attribute__((format(printf,x,y))) ). Signed-off-by: Stefan Knoblich --- libs/freetdm/src/ftdm_io.c | 21 ++++++++++++--------- libs/freetdm/src/testr2.c | 2 +- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/libs/freetdm/src/ftdm_io.c b/libs/freetdm/src/ftdm_io.c index 0477220237..fa62f5b425 100644 --- a/libs/freetdm/src/ftdm_io.c +++ b/libs/freetdm/src/ftdm_io.c @@ -149,7 +149,7 @@ static void dump_chan_io_to_file(ftdm_channel_t *fchan, ftdm_io_dump_t *dump, FI if (dump->wrapped) { rc = fwrite(&dump->buffer[dump->windex], 1, towrite, file); if (rc != towrite) { - ftdm_log_chan(fchan, FTDM_LOG_ERROR, "only wrote %d out of %d bytes in io dump buffer\n", + ftdm_log_chan(fchan, FTDM_LOG_ERROR, "only wrote %"FTDM_SIZE_FMT" out of %"FTDM_SIZE_FMT" bytes in io dump buffer: %s\n", rc, towrite, strerror(errno)); } } @@ -157,7 +157,7 @@ static void dump_chan_io_to_file(ftdm_channel_t *fchan, ftdm_io_dump_t *dump, FI towrite = dump->windex; rc = fwrite(&dump->buffer[0], 1, towrite, file); if (rc != towrite) { - ftdm_log_chan(fchan, FTDM_LOG_ERROR, "only wrote %d out of %d bytes in io dump buffer: %s\n", + ftdm_log_chan(fchan, FTDM_LOG_ERROR, "only wrote %"FTDM_SIZE_FMT" out of %"FTDM_SIZE_FMT" bytes in io dump buffer: %s\n", rc, towrite, strerror(errno)); } } @@ -1174,7 +1174,7 @@ FT_DECLARE(ftdm_status_t) ftdm_span_next_event(ftdm_span_t *span, ftdm_event_t * status = ftdm_event_handle_oob(*event); if (status != FTDM_SUCCESS) { - ftdm_log(FTDM_LOG_ERROR, "failed to handle event %d\n", **event); + ftdm_log(FTDM_LOG_ERROR, "failed to handle event %d\n", (*event)->e_type); } return status; } @@ -1204,7 +1204,7 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_read_event(ftdm_channel_t *ftdmchan, ftdm status = ftdm_event_handle_oob(*event); if (status != FTDM_SUCCESS) { - ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "failed to handle event %d\n", **event); + ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "failed to handle event %d\n", (*event)->e_type); } done: @@ -2980,7 +2980,7 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_command(ftdm_channel_t *ftdmchan, ftdm_co GOTO_STATUS(done, FTDM_FAIL); } if (start_chan_io_dump(ftdmchan, &ftdmchan->txdump, size) != FTDM_SUCCESS) { - ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "Failed to enable output dump of size %d\n", size); + ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "Failed to enable output dump of size %"FTDM_SIZE_FMT"\n", size); GOTO_STATUS(done, FTDM_FAIL); } ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Enabled output dump with size %"FTDM_SIZE_FMT"\n", size); @@ -3012,7 +3012,7 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_command(ftdm_channel_t *ftdmchan, ftdm_co GOTO_STATUS(done, FTDM_FAIL); } dump_chan_io_to_file(ftdmchan, &ftdmchan->rxdump, obj); - ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Dumped input of size %d to file %p\n", ftdmchan->rxdump.size, obj); + ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Dumped input of size %"FTDM_SIZE_FMT" to file %p\n", ftdmchan->rxdump.size, obj); GOTO_STATUS(done, FTDM_SUCCESS); } break; @@ -3635,7 +3635,7 @@ FT_DECLARE(ftdm_status_t) ftdm_raw_write (ftdm_channel_t *ftdmchan, void *data, } if (ftdmchan->fds[FTDM_WRITE_TRACE_INDEX] > -1) { if ((write(ftdmchan->fds[FTDM_WRITE_TRACE_INDEX], data, dlen)) != dlen) { - ftdm_log(FTDM_LOG_WARNING, "Raw output trace failed to write all of the %"FTDM_SIZE_FMT" bytes\n", dlen); + ftdm_log(FTDM_LOG_WARNING, "Raw output trace failed to write all of the %d bytes\n", dlen); } } write_chan_io_dump(&ftdmchan->txdump, data, dlen); @@ -3681,7 +3681,8 @@ FT_DECLARE(ftdm_status_t) ftdm_raw_read (ftdm_channel_t *ftdmchan, void *data, f if (ftdmchan->dtmfdbg.file) { rc = fwrite(data, 1, dlen, ftdmchan->dtmfdbg.file); if (rc != dlen) { - ftdm_log(FTDM_LOG_WARNING, "DTMF debugger wrote only %d out of %d bytes: %s\n", rc, datalen, strerror(errno)); + ftdm_log(FTDM_LOG_WARNING, "DTMF debugger wrote only %"FTDM_SIZE_FMT" out of %"FTDM_SIZE_FMT" bytes: %s\n", + rc, *datalen, strerror(errno)); } ftdmchan->dtmfdbg.closetimeout--; if (!ftdmchan->dtmfdbg.closetimeout) { @@ -3900,7 +3901,9 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_process_media(ftdm_channel_t *ftdmchan, v *(str+mlen) = '\0'; ftdm_copy_string(str, sp, ++mlen); ftdm_clean_string(str); - ftdm_log(FTDM_LOG_DEBUG, "FSK: TYPE %s LEN %d VAL [%s]\n", ftdm_mdmf_type2str(type), mlen-1, str); + + ftdm_log(FTDM_LOG_DEBUG, "FSK: TYPE %s LEN %"FTDM_SIZE_FMT" VAL [%s]\n", + ftdm_mdmf_type2str(type), mlen-1, str); switch(type) { case MDMF_DDN: diff --git a/libs/freetdm/src/testr2.c b/libs/freetdm/src/testr2.c index 72d98020bc..24dde38b08 100644 --- a/libs/freetdm/src/testr2.c +++ b/libs/freetdm/src/testr2.c @@ -10,7 +10,7 @@ static ftdm_channel_indication_t indication = FTDM_CHANNEL_INDICATE_NONE; static FIO_SIGNAL_CB_FUNCTION(on_r2_signal) { int chanid = ftdm_channel_get_ph_id(sigmsg->channel); - ftdm_log(FTDM_LOG_DEBUG, "Got R2 channel sig [%s] in channel\n", ftdm_signal_event2str(sigmsg->event_id), chanid); + ftdm_log(FTDM_LOG_DEBUG, "Got R2 channel sig [%s] in channel %d\n", ftdm_signal_event2str(sigmsg->event_id), chanid); switch (sigmsg->event_id) { case FTDM_SIGEVENT_START: { From fdaa155b99c0b4822077a0f7b1c29279b9d5398e Mon Sep 17 00:00:00 2001 From: Christopher Rienzo Date: Fri, 10 Feb 2012 13:17:54 +0000 Subject: [PATCH 057/292] Lower super_tone_rx DETECTION_THRESHOLD by a factor of 128 --- libs/spandsp/src/super_tone_rx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/spandsp/src/super_tone_rx.c b/libs/spandsp/src/super_tone_rx.c index 767a1893ff..0ab84dab9b 100644 --- a/libs/spandsp/src/super_tone_rx.c +++ b/libs/spandsp/src/super_tone_rx.c @@ -60,7 +60,7 @@ #define TONE_TWIST 4 /* 6dB */ #define TONE_TO_TOTAL_ENERGY 64 /* -3dB */ #else -#define DETECTION_THRESHOLD 269338317.0f /* -42dBm0 [((128.0*32768.0/1.4142)*10^((-42 - DBM0_MAX_SINE_POWER)/20.0))^2 => 269338317.0] */ +#define DETECTION_THRESHOLD 2104205.6f /* -42dBm0 [(((128.0*32768.0/1.4142)*10^((-42 - DBM0_MAX_SINE_POWER)/20.0))^2)/128 => 2104205.6] */ #define TONE_TWIST 3.981f /* 6dB */ #define TONE_TO_TOTAL_ENERGY 1.995f /* 3dB */ #define DTMF_TO_TOTAL_ENERGY 64.152f /* -3dB [BINS*10^(-3/10.0)] */ From 6a1feacc45e1d5f020ff285f8851bd2dca70bfa2 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 10 Feb 2012 10:49:19 -0600 Subject: [PATCH 058/292] FS-3866 --resolve this should work now with send-message-query-on-register --- src/mod/endpoints/mod_sofia/sofia_presence.c | 9 +++++---- src/mod/endpoints/mod_sofia/sofia_reg.c | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 75b7b9f0d3..794627c4f4 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -455,7 +455,7 @@ static void actual_sofia_presence_mwi_event_handler(switch_event_t *event) if ((pname = switch_event_get_header(event, "sofia-profile"))) { profile = sofia_glue_find_profile(pname); } - + if (!profile) { if (!host || !(profile = sofia_glue_find_profile(host))) { char *sql; @@ -464,7 +464,7 @@ static void actual_sofia_presence_mwi_event_handler(switch_event_t *event) sql = switch_mprintf("select profile_name from sip_registrations where hostname='%q' and (sip_host='%s' or mwi_host='%s')", mod_sofia_globals.hostname, host, host); - + if (list_profiles_full(NULL, NULL, &matches, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS) { switch_console_callback_match_node_t *m; @@ -492,6 +492,7 @@ static void actual_sofia_presence_mwi_event_handler(switch_event_t *event) } } + if (profile->domain_name && strcasecmp(profile->domain_name, host)) { host = profile->domain_name; } @@ -548,8 +549,8 @@ static void actual_sofia_presence_mwi_event_handler(switch_event_t *event) stream.data, mod_sofia_globals.hostname, profile->name, user, host); } else if (call_id) { sql = switch_mprintf("select sip_user,sip_host,contact,profile_name,network_ip,'%q' " - "from sip_registrations where hostname='%q' and profile_name='%q' and mwi_user='%q' and mwi_host='%q' and call_id='%q'", - mod_sofia_globals.hostname, profile->name, stream.data, user, host, call_id); + "from sip_registrations where hostname='%q' and profile_name='%q' and call_id='%q'", + stream.data, mod_sofia_globals.hostname, profile->name, call_id); } if (sql) { diff --git a/src/mod/endpoints/mod_sofia/sofia_reg.c b/src/mod/endpoints/mod_sofia/sofia_reg.c index 0a8b5e89e4..df094f093b 100644 --- a/src/mod/endpoints/mod_sofia/sofia_reg.c +++ b/src/mod/endpoints/mod_sofia/sofia_reg.c @@ -1651,7 +1651,7 @@ uint8_t sofia_reg_handle_register(nua_t *nua, sofia_profile_t *profile, nua_hand (reg_count == 1 && sofia_test_pflag(profile, PFLAG_MESSAGE_QUERY_ON_FIRST_REGISTER))) { if (switch_event_create(&s_mwi_event, SWITCH_EVENT_MESSAGE_QUERY) == SWITCH_STATUS_SUCCESS) { switch_event_add_header(s_mwi_event, SWITCH_STACK_BOTTOM, "Message-Account", "sip:%s@%s", mwi_user, mwi_host); - switch_event_add_header_string(s_mwi_event, SWITCH_STACK_BOTTOM, "VM-Sofia-Pofile", profile->name); + switch_event_add_header_string(s_mwi_event, SWITCH_STACK_BOTTOM, "VM-Sofia-Profile", profile->name); switch_event_add_header_string(s_mwi_event, SWITCH_STACK_BOTTOM, "VM-Call-ID", call_id); } } From ff379a97e57a94f11ce75e8894b1ceb79d10a9ed Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 10 Feb 2012 11:02:41 -0600 Subject: [PATCH 059/292] fix publish regression --- src/mod/endpoints/mod_sofia/sofia_presence.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 794627c4f4..b529b076f4 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -3724,6 +3724,7 @@ void sofia_presence_handle_sip_i_publish(nua_t *nua, sofia_profile_t *profile, n int count = 1, sub_count = 0; char *contact_str; int open = 1; + sofia_nat_parse_t np = { { 0 } }; if (!sip) { return; @@ -3732,7 +3733,8 @@ void sofia_presence_handle_sip_i_publish(nua_t *nua, sofia_profile_t *profile, n from = sip->sip_from; payload = sip->sip_payload; - contact_str = sofia_glue_gen_contact_str(profile, sip, nh, de, NULL); + np.fs_path = 1; + contact_str = sofia_glue_gen_contact_str(profile, sip, nh, de, &np); if (from) { from_user = (char *) from->a_url->url_user; From 60fd5f9a7322b2be00dcfbb5727e10bb923cab09 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 10 Feb 2012 12:13:52 -0600 Subject: [PATCH 060/292] FS-3842 going to go on a hunch and push this change --- src/mod/endpoints/mod_sofia/sofia.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 0668eedf57..fa1cd829b6 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -2622,8 +2622,9 @@ static void parse_gateways(sofia_profile_t *profile, switch_xml_t gateways_tag) gateway->ping = switch_epoch_time_now(NULL) + ping_freq; gateway->options_to_uri = switch_core_sprintf(gateway->pool, "", !zstr(from_domain) ? from_domain : proxy, register_transport); - gateway->options_from_uri = switch_core_sprintf(gateway->pool, "", - profile->extrtpip ? profile->extrtpip : profile->sipip, register_transport); + //gateway->options_from_uri = switch_core_sprintf(gateway->pool, "", + // profile->extrtpip ? profile->extrtpip : profile->sipip, register_transport); + gateway->options_from_uri = gateway->options_to_uri; } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "ERROR: invalid ping!\n"); } From b9b72661eab7db70310d267fdbfca362cb971587 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 10 Feb 2012 12:23:58 -0600 Subject: [PATCH 061/292] FS-3866 this should take care of the unwanted presence packets with mwi sub --- src/mod/endpoints/mod_sofia/sofia_presence.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index b529b076f4..7221d25f02 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -3546,7 +3546,7 @@ void sofia_presence_handle_sip_i_subscribe(int status, switch_event_add_header_string(sevent, SWITCH_STACK_BOTTOM, "sub-call-id", call_id); switch_event_fire(&sevent); } - } else { + } else if (!strcasecmp(event, "presence")) { if (switch_event_create(&sevent, SWITCH_EVENT_PRESENCE_IN) == SWITCH_STATUS_SUCCESS) { switch_event_add_header_string(sevent, SWITCH_STACK_BOTTOM, "proto", SOFIA_CHAT_PROTO); switch_event_add_header_string(sevent, SWITCH_STACK_BOTTOM, "login", profile->name); From 0a6dde7baa7e7ce25dba1257458b320dfcc167f6 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 10 Feb 2012 13:24:02 -0600 Subject: [PATCH 062/292] fire event with result of vm auth attempt --- src/mod/applications/mod_voicemail/mod_voicemail.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/mod/applications/mod_voicemail/mod_voicemail.c b/src/mod/applications/mod_voicemail/mod_voicemail.c index df68f28166..55a25c1f2d 100644 --- a/src/mod/applications/mod_voicemail/mod_voicemail.c +++ b/src/mod/applications/mod_voicemail/mod_voicemail.c @@ -1861,6 +1861,7 @@ static void voicemail_check_main(switch_core_session_t *session, vm_profile_t *p const char *caller_id_name = NULL; const char *caller_id_number = NULL; int auth_only = 0, authed = 0; + switch_event_t *event; if (!(caller_id_name = switch_channel_get_variable(channel, "effective_caller_id_name"))) { caller_id_name = caller_profile->caller_id_name; @@ -2454,6 +2455,14 @@ static void voicemail_check_main(switch_core_session_t *session, vm_profile_t *p } } + switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, VM_EVENT_MAINT); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "VM-Action", "authentication"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "VM-Auth-Result", auth ? "success" : "fail"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "VM-User", myid); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "VM-Domain", domain_name); + switch_channel_event_set_data(channel, event); + switch_event_fire(&event); + FREE_DOMAIN_ROOT(); if (auth) { From af439fa5745d6295e92366bbf943345468cabde2 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 10 Feb 2012 15:14:26 -0600 Subject: [PATCH 063/292] try alternate technique --- src/mod/endpoints/mod_sofia/sofia_presence.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 7221d25f02..7d6987f7c4 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -2507,7 +2507,7 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * if (sofia_test_pflag(profile, PFLAG_PRESENCE_DISABLE_EARLY)) { if (!strcasecmp(astate, "ringing") || !strcasecmp(astate, "early")) { - astate = "confirmed"; + goto end; } } @@ -2751,6 +2751,9 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * send_presence_notify(profile, full_to, full_from, contact, expires, call_id, event, ip, port, ct, pl, NULL); + + end: + switch_safe_free(free_me); if (ext_profile) { From eeeaf41ca9c1708a5dd5f226ebe755a82ec2cd32 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 10 Feb 2012 17:27:50 -0600 Subject: [PATCH 064/292] add debug --- src/switch_core_codec.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/switch_core_codec.c b/src/switch_core_codec.c index fd3c5e37f4..d5404c033c 100644 --- a/src/switch_core_codec.c +++ b/src/switch_core_codec.c @@ -757,7 +757,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_codec_decode(switch_codec_t *codec, uint32_t frames = encoded_data_len / codec->implementation->encoded_bytes_per_packet; if (frames && codec->implementation->decoded_bytes_per_packet * frames > *decoded_data_len) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Buffer size sanity check failed!\n"); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Buffer size sanity check failed! edl:%u ebpp:%u fr:%u ddl:%u\n", + encoded_data_len, codec->implementation->encoded_bytes_per_packet, frames, *decoded_data_len); *decoded_data_len = codec->implementation->decoded_bytes_per_packet; memset(decoded_data, 255, *decoded_data_len); return SWITCH_STATUS_SUCCESS; From 261505accb5154edf221eecda176c00ee2c2214c Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 13 Feb 2012 13:50:21 -0600 Subject: [PATCH 065/292] purposely do presence wrong for snoms since they are broken and its a losing battle doing interop --- src/mod/endpoints/mod_sofia/sofia_presence.c | 26 +++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 7d6987f7c4..ae55dd434e 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -2262,7 +2262,7 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * char *open_closed = NULL; char *dialog_status = NULL; char *dialog_rpid = NULL; - + char *default_dialog = "partial"; const char *ct = "no/idea"; char *to = NULL; @@ -2417,6 +2417,16 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * const char *call_state = switch_event_get_header(helper->event, "channel-state"); + if (user_agent && switch_stristr("snom", user_agent) && uuid) { + default_dialog = "full" ; + } + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "WTF [%s][%s]\n", user_agent, default_dialog); + + + + + if (call_state && !strcasecmp(call_state, "cs_hangup")) { astate = "hangup"; } @@ -2479,7 +2489,7 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * stream.write_function(&stream, "\n" "\n", version, clean_id); + "version=\"%s\" state=\"%s\" entity=\"%s\">\n", version, default_dialog, clean_id); } @@ -2505,12 +2515,6 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * astate = "terminated"; } - if (sofia_test_pflag(profile, PFLAG_PRESENCE_DISABLE_EARLY)) { - if (!strcasecmp(astate, "ringing") || !strcasecmp(astate, "early")) { - goto end; - } - } - if (is_dialog) { if (!strcasecmp(astate, "ringing")) { @@ -2532,8 +2536,12 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * astate = "early"; } } - + + if (sofia_test_pflag(profile, PFLAG_PRESENCE_DISABLE_EARLY) && !strcasecmp(astate, "early")) { + goto end; + } + if (!strcasecmp(astate, "early") || !strcasecmp(astate, "confirmed")) { clean_to_user = switch_mprintf("%s", sub_to_user ? sub_to_user : to_user); From f507f89eb0418578650cb0321f9644dd2fe81ad5 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 14 Feb 2012 10:52:38 -0600 Subject: [PATCH 066/292] wtf --- src/mod/endpoints/mod_sofia/sofia_presence.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index ae55dd434e..9b70becef7 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -2421,12 +2421,6 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * default_dialog = "full" ; } - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "WTF [%s][%s]\n", user_agent, default_dialog); - - - - - if (call_state && !strcasecmp(call_state, "cs_hangup")) { astate = "hangup"; } From eb4cac9b5ecdabde4edf20fecbd57183d0489eab Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 14 Feb 2012 13:04:51 -0600 Subject: [PATCH 067/292] add vmname tag to httapi to play a voicemail recorded name --- src/mod/applications/mod_httapi/mod_httapi.c | 50 ++++++++++++++++++- .../mod_httapi/mod_httapi_doc.txt | 15 ++++++ 2 files changed, 63 insertions(+), 2 deletions(-) diff --git a/src/mod/applications/mod_httapi/mod_httapi.c b/src/mod/applications/mod_httapi/mod_httapi.c index 4a42aec823..fba7736363 100644 --- a/src/mod/applications/mod_httapi/mod_httapi.c +++ b/src/mod/applications/mod_httapi/mod_httapi.c @@ -395,6 +395,7 @@ static switch_status_t parse_playback(const char *tag_name, client_t *client, sw const char *say_gender = NULL; const char *sp_engine = NULL; const char *sp_grammar = NULL; + char *free_string = NULL; if (!strcasecmp(tag_name, "say")) { say_lang = switch_xml_attr(tag, "language"); @@ -431,6 +432,48 @@ static switch_status_t parse_playback(const char *tag_name, client_t *client, sw } else { play = 1; } + } else if (!strcasecmp(tag_name, "vmname")) { + const char *id = switch_xml_attr(tag, "id"); + char *cmd, *resp; + switch_stream_handle_t stream = { 0 }; + char *p; + + SWITCH_STANDARD_STREAM(stream); + + cmd = switch_mprintf("%s|name_path", id); + + switch_api_execute("vm_prefs", cmd, NULL, &stream); + + resp = (char *) stream.data; + + if (!zstr(resp)) { + if (switch_stristr("://", resp) || switch_file_exists(resp, NULL) == SWITCH_STATUS_SUCCESS) { + play = 1; + file = free_string = resp; + resp = NULL; + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid file! [%s]\n", resp); + switch_safe_free(resp); + return SWITCH_STATUS_FALSE; + } + } else { + switch_safe_free(resp); + say_lang = switch_xml_attr(tag, "language"); + say_gender = switch_xml_attr(tag, "gender"); + say_type = "name_spelled"; + say_method = "pronounced"; + free_string = strdup(id); + if ((p = strchr(free_string, '@'))) { + *p = '\0'; + } + say = 1; + + body = free_string; + switch_ivr_play_file(client->session, NULL, "voicemail/vm-person.wav", &nullargs); + + } + + switch_safe_free(resp); } @@ -618,11 +661,13 @@ static switch_status_t parse_playback(const char *tag_name, client_t *client, sw } } } - + if (dmachine) { switch_ivr_dmachine_destroy(&dmachine); } - printf("WTF %d\n", status); + + switch_safe_free(free_string); + return status; } @@ -2790,6 +2835,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_httapi_load) bind_parser("record", parse_record); bind_parser("recordCall", parse_record_call); bind_parser("playback", parse_playback); + bind_parser("vmName", parse_playback); bind_parser("speak", parse_playback); bind_parser("say", parse_playback); bind_parser("conference", parse_conference); diff --git a/src/mod/applications/mod_httapi/mod_httapi_doc.txt b/src/mod/applications/mod_httapi/mod_httapi_doc.txt index e8bf9bf9bc..8690a62fc8 100644 --- a/src/mod/applications/mod_httapi/mod_httapi_doc.txt +++ b/src/mod/applications/mod_httapi/mod_httapi_doc.txt @@ -80,6 +80,21 @@ asr-engine : ASR engine to use asr-grammar : ASR grammar to use +*EXPR* + : Plays a vm name and optionally collects input. + +ATTRS: +file : The file +name : Param name to save result. +error-file : Error file to play on invalid input. +action : Change the new target url. +temp-action : Change url to submit to. just for the next loop. +digit-timeout : Timeout waiting for digits after file plays (when input bindings are present) +input-timeout : Timeout waiting for more digits in a multi-digit input. +loops : max times to play the file when input bindings are present. + + + *EXPR* From 303de52bad2d43efcfe41520e4afbae919cf4864 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 14 Feb 2012 18:59:37 -0600 Subject: [PATCH 068/292] FS-3794 more fun --- src/mod/endpoints/mod_sofia/sofia_presence.c | 84 ++++++++++---------- src/switch_channel.c | 34 ++++---- 2 files changed, 59 insertions(+), 59 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 9b70becef7..7a34e1a0f1 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -635,42 +635,42 @@ static void do_normal_probe(switch_event_t *event) switch_safe_free(sql); sql = switch_mprintf("select sip_registrations.sip_user, " - "sip_registrations.sub_host, " - "sip_registrations.status, " - "sip_registrations.rpid, " - "'', " - "sip_dialogs.uuid, " - "sip_dialogs.state, " - "sip_dialogs.direction, " - "sip_dialogs.sip_to_user, " - "sip_dialogs.sip_to_host, " + "sip_registrations.sub_host, " + "sip_registrations.status, " + "sip_registrations.rpid, " + "'', " + "sip_dialogs.uuid, " + "sip_dialogs.state, " + "sip_dialogs.direction, " + "sip_dialogs.sip_to_user, " + "sip_dialogs.sip_to_host, " - "sip_presence.status," - "sip_presence.rpid," - "sip_dialogs.presence_id, " - "sip_presence.open_closed," - "'%q','%q','%q' " - "from sip_registrations " + "sip_presence.status," + "sip_presence.rpid," + "sip_dialogs.presence_id, " + "sip_presence.open_closed," + "'%q','%q','%q' " + "from sip_registrations " - "left join sip_dialogs on " - "sip_dialogs.hostname = sip_registrations.hostname and sip_dialogs.profile_name = sip_registrations.profile_name and (" - "sip_dialogs.presence_id = sip_registrations.sip_user %q '@' %q sip_registrations.sub_host " - "or (sip_dialogs.sip_from_user = sip_registrations.sip_user " - "and sip_dialogs.sip_from_host = sip_registrations.sip_host)) " + "left join sip_dialogs on " + "sip_dialogs.hostname = sip_registrations.hostname and sip_dialogs.profile_name = sip_registrations.profile_name and (" + "sip_dialogs.presence_id = sip_registrations.sip_user %q '@' %q sip_registrations.sub_host " + "or (sip_dialogs.sip_from_user = sip_registrations.sip_user " + "and sip_dialogs.sip_from_host = sip_registrations.sip_host)) " - "left join sip_presence on " - "sip_presence.hostname=sip_registrations.hostname and " - "(sip_registrations.sip_user=sip_presence.sip_user and sip_registrations.orig_server_host=sip_presence.sip_host and " - "sip_registrations.profile_name=sip_presence.profile_name) " - "where sip_registrations.hostname='%q' and sip_registrations.profile_name='%q' and sip_dialogs.call_info_state != 'seized' " - "and sip_dialogs.presence_id='%q@%q' or (sip_registrations.sip_user='%q' and " - "(sip_registrations.orig_server_host='%q' or sip_registrations.sub_host='%q' " - "))", - dh.status, dh.rpid, switch_str_nil(sub_call_id), - switch_sql_concat(), switch_sql_concat(), - mod_sofia_globals.hostname, profile->name, probe_euser, probe_host, probe_euser, probe_host, probe_host); - + "left join sip_presence on " + "sip_presence.hostname=sip_registrations.hostname and " + "(sip_registrations.sip_user=sip_presence.sip_user and sip_registrations.orig_server_host=sip_presence.sip_host and " + "sip_registrations.profile_name=sip_presence.profile_name) " + "where sip_registrations.hostname='%q' and sip_registrations.profile_name='%q' and sip_dialogs.call_info_state != 'seized' " + "and sip_dialogs.presence_id='%q@%q' or (sip_registrations.sip_user='%q' and " + "(sip_registrations.orig_server_host='%q' or sip_registrations.sub_host='%q' " + "))", + dh.status, dh.rpid, switch_str_nil(sub_call_id), + switch_sql_concat(), switch_sql_concat(), + mod_sofia_globals.hostname, profile->name, probe_euser, probe_host, probe_euser, probe_host, probe_host); + switch_assert(sql); @@ -1115,7 +1115,7 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) } sofia_glue_execute_sql_callback(profile, profile->ireg_mutex, sql, sofia_presence_dialog_callback, &dh); - + switch_safe_free(sql); @@ -1563,7 +1563,7 @@ static int sofia_presence_resub_callback(void *pArg, int argc, char **argv, char switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "call-id", call_id); } - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "resub", "true"); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "resub", "true"); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "status", status); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "rpid", rpid); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "event_type", "presence"); @@ -1595,12 +1595,9 @@ static int sofia_presence_resub_callback(void *pArg, int argc, char **argv, char } } - switch_event_fire(&event); } - - switch_safe_free(free_me); @@ -2415,7 +2412,7 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * char *clean_from_user = NULL; int force_status = 0; const char *call_state = switch_event_get_header(helper->event, "channel-state"); - + char *call_info_state = switch_event_get_header(helper->event, "presence-call-info-state"); if (user_agent && switch_stristr("snom", user_agent) && uuid) { default_dialog = "full" ; @@ -2532,7 +2529,8 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * } - if (sofia_test_pflag(profile, PFLAG_PRESENCE_DISABLE_EARLY) && !strcasecmp(astate, "early")) { + if (sofia_test_pflag(profile, PFLAG_PRESENCE_DISABLE_EARLY) && + (!zstr(call_info_state) && (!strcasecmp(call_info_state, "alterting") || !strcasecmp(call_info_state, "progressing")))) { goto end; } @@ -3552,14 +3550,16 @@ void sofia_presence_handle_sip_i_subscribe(int status, switch_event_fire(&sevent); } } else if (!strcasecmp(event, "presence")) { - if (switch_event_create(&sevent, SWITCH_EVENT_PRESENCE_IN) == SWITCH_STATUS_SUCCESS) { + if (switch_event_create(&sevent, SWITCH_EVENT_PRESENCE_PROBE) == SWITCH_STATUS_SUCCESS) { switch_event_add_header_string(sevent, SWITCH_STACK_BOTTOM, "proto", SOFIA_CHAT_PROTO); switch_event_add_header_string(sevent, SWITCH_STACK_BOTTOM, "login", profile->name); switch_event_add_header_string(sevent, SWITCH_STACK_BOTTOM, "presence-source", "subscribe"); - switch_event_add_header(sevent, SWITCH_STACK_BOTTOM, "from", "%s@%s", from_user, from_host); + switch_event_add_header(sevent, SWITCH_STACK_BOTTOM, "from", "%s@%s", to_user, to_host); + switch_event_add_header(sevent, SWITCH_STACK_BOTTOM, "to", "%s@%s", to_user, to_host); + switch_event_add_header_string(sevent, SWITCH_STACK_BOTTOM, "alt_event_type", "dialog"); switch_event_add_header_string(sevent, SWITCH_STACK_BOTTOM, "rpid", "unknown"); switch_event_add_header_string(sevent, SWITCH_STACK_BOTTOM, "status", "Registered"); - switch_event_add_header_string(sevent, SWITCH_STACK_BOTTOM, "call-id", call_id); + switch_event_add_header_string(sevent, SWITCH_STACK_BOTTOM, "sub-call-id", call_id); switch_event_fire(&sevent); } } diff --git a/src/switch_channel.c b/src/switch_channel.c index 617c7f58b5..849269399d 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -604,6 +604,7 @@ SWITCH_DECLARE(void) switch_channel_perform_presence(switch_channel_t *channel, switch_event_t *event; switch_event_types_t type = SWITCH_EVENT_PRESENCE_IN; const char *call_info = NULL; + char *call_info_state = "active"; if (!status) { type = SWITCH_EVENT_PRESENCE_OUT; @@ -634,31 +635,30 @@ SWITCH_DECLARE(void) switch_channel_perform_presence(switch_channel_t *channel, switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "event_type", "presence"); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "alt_event_type", "dialog"); - if (call_info) { - char *call_info_state = "active"; - if (!switch_channel_up_nosig(channel)) { - call_info_state = "idle"; - } else if (!strcasecmp(status, "hold-private")) { - call_info_state = "held-private"; - } else if (!strcasecmp(status, "hold")) { - call_info_state = "held"; - } else if (!switch_channel_test_flag(channel, CF_ANSWERED)) { - if (channel->direction == SWITCH_CALL_DIRECTION_OUTBOUND) { - call_info_state = "progressing"; - } else { - call_info_state = "alerting"; - } + if (!switch_channel_up_nosig(channel)) { + call_info_state = "idle"; + } else if (!strcasecmp(status, "hold-private")) { + call_info_state = "held-private"; + } else if (!strcasecmp(status, "hold")) { + call_info_state = "held"; + } else if (!switch_channel_test_flag(channel, CF_ANSWERED)) { + if (channel->direction == SWITCH_CALL_DIRECTION_OUTBOUND) { + call_info_state = "progressing"; + } else { + call_info_state = "alerting"; } - - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "presence-call-info-state", call_info_state); + } + + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "presence-call-info-state", call_info_state); + + if (call_info) { switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "presence-call-info", call_info); } switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "presence-call-direction", channel->direction == SWITCH_CALL_DIRECTION_OUTBOUND ? "outbound" : "inbound"); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, "event_count", "%d", channel->event_count++); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Presence-Calling-File", file); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Presence-Calling-Function", func); From 5a349eecc4ee36e29fee438061a03d252d9f92c6 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 15 Feb 2012 11:48:12 -0600 Subject: [PATCH 069/292] fix regression where backwards printf args are messing up a sql stmt that breaks SLA --- src/mod/endpoints/mod_sofia/sofia_presence.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 7a34e1a0f1..2e11271003 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -3030,12 +3030,12 @@ static int sync_sla(sofia_profile_t *profile, const char *to_user, const char *t if (unseize) { sql = switch_mprintf("select call_id,expires,sub_to_user,sub_to_host,event,full_to,full_from,contact,expires,network_ip,network_port " "from sip_subscriptions where call_id='%q' and hostname='%q' and profile_name='%q')", - mod_sofia_globals.hostname, call_id, profile->name); + call_id, mod_sofia_globals.hostname, profile->name); } else { sql = switch_mprintf("select call_id,expires,sub_to_user,sub_to_host,event,full_to,full_from,contact,expires,network_ip,network_port " "from sip_subscriptions where call_id='%q' and hostname='%q' and profile_name='%q'", - mod_sofia_globals.hostname, call_id, profile->name); + call_id, mod_sofia_globals.hostname, profile->name); } } else { From 08d29b10b60f60b2f00514185448a3252abe88ab Mon Sep 17 00:00:00 2001 From: David Yat Sin Date: Wed, 15 Feb 2012 13:07:07 -0500 Subject: [PATCH 070/292] freetdm - ISDN fix for channel getting stuck if we receive ALERT after sending DISCONNECT --- .../ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c index 7507a0ec5a..76641f3893 100644 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c @@ -446,7 +446,12 @@ void sngisdn_process_cnst_ind (sngisdn_event_data_t *sngisdn_event) /* Do nothing */ break; case FTDM_CHANNEL_STATE_RESET: - ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Processing SETUP but channel in RESET state, ignoring\n"); + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Ignoring ALERT/PROCEED/PROGRESS because channel is in RESET state\n"); + break; + case FTDM_CHANNEL_STATE_HANGUP: + case FTDM_CHANNEL_STATE_HANGUP_COMPLETE: + /* Ignore this message as we already started the hangup process */ + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Ignoring ALERT/PROCEED/PROGRESS because we are already hanging up\n"); break; default: ftdm_log_chan(ftdmchan, FTDM_LOG_CRIT, "Processing ALERT/PROCEED/PROGRESS in an invalid state (%s)\n", ftdm_channel_state2str(ftdmchan->state)); From 02ea0221abfa5ceeb1d1143234f8cd8af4de06f1 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 15 Feb 2012 14:17:54 -0600 Subject: [PATCH 071/292] fix proper return value on input callback in event case --- src/mod/languages/mod_lua/freeswitch_lua.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/languages/mod_lua/freeswitch_lua.cpp b/src/mod/languages/mod_lua/freeswitch_lua.cpp index 5f21775f84..4af4e380e7 100644 --- a/src/mod/languages/mod_lua/freeswitch_lua.cpp +++ b/src/mod/languages/mod_lua/freeswitch_lua.cpp @@ -319,7 +319,7 @@ switch_status_t Session::run_dtmf_callback(void *input, switch_input_type_t ityp arg_count++; } - docall(L, arg_count, 1, 1); + docall(L, arg_count, 0, 1); ret = lua_tostring(L, -1); lua_pop(L, 1); From 5e224c9f934887d8ce9814a72278626464c76b1f Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 15 Feb 2012 15:22:28 -0600 Subject: [PATCH 072/292] try to auto guess presence_id where possible --- .../applications/mod_dptools/mod_dptools.c | 3 +++ src/mod/endpoints/mod_sofia/sofia_glue.c | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index a76ac7d0ee..e067b091f0 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -3313,6 +3313,9 @@ static switch_call_cause_t user_outgoing_channel(switch_core_session_t *session, if (var_event) { switch_event_add_header_string(var_event, SWITCH_STACK_BOTTOM, "dialed_user", user); switch_event_add_header_string(var_event, SWITCH_STACK_BOTTOM, "dialed_domain", domain); + if (!strstr(dest, "presence_id=")) { + switch_event_add_header(var_event, SWITCH_STACK_BOTTOM, "presence_id", "%s@%s", user, domain); + } } if (!dest) { diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index ab68e108be..1e23e40ee3 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -2291,6 +2291,25 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session) switch_channel_set_variable(channel, "sip_to_host", sofia_glue_get_host(to_str, switch_core_session_get_pool(session))); switch_channel_set_variable(channel, "sip_from_host", sofia_glue_get_host(from_str, switch_core_session_get_pool(session))); + if (!switch_channel_get_variable(channel, "presence_id")) { + char *from = switch_core_session_strdup(session, from_str); + + if (!strncasecmp(from, "sip:", 4)) { + from += 4; + } + + if (!strncasecmp(from, "sips:", 4)) { + from += 5; + } + + if ((p = strchr(from, ':')) || (p = strchr(from, ';'))) { + *p++ = '\0'; + } + + switch_channel_set_variable(channel, "presence_id", from); + + } + if (!(tech_pvt->nh = nua_handle(tech_pvt->profile->nua, NULL, NUTAG_URL(url_str), TAG_IF(call_id, SIPTAG_CALL_ID_STR(call_id)), From 3004fa05d6bdfa18b35f4e7e2950879d213f035a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 15 Feb 2012 16:24:21 -0600 Subject: [PATCH 073/292] FS-3907 --- src/mod/endpoints/mod_sofia/sofia.c | 75 +++++++++++++++-------------- 1 file changed, 39 insertions(+), 36 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index fa1cd829b6..508fafc7ab 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -5900,53 +5900,56 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, switch_core_session_message_t *msg; if (switch_channel_test_flag(channel, CF_PROXY_MODE) && !is_t38 && profile->media_options & MEDIA_OPT_MEDIA_ON_HOLD) { - tech_pvt->hold_laps = 1; - switch_channel_set_variable(channel, SWITCH_R_SDP_VARIABLE, r_sdp); - switch_channel_clear_flag(channel, CF_PROXY_MODE); - sofia_glue_tech_set_local_sdp(tech_pvt, NULL, SWITCH_FALSE); + if (!switch_stristr("sendonly", r_sdp) || !switch_stristr("0.0.0.0", r_sdp)) { + tech_pvt->hold_laps = 1; + switch_channel_set_variable(channel, SWITCH_R_SDP_VARIABLE, r_sdp); + switch_channel_clear_flag(channel, CF_PROXY_MODE); + sofia_glue_tech_set_local_sdp(tech_pvt, NULL, SWITCH_FALSE); - if (!switch_channel_media_ready(channel)) { - if (switch_channel_direction(tech_pvt->channel) == SWITCH_CALL_DIRECTION_INBOUND) { - //const char *r_sdp = switch_channel_get_variable(channel, SWITCH_R_SDP_VARIABLE); + if (!switch_channel_media_ready(channel)) { + if (switch_channel_direction(tech_pvt->channel) == SWITCH_CALL_DIRECTION_INBOUND) { + //const char *r_sdp = switch_channel_get_variable(channel, SWITCH_R_SDP_VARIABLE); - tech_pvt->num_codecs = 0; + tech_pvt->num_codecs = 0; + sofia_glue_tech_prepare_codecs(tech_pvt); + if (sofia_glue_tech_media(tech_pvt, r_sdp) != SWITCH_STATUS_SUCCESS) { + switch_channel_set_variable(channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "CODEC NEGOTIATION ERROR"); + status = SWITCH_STATUS_FALSE; + switch_core_session_rwunlock(other_session); + goto done; + } + } + } + + + if (!switch_rtp_ready(tech_pvt->rtp_session)) { sofia_glue_tech_prepare_codecs(tech_pvt); - if (sofia_glue_tech_media(tech_pvt, r_sdp) != SWITCH_STATUS_SUCCESS) { - switch_channel_set_variable(channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "CODEC NEGOTIATION ERROR"); - status = SWITCH_STATUS_FALSE; + if ((status = sofia_glue_tech_choose_port(tech_pvt, 0)) != SWITCH_STATUS_SUCCESS) { + switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); switch_core_session_rwunlock(other_session); goto done; } } - } + sofia_glue_set_local_sdp(tech_pvt, NULL, 0, NULL, 1); - if (!switch_rtp_ready(tech_pvt->rtp_session)) { - sofia_glue_tech_prepare_codecs(tech_pvt); - if ((status = sofia_glue_tech_choose_port(tech_pvt, 0)) != SWITCH_STATUS_SUCCESS) { - switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); - switch_core_session_rwunlock(other_session); - goto done; + if (sofia_use_soa(tech_pvt)) { + nua_respond(tech_pvt->nh, SIP_200_OK, + SIPTAG_CONTACT_STR(tech_pvt->reply_contact), + SOATAG_USER_SDP_STR(tech_pvt->local_sdp_str), + SOATAG_REUSE_REJECTED(1), + SOATAG_ORDERED_USER(1), SOATAG_AUDIO_AUX("cn telephone-event"), + TAG_IF(sofia_test_pflag(profile, PFLAG_DISABLE_100REL), NUTAG_INCLUDE_EXTRA_SDP(1)), TAG_END()); + } else { + nua_respond(tech_pvt->nh, SIP_200_OK, + NUTAG_MEDIA_ENABLE(0), + SIPTAG_CONTACT_STR(tech_pvt->reply_contact), + SIPTAG_CONTENT_TYPE_STR("application/sdp"), SIPTAG_PAYLOAD_STR(tech_pvt->local_sdp_str), TAG_END()); } - } - sofia_glue_set_local_sdp(tech_pvt, NULL, 0, NULL, 1); + launch_media_on_hold(session); - if (sofia_use_soa(tech_pvt)) { - nua_respond(tech_pvt->nh, SIP_200_OK, - SIPTAG_CONTACT_STR(tech_pvt->reply_contact), - SOATAG_USER_SDP_STR(tech_pvt->local_sdp_str), - SOATAG_REUSE_REJECTED(1), - SOATAG_ORDERED_USER(1), SOATAG_AUDIO_AUX("cn telephone-event"), - TAG_IF(sofia_test_pflag(profile, PFLAG_DISABLE_100REL), NUTAG_INCLUDE_EXTRA_SDP(1)), TAG_END()); - } else { - nua_respond(tech_pvt->nh, SIP_200_OK, - NUTAG_MEDIA_ENABLE(0), - SIPTAG_CONTACT_STR(tech_pvt->reply_contact), - SIPTAG_CONTENT_TYPE_STR("application/sdp"), SIPTAG_PAYLOAD_STR(tech_pvt->local_sdp_str), TAG_END()); + switch_core_session_rwunlock(other_session); + goto done; } - launch_media_on_hold(session); - - switch_core_session_rwunlock(other_session); - goto done; } if (switch_channel_test_flag(channel, CF_PROXY_MEDIA)) { From db9aa0b59b6a5f5559d63f56040916d957197938 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 16 Feb 2012 09:49:41 -0600 Subject: [PATCH 074/292] FS-3906 --resolve FS-3907 doh lisdexic --- src/mod/endpoints/mod_sofia/sofia.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 508fafc7ab..cac1b43472 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -5900,7 +5900,7 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, switch_core_session_message_t *msg; if (switch_channel_test_flag(channel, CF_PROXY_MODE) && !is_t38 && profile->media_options & MEDIA_OPT_MEDIA_ON_HOLD) { - if (!switch_stristr("sendonly", r_sdp) || !switch_stristr("0.0.0.0", r_sdp)) { + if (switch_stristr("sendonly", r_sdp) || switch_stristr("0.0.0.0", r_sdp)) { tech_pvt->hold_laps = 1; switch_channel_set_variable(channel, SWITCH_R_SDP_VARIABLE, r_sdp); switch_channel_clear_flag(channel, CF_PROXY_MODE); From f24f2b3a1c4c7d790dba76337967e4ae8ff736e5 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 16 Feb 2012 10:20:55 -0600 Subject: [PATCH 075/292] FS-3901 --resolve alternate solution to FS-3870 --- src/switch_caller.c | 9 --------- src/switch_core_session.c | 2 ++ 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/switch_caller.c b/src/switch_caller.c index ca6be0b7ac..fd81fe9918 100644 --- a/src/switch_caller.c +++ b/src/switch_caller.c @@ -136,15 +136,6 @@ SWITCH_DECLARE(switch_caller_profile_t *) switch_caller_profile_dup(switch_memor profile->flags = tocopy->flags; profile->pool = pool; profile->direction = tocopy->direction; - if ((profile->times = tocopy->times)) { - profile->times->answered = 0; - profile->times->progress = 0; - profile->times->progress_media = 0; - profile->times->created = switch_time_now(); - profile->times->profile_created = profile->times->created; - profile->times->hungup = 0; - profile->times->transferred = 0; - } if (tocopy->soft) { profile_node_t *pn; diff --git a/src/switch_core_session.c b/src/switch_core_session.c index 40a25627f6..76a89b1fc2 100644 --- a/src/switch_core_session.c +++ b/src/switch_core_session.c @@ -2321,6 +2321,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_execute_exten(switch_core_se new_profile = switch_caller_profile_clone(session, profile); new_profile->destination_number = switch_core_strdup(new_profile->pool, exten); + new_profile->times = profile->times; + if (!zstr(dialplan)) { new_profile->dialplan = switch_core_strdup(new_profile->pool, dialplan); From 90805f6d025f3d422fd136bb9bdcd3ac79acea83 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 16 Feb 2012 10:40:56 -0600 Subject: [PATCH 076/292] revert part of last patch --- src/switch_odbc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/switch_odbc.c b/src/switch_odbc.c index 705587d5ba..24a25cb0af 100644 --- a/src/switch_odbc.c +++ b/src/switch_odbc.c @@ -605,8 +605,10 @@ SWITCH_DECLARE(switch_odbc_status_t) switch_odbc_handle_callback_exec_detailed(c free(vals); } + SQLFreeHandle(SQL_HANDLE_STMT, stmt); + stmt = NULL; /* Make sure we don't try to free this handle again */ + if (!err_cnt) { - SQLFreeHandle(SQL_HANDLE_STMT, stmt); return SWITCH_ODBC_SUCCESS; } From a822421be1091c1c93e2634e8c9455c2ab6b708d Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 16 Feb 2012 16:09:41 -0600 Subject: [PATCH 077/292] FS-3901 FS-3870 yay a chain of regressions --- src/switch_core_session.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/switch_core_session.c b/src/switch_core_session.c index 76a89b1fc2..aaf986b1c8 100644 --- a/src/switch_core_session.c +++ b/src/switch_core_session.c @@ -2321,7 +2321,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_execute_exten(switch_core_se new_profile = switch_caller_profile_clone(session, profile); new_profile->destination_number = switch_core_strdup(new_profile->pool, exten); - new_profile->times = profile->times; + new_profile->times = (switch_channel_timetable_t *) switch_core_session_alloc(session, sizeof(*new_profile->times)); + *new_profile->times = *profile->times; if (!zstr(dialplan)) { From d99e7ed76d51f43cc122b038f21827742448bc06 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 16 Feb 2012 18:15:50 -0600 Subject: [PATCH 078/292] FS-3910 test this patch --- src/include/private/switch_core_pvt.h | 3 +- src/switch_core_io.c | 19 +----- src/switch_core_media_bug.c | 86 ++++++++++++--------------- 3 files changed, 42 insertions(+), 66 deletions(-) diff --git a/src/include/private/switch_core_pvt.h b/src/include/private/switch_core_pvt.h index 13727b7390..9473139f20 100644 --- a/src/include/private/switch_core_pvt.h +++ b/src/include/private/switch_core_pvt.h @@ -196,8 +196,7 @@ struct switch_media_bug { switch_codec_implementation_t read_impl; switch_codec_implementation_t write_impl; switch_timer_t timer; - uint32_t last_read_ts; - uint32_t last_write_ts; + uint32_t record_frame_size; switch_frame_t *ping_frame; struct switch_media_bug *next; }; diff --git a/src/switch_core_io.c b/src/switch_core_io.c index 01e958b243..3a1b433c46 100644 --- a/src/switch_core_io.c +++ b/src/switch_core_io.c @@ -486,13 +486,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi } if (bp->ready && switch_test_flag(bp, SMBF_READ_STREAM)) { - audio_buffer_header_t h = { 0 }; - switch_mutex_lock(bp->read_mutex); - h.ts = bp->timer.samplecount; - h.len = read_frame->datalen; - switch_buffer_write(bp->raw_read_buffer, &h, sizeof(h)); - switch_buffer_write(bp->raw_read_buffer, read_frame->data, h.len); + switch_buffer_write(bp->raw_read_buffer, read_frame->data, read_frame->datalen); if (bp->callback) { ok = bp->callback(bp, bp->user_data, SWITCH_ABC_TYPE_READ); @@ -654,10 +649,6 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi continue; } - if (bp->ready && bp->timer.timer_interface) { - switch_core_timer_sync(&bp->timer); - } - if (bp->ready && switch_test_flag(bp, SMBF_READ_PING)) { switch_mutex_lock(bp->read_mutex); bp->ping_frame = *frame; @@ -982,14 +973,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_write_frame(switch_core_sess } if (switch_test_flag(bp, SMBF_WRITE_STREAM)) { - audio_buffer_header_t h = { 0 }; - switch_mutex_lock(bp->write_mutex); - h.ts = bp->timer.samplecount; - h.len = write_frame->datalen; - - switch_buffer_write(bp->raw_write_buffer, &h, sizeof(h)); - switch_buffer_write(bp->raw_write_buffer, write_frame->data, h.len); + switch_buffer_write(bp->raw_write_buffer, write_frame->data, write_frame->datalen); switch_mutex_unlock(bp->write_mutex); if (bp->callback) { diff --git a/src/switch_core_media_bug.c b/src/switch_core_media_bug.c index b8e84661a0..14eda22e16 100644 --- a/src/switch_core_media_bug.c +++ b/src/switch_core_media_bug.c @@ -148,20 +148,6 @@ SWITCH_DECLARE(void) switch_core_media_bug_inuse(switch_media_bug_t *bug, switch } } -static switch_size_t do_peek(switch_buffer_t *buffer, audio_buffer_header_t *h) -{ - const void *vp = NULL; - audio_buffer_header_t *hp; - switch_size_t r; - - if ((r = switch_buffer_peek_zerocopy(buffer, &vp))) { - hp = (audio_buffer_header_t *) vp; - *h = *hp; - } - - return r; -} - SWITCH_DECLARE(switch_status_t) switch_core_media_bug_read(switch_media_bug_t *bug, switch_frame_t *frame, switch_bool_t fill) { switch_size_t bytes = 0, datalen = 0; @@ -172,8 +158,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_read(switch_media_bug_t *b uint32_t blen; switch_codec_implementation_t read_impl = { 0 }; int16_t *tp; - audio_buffer_header_t rh = { 0 }, wh = { 0 }; - int do_read = 0, do_write = 0, fill_read = 0, fill_write = 0; + switch_size_t do_read = 0, do_write = 0; + int fill_read = 0, fill_write = 0; switch_core_session_get_read_impl(bug->session, &read_impl); @@ -197,23 +183,40 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_read(switch_media_bug_t *b if (switch_test_flag(bug, SMBF_READ_STREAM)) { switch_mutex_lock(bug->read_mutex); - do_read = !!do_peek(bug->raw_read_buffer, &rh); + do_read = switch_buffer_inuse(bug->raw_read_buffer); switch_mutex_unlock(bug->read_mutex); } if (switch_test_flag(bug, SMBF_WRITE_STREAM)) { switch_mutex_lock(bug->write_mutex); - do_write = !!do_peek(bug->raw_write_buffer, &wh); + do_write = switch_buffer_inuse(bug->raw_write_buffer); switch_mutex_unlock(bug->write_mutex); } - if ((do_read && rh.len > SWITCH_RECOMMENDED_BUFFER_SIZE) || (do_write && wh.len > SWITCH_RECOMMENDED_BUFFER_SIZE)) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(switch_core_media_bug_get_session(bug)), SWITCH_LOG_ERROR, "Framing Error!\n"); - switch_core_media_bug_flush(bug); - return SWITCH_STATUS_FALSE; + if (bug->record_frame_size) { + if ((do_read && do_read < bug->record_frame_size) || (do_write && do_write < bug->record_frame_size)) { + return SWITCH_STATUS_FALSE; + } + + if (do_read && do_read > bug->record_frame_size) { + do_read = bug->record_frame_size; + } + + if (do_write && do_write > bug->record_frame_size) { + do_write = bug->record_frame_size; + } + } else { + if (do_read && do_write) { + if (do_read > do_write) { + do_read = do_write; + } else if (do_write > do_read) { + do_write = do_read; + } + + bug->record_frame_size = do_read; + } } - - + fill_read = !do_read; fill_write = !do_write; @@ -223,19 +226,13 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_read(switch_media_bug_t *b if (do_read) { switch_mutex_lock(bug->read_mutex); - if (switch_buffer_read(bug->raw_read_buffer, &rh, sizeof(rh))) { - bug->last_read_ts = rh.ts; - frame->datalen = (uint32_t) switch_buffer_read(bug->raw_read_buffer, frame->data, rh.len); - if (frame->datalen != rh.len) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(switch_core_media_bug_get_session(bug)), SWITCH_LOG_ERROR, "Framing Error Reading!\n"); - switch_core_media_bug_flush(bug); - switch_mutex_unlock(bug->read_mutex); - return SWITCH_STATUS_FALSE; - } - } else { - do_read = 0; + frame->datalen = (uint32_t) switch_buffer_read(bug->raw_read_buffer, frame->data, do_read); + if (frame->datalen != do_read) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(switch_core_media_bug_get_session(bug)), SWITCH_LOG_ERROR, "Framing Error Reading!\n"); + switch_core_media_bug_flush(bug); + switch_mutex_unlock(bug->read_mutex); + return SWITCH_STATUS_FALSE; } - switch_mutex_unlock(bug->read_mutex); } else if (fill_read) { frame->datalen = bytes; @@ -245,17 +242,12 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_read(switch_media_bug_t *b if (do_write) { switch_assert(bug->raw_write_buffer); switch_mutex_lock(bug->write_mutex); - if ((switch_buffer_read(bug->raw_write_buffer, &wh, sizeof(wh)))) { - bug->last_write_ts = wh.ts; - datalen = (uint32_t) switch_buffer_read(bug->raw_write_buffer, bug->data, wh.len); - if (datalen != wh.len) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(switch_core_media_bug_get_session(bug)), SWITCH_LOG_ERROR, "Framing Error Writing!\n"); - switch_core_media_bug_flush(bug); - switch_mutex_unlock(bug->write_mutex); - return SWITCH_STATUS_FALSE; - } - } else { - do_write = 0; + datalen = (uint32_t) switch_buffer_read(bug->raw_write_buffer, bug->data, do_write); + if (datalen != do_write) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(switch_core_media_bug_get_session(bug)), SWITCH_LOG_ERROR, "Framing Error Writing!\n"); + switch_core_media_bug_flush(bug); + switch_mutex_unlock(bug->write_mutex); + return SWITCH_STATUS_FALSE; } switch_mutex_unlock(bug->write_mutex); } else if (fill_write) { From b05ca56adf2dd8f9b0bbf114827de98aec8313ae Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 16 Feb 2012 21:41:10 -0600 Subject: [PATCH 079/292] FS-3910 remove unnecessary code --- src/include/private/switch_core_pvt.h | 1 - src/switch_core_media_bug.c | 9 --------- 2 files changed, 10 deletions(-) diff --git a/src/include/private/switch_core_pvt.h b/src/include/private/switch_core_pvt.h index 9473139f20..7e3659b09d 100644 --- a/src/include/private/switch_core_pvt.h +++ b/src/include/private/switch_core_pvt.h @@ -195,7 +195,6 @@ struct switch_media_bug { char *target; switch_codec_implementation_t read_impl; switch_codec_implementation_t write_impl; - switch_timer_t timer; uint32_t record_frame_size; switch_frame_t *ping_frame; struct switch_media_bug *next; diff --git a/src/switch_core_media_bug.c b/src/switch_core_media_bug.c index 14eda22e16..c01d823963 100644 --- a/src/switch_core_media_bug.c +++ b/src/switch_core_media_bug.c @@ -47,10 +47,6 @@ static void switch_core_media_bug_destroy(switch_media_bug_t *bug) switch_buffer_destroy(&bug->raw_write_buffer); } - if (bug->timer.timer_interface) { - switch_core_timer_destroy(&bug->timer); - } - if (switch_event_create(&event, SWITCH_EVENT_MEDIA_BUG_STOP) == SWITCH_STATUS_SUCCESS) { switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Media-Bug-Function", "%s", bug->function); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Media-Bug-Target", "%s", bug->target); @@ -426,11 +422,6 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_add(switch_core_session_t switch_mutex_init(&bug->write_mutex, SWITCH_MUTEX_NESTED, session->pool); } - if (switch_test_flag(bug, SMBF_READ_STREAM) || switch_test_flag(bug, SMBF_WRITE_STREAM)) { - switch_core_timer_init(&bug->timer, "soft", bug->read_impl.microseconds_per_packet / 1000, bug->read_impl.samples_per_packet, - switch_core_session_get_pool(session)); - } - if ((bug->flags & SMBF_THREAD_LOCK)) { bug->thread_id = switch_thread_self(); } From 5e66db63f16f3d07f0182cc7187e31678088a34b Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Fri, 17 Feb 2012 08:50:03 -0600 Subject: [PATCH 080/292] FS-3896 --resolve that sizeof was incorrect --- libs/sofia-sip/libsofia-sip-ua/tport/tport_logging.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/sofia-sip/libsofia-sip-ua/tport/tport_logging.c b/libs/sofia-sip/libsofia-sip-ua/tport/tport_logging.c index 200ca5cb84..13eb63b2eb 100644 --- a/libs/sofia-sip/libsofia-sip-ua/tport/tport_logging.c +++ b/libs/sofia-sip/libsofia-sip-ua/tport/tport_logging.c @@ -180,7 +180,7 @@ int tport_open_log(tport_master_t *mr, tagi_t *tags) return n; } - memcpy(port, p, sizeof(p)); + strncpy(port, p, sizeof(port)); *p = '\0'; From f869fb305aa309008168e28e75e5166108319ab3 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 17 Feb 2012 09:51:04 -0600 Subject: [PATCH 081/292] FS-3917 --- src/mod/endpoints/mod_sofia/sofia_presence.c | 130 ++++++++++--------- 1 file changed, 68 insertions(+), 62 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 2e11271003..5a10dbfb64 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -899,89 +899,95 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) } if (event->event_id == SWITCH_EVENT_ROSTER) { - struct presence_helper helper = { 0 }; - - if (!mod_sofia_globals.profile_hash) { - return; - } - - if (from) { - - sql = switch_mprintf("update sip_subscriptions set version=version+1 where hostname='%q' and profile_name='%q' and " - "sip_subscriptions.event='presence' and sip_subscriptions.full_from like '%%%q%%'", - mod_sofia_globals.hostname, profile->name, from); - - if (mod_sofia_globals.debug_presence > 1) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "PRES SQL %s\n", sql); - } - - sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE); - - - sql = switch_mprintf("select sip_subscriptions.proto,sip_subscriptions.sip_user,sip_subscriptions.sip_host," - "sip_subscriptions.sub_to_user,sip_subscriptions.sub_to_host,sip_subscriptions.event," - "sip_subscriptions.contact,sip_subscriptions.call_id,sip_subscriptions.full_from," - "sip_subscriptions.full_via,sip_subscriptions.expires,sip_subscriptions.user_agent," - "sip_subscriptions.accept,sip_subscriptions.profile_name,sip_subscriptions.network_ip" - ",1,'%q','%q',sip_presence.status,sip_presence.rpid,sip_presence.open_closed,'','','','','sip'," - " sip_subscriptions.full_to,sip_subscriptions.network_ip,sip_subscriptions.network_port " - "from sip_subscriptions left join sip_presence on " - "(sip_subscriptions.sub_to_user=sip_presence.sip_user and sip_subscriptions.sub_to_host=sip_presence.sip_host and " - "sip_subscriptions.profile_name=sip_presence.profile_name and sip_presence.profile_name=sip_subscriptions.profile_name) " - "where sip_subscriptions.hostname='%q' and sip_subscriptions.profile_name='%q' and " - "sip_subscriptions.event='presence' and sip_subscriptions.full_from like '%%%q%%'", - switch_str_nil(status), switch_str_nil(rpid), mod_sofia_globals.hostname, profile->name, from); - } else { - - sql = switch_mprintf("update sip_subscriptions set version=version+1 where hostname='%q' and profile_name='%q' and " - "sip_subscriptions.event='presence'", mod_sofia_globals.hostname, profile->name); - - if (mod_sofia_globals.debug_presence > 1) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "PRES SQL %s\n", sql); - } - - sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE); - - sql = switch_mprintf("select sip_subscriptions.proto,sip_subscriptions.sip_user,sip_subscriptions.sip_host," - "sip_subscriptions.sub_to_user,sip_subscriptions.sub_to_host,sip_subscriptions.event," - "sip_subscriptions.contact,sip_subscriptions.call_id,sip_subscriptions.full_from," - "sip_subscriptions.full_via,sip_subscriptions.expires,sip_subscriptions.user_agent," - "sip_subscriptions.accept,sip_subscriptions.profile_name,sip_subscriptions.network_ip" - ",1,'%q','%q',sip_presence.status,sip_presence.rpid,sip_presence.open_closed,'','','','','sip'," - "sip_subscriptions.full_to,sip_subscriptions.network_ip,sip_subscriptions.network_port " - "from sip_subscriptions left join sip_presence on " - "(sip_subscriptions.sub_to_user=sip_presence.sip_user and sip_subscriptions.sub_to_host=sip_presence.sip_host and " - "sip_subscriptions.profile_name=sip_presence.profile_name and sip_subscriptions.hostname = sip_presence.hostname) " - "where sip_subscriptions.hostname='%q' and sip_subscriptions.profile_name='%q' and " - "sip_subscriptions.event='presence'", switch_str_nil(status), - switch_str_nil(rpid), mod_sofia_globals.hostname, profile->name); - } - - switch_assert(sql != NULL); - if (list_profiles_full(NULL, NULL, &matches, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS) { switch_console_callback_match_node_t *m; for (m = matches->head; m; m = m->next) { if ((profile = sofia_glue_find_profile(m->val))) { if (profile->pres_type != PRES_TYPE_FULL) { + + + if (!mod_sofia_globals.profile_hash) { + return; + } + + if (from) { + + sql = switch_mprintf("update sip_subscriptions set version=version+1 where hostname='%q' and profile_name='%q' and " + "sip_subscriptions.event='presence' and sip_subscriptions.full_from like '%%%q%%'", + mod_sofia_globals.hostname, profile->name, from); + + if (mod_sofia_globals.debug_presence > 1) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "PRES SQL %s\n", sql); + } + + sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE); + + + sql = switch_mprintf("select sip_subscriptions.proto,sip_subscriptions.sip_user,sip_subscriptions.sip_host," + "sip_subscriptions.sub_to_user,sip_subscriptions.sub_to_host,sip_subscriptions.event," + "sip_subscriptions.contact,sip_subscriptions.call_id,sip_subscriptions.full_from," + "sip_subscriptions.full_via,sip_subscriptions.expires,sip_subscriptions.user_agent," + "sip_subscriptions.accept,sip_subscriptions.profile_name,sip_subscriptions.network_ip" + ",1,'%q','%q',sip_presence.status,sip_presence.rpid,sip_presence.open_closed,'','','','','sip'," + " sip_subscriptions.full_to,sip_subscriptions.network_ip,sip_subscriptions.network_port " + "from sip_subscriptions left join sip_presence on " + "(sip_subscriptions.sub_to_user=sip_presence.sip_user and " + "sip_subscriptions.sub_to_host=sip_presence.sip_host and " + "sip_subscriptions.profile_name=sip_presence.profile_name and " + "sip_presence.profile_name=sip_subscriptions.profile_name) " + "where sip_subscriptions.hostname='%q' and sip_subscriptions.profile_name='%q' and " + "sip_subscriptions.event='presence' and sip_subscriptions.full_from like '%%%q%%'", + switch_str_nil(status), switch_str_nil(rpid), mod_sofia_globals.hostname, profile->name, from); + } else { + + sql = switch_mprintf("update sip_subscriptions set version=version+1 where hostname='%q' and profile_name='%q' and " + "sip_subscriptions.event='presence'", mod_sofia_globals.hostname, profile->name); + + if (mod_sofia_globals.debug_presence > 1) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "PRES SQL %s\n", sql); + } + + sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE); + + sql = switch_mprintf("select sip_subscriptions.proto,sip_subscriptions.sip_user,sip_subscriptions.sip_host," + "sip_subscriptions.sub_to_user,sip_subscriptions.sub_to_host,sip_subscriptions.event," + "sip_subscriptions.contact,sip_subscriptions.call_id,sip_subscriptions.full_from," + "sip_subscriptions.full_via,sip_subscriptions.expires,sip_subscriptions.user_agent," + "sip_subscriptions.accept,sip_subscriptions.profile_name,sip_subscriptions.network_ip" + ",1,'%q','%q',sip_presence.status,sip_presence.rpid,sip_presence.open_closed,'','','','','sip'," + "sip_subscriptions.full_to,sip_subscriptions.network_ip,sip_subscriptions.network_port " + "from sip_subscriptions left join sip_presence on " + "(sip_subscriptions.sub_to_user=sip_presence.sip_user and " + "sip_subscriptions.sub_to_host=sip_presence.sip_host and " + "sip_subscriptions.profile_name=sip_presence.profile_name and " + "sip_subscriptions.hostname = sip_presence.hostname) " + "where sip_subscriptions.hostname='%q' and sip_subscriptions.profile_name='%q' and " + "sip_subscriptions.event='presence'", switch_str_nil(status), + switch_str_nil(rpid), mod_sofia_globals.hostname, profile->name); + } + + switch_assert(sql != NULL); + + if (mod_sofia_globals.debug_presence > 0) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "%s is passive, skipping\n", (char *) profile->name); } sofia_glue_release_profile(profile); continue; } + memset(&helper, 0, sizeof(helper)); helper.profile = profile; helper.event = NULL; sofia_glue_execute_sql_callback(profile, profile->ireg_mutex, sql, sofia_presence_sub_callback, &helper); - + switch_safe_free(sql); sofia_glue_release_profile(profile); } } switch_console_free_matches(&matches); } - free(sql); + switch_safe_free(sql); return; } From 33cb10d6c5b65f86696c54613ab28e47c022d802 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 17 Feb 2012 09:57:56 -0600 Subject: [PATCH 082/292] FS-3915 --resolve --- src/mod/endpoints/mod_sofia/mod_sofia.c | 15 ++++++++++----- src/mod/endpoints/mod_sofia/sofia_glue.c | 13 ++++++++++--- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index 0a49cc3730..a33b468819 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -1912,13 +1912,18 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi { switch_t38_options_t *t38_options = switch_channel_get_private(tech_pvt->channel, "t38_options"); - sofia_glue_set_image_sdp(tech_pvt, t38_options, msg->numeric_arg); + if (t38_options) { + sofia_glue_set_image_sdp(tech_pvt, t38_options, msg->numeric_arg); - if (!switch_channel_test_flag(channel, CF_PROXY_MEDIA)) { - switch_channel_set_flag(channel, CF_REQ_MEDIA); + if (!switch_channel_test_flag(channel, CF_PROXY_MEDIA)) { + switch_channel_set_flag(channel, CF_REQ_MEDIA); + } + sofia_set_flag_locked(tech_pvt, TFLAG_SENT_UPDATE); + sofia_glue_do_invite(session); + } else { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "%s Request to send IMAGE on channel with not t38 options.\n", + switch_channel_get_name(channel)); } - sofia_set_flag_locked(tech_pvt, TFLAG_SENT_UPDATE); - sofia_glue_do_invite(session); } break; diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 1e23e40ee3..3f754462e7 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -44,10 +44,10 @@ void sofia_glue_set_image_sdp(private_object_t *tech_pvt, switch_t38_options_t * char buf[2048] = ""; char max_buf[128] = ""; char max_data[128] = ""; - const char *ip = t38_options->local_ip; - uint32_t port = t38_options->local_port; + const char *ip; + uint32_t port; const char *family = "IP4"; - const char *username = tech_pvt->profile->username; + const char *username; const char *bit_removal_on = "a=T38FaxFillBitRemoval\n"; const char *bit_removal_off = ""; @@ -59,6 +59,13 @@ void sofia_glue_set_image_sdp(private_object_t *tech_pvt, switch_t38_options_t * const char *var; int broken_boolean; + switch_assert(tech_pvt); + switch_assert(t38_options); + + ip = t38_options->local_ip; + port = t38_options->local_port; + username = tech_pvt->profile->username; + //sofia_clear_flag(tech_pvt, TFLAG_ENABLE_SOA); var = switch_channel_get_variable(tech_pvt->channel, "t38_broken_boolean"); From 3a0cfa9aaaebaf5757d0bc337960ed178ee22009 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 17 Feb 2012 10:04:09 -0600 Subject: [PATCH 083/292] FS-3916 --resolve i don't think its necessary for info but you could try it with another FS process to confirm --- src/mod/endpoints/mod_sofia/mod_sofia.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index a33b468819..a2d7a5d45c 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -2154,6 +2154,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi nua_update(tech_pvt->nh, NUTAG_SESSION_TIMER(tech_pvt->session_timeout), NUTAG_SESSION_REFRESHER(tech_pvt->session_refresher), + TAG_IF(!zstr(tech_pvt->route_uri), NUTAG_PROXY(tech_pvt->route_uri)), TAG_IF(!zstr_buf(message), SIPTAG_HEADER_STR(message)), TAG_IF(!zstr(tech_pvt->user_via), SIPTAG_VIA_STR(tech_pvt->user_via)), TAG_END()); } else if ((ua && (switch_stristr("Yealink", ua)))) { @@ -2163,6 +2164,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi nua_update(tech_pvt->nh, NUTAG_SESSION_TIMER(tech_pvt->session_timeout), NUTAG_SESSION_REFRESHER(tech_pvt->session_refresher), + TAG_IF(!zstr(tech_pvt->route_uri), NUTAG_PROXY(tech_pvt->route_uri)), TAG_IF(!zstr_buf(message), SIPTAG_HEADER_STR(message)), TAG_IF(!zstr(tech_pvt->user_via), SIPTAG_VIA_STR(tech_pvt->user_via)), TAG_END()); } From f6941ca48f9596f153d31714ad9743082ba92853 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 17 Feb 2012 11:23:59 -0600 Subject: [PATCH 084/292] FS-3910 It seems to have a problem keeping up with the realtime audio. Try this patch that introduces some prebuffering --- src/include/private/switch_core_pvt.h | 2 ++ src/include/switch_core.h | 2 ++ src/switch_core_media_bug.c | 25 ++++++++++++++++++++++++- src/switch_ivr_async.c | 10 ++++++++++ 4 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/include/private/switch_core_pvt.h b/src/include/private/switch_core_pvt.h index 7e3659b09d..ff0a6189b9 100644 --- a/src/include/private/switch_core_pvt.h +++ b/src/include/private/switch_core_pvt.h @@ -196,6 +196,8 @@ struct switch_media_bug { switch_codec_implementation_t read_impl; switch_codec_implementation_t write_impl; uint32_t record_frame_size; + uint32_t record_pre_buffer_count; + uint32_t record_pre_buffer_max; switch_frame_t *ping_frame; struct switch_media_bug *next; }; diff --git a/src/include/switch_core.h b/src/include/switch_core.h index 2558e1bb19..517e13ed94 100644 --- a/src/include/switch_core.h +++ b/src/include/switch_core.h @@ -270,6 +270,8 @@ SWITCH_DECLARE(void) switch_core_media_bug_flush(_In_ switch_media_bug_t *bug); */ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_flush_all(_In_ switch_core_session_t *session); +SWITCH_DECLARE(switch_status_t) switch_core_media_bug_set_pre_buffer_framecount(switch_media_bug_t *bug, uint32_t framecount); + ///\} ///\defgroup pa1 Port Allocation diff --git a/src/switch_core_media_bug.c b/src/switch_core_media_bug.c index c01d823963..0397aa666b 100644 --- a/src/switch_core_media_bug.c +++ b/src/switch_core_media_bug.c @@ -112,6 +112,9 @@ SWITCH_DECLARE(void *) switch_core_media_bug_get_user_data(switch_media_bug_t *b SWITCH_DECLARE(void) switch_core_media_bug_flush(switch_media_bug_t *bug) { + + bug->record_pre_buffer_count = 0; + if (bug->raw_read_buffer) { switch_mutex_lock(bug->read_mutex); switch_buffer_zero(bug->raw_read_buffer); @@ -144,6 +147,13 @@ SWITCH_DECLARE(void) switch_core_media_bug_inuse(switch_media_bug_t *bug, switch } } +SWITCH_DECLARE(switch_status_t) switch_core_media_bug_set_pre_buffer_framecount(switch_media_bug_t *bug, uint32_t framecount) +{ + bug->record_pre_buffer_max = framecount; + + return SWITCH_STATUS_SUCCESS; +} + SWITCH_DECLARE(switch_status_t) switch_core_media_bug_read(switch_media_bug_t *bug, switch_frame_t *frame, switch_bool_t fill) { switch_size_t bytes = 0, datalen = 0; @@ -188,6 +198,11 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_read(switch_media_bug_t *b do_write = switch_buffer_inuse(bug->raw_write_buffer); switch_mutex_unlock(bug->write_mutex); } + + if (bug->record_frame_size && bug->record_pre_buffer_max && (do_read || do_write) && bug->record_pre_buffer_count < bug->record_pre_buffer_max) { + bug->record_pre_buffer_count++; + return SWITCH_STATUS_FALSE; + } if (bug->record_frame_size) { if ((do_read && do_read < bug->record_frame_size) || (do_write && do_write < bug->record_frame_size)) { @@ -212,7 +227,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_read(switch_media_bug_t *b bug->record_frame_size = do_read; } } - + fill_read = !do_read; fill_write = !do_write; @@ -220,6 +235,14 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_read(switch_media_bug_t *b return SWITCH_STATUS_FALSE; } + if (do_read && do_read > SWITCH_RECOMMENDED_BUFFER_SIZE) { + do_read = 1280; + } + + if (do_write && do_write > SWITCH_RECOMMENDED_BUFFER_SIZE) { + do_write = 1280; + } + if (do_read) { switch_mutex_lock(bug->read_mutex); frame->datalen = (uint32_t) switch_buffer_read(bug->raw_read_buffer, frame->data, do_read); diff --git a/src/switch_ivr_async.c b/src/switch_ivr_async.c index 7b6cd1271c..9971ab68e0 100644 --- a/src/switch_ivr_async.c +++ b/src/switch_ivr_async.c @@ -1765,6 +1765,16 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_session(switch_core_session_t return status; } + if ((p = switch_channel_get_variable(channel, "RECORD_PRE_BUFFER_FRAMES"))) { + int tmp = atoi(p); + + if (tmp > 0) { + switch_core_media_bug_set_pre_buffer_framecount(bug, tmp); + } + } else { + switch_core_media_bug_set_pre_buffer_framecount(bug, 25); + } + switch_channel_set_private(channel, file, bug); return SWITCH_STATUS_SUCCESS; From 341cc2f0fc270ba4cbf32f5ed3ff232ba4c12ae4 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 17 Feb 2012 19:47:57 -0600 Subject: [PATCH 085/292] FS-3917 sneaky sql null vs != crap --- src/mod/applications/mod_spandsp/Makefile.am | 6 ++++++ src/mod/endpoints/mod_sofia/mod_sofia.c | 4 ++-- src/mod/endpoints/mod_sofia/sofia.c | 10 ++++++---- src/mod/endpoints/mod_sofia/sofia_glue.c | 2 +- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/mod/applications/mod_spandsp/Makefile.am b/src/mod/applications/mod_spandsp/Makefile.am index 2a63c42316..551a2b560c 100644 --- a/src/mod/applications/mod_spandsp/Makefile.am +++ b/src/mod/applications/mod_spandsp/Makefile.am @@ -22,3 +22,9 @@ $(SPANDSP_LA): $(TIFF_LA) $(SPANDSP_DIR) $(SPANDSP_DIR)/.update $(TIFF_LA): $(TIFF_DIR) $(TIFF_DIR)/.update cd $(TIFF_BUILDDIR) && $(MAKE) -j1 $(TOUCH_TARGET) + +install-exec-local: $(DESTDIR)$(libdir)/libspandsp.la + +$(DESTDIR)$(libdir)/libspandsp.la: $(SPANDSP_LA) + cd $(TIFF_DIR) && $(MAKE) -j1 install + cd $(SPANDSP_DIR) && $(MAKE) -j1 install diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index a2d7a5d45c..d8f548e188 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -4647,8 +4647,8 @@ static switch_call_cause_t sofia_outgoing_channel(switch_core_session_t *session } now = switch_epoch_time_now(NULL); - sql = switch_mprintf("insert into sip_dialogs (uuid,presence_id,presence_data,profile_name,hostname,rcd) " - "values ('%q', '%q', '%q', '%q', '%q', %ld)", switch_core_session_get_uuid(nsession), + sql = switch_mprintf("insert into sip_dialogs (uuid,presence_id,presence_data,profile_name,hostname,rcd,call_info_state) " + "values ('%q', '%q', '%q', '%q', '%q', %ld, '')", switch_core_session_get_uuid(nsession), switch_str_nil(presence_id), switch_str_nil(presence_data), profile->name, mod_sofia_globals.hostname, (long) now); sofia_glue_actually_execute_sql(profile, sql, profile->ireg_mutex); switch_safe_free(sql); diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index cac1b43472..8b362b6f33 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -5265,8 +5265,9 @@ static void sofia_handle_sip_r_invite(switch_core_session_t *session, int status sql = switch_mprintf("insert into sip_dialogs " "(call_id,uuid,sip_to_user,sip_to_host,sip_to_tag,sip_from_user,sip_from_host,sip_from_tag,contact_user," - "contact_host,state,direction,user_agent,profile_name,hostname,contact,presence_id,presence_data,call_info,rcd) " - "values('%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q',%ld)", + "contact_host,state,direction,user_agent,profile_name,hostname,contact,presence_id,presence_data," + "call_info,rcd,call_info_state) " + "values('%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q',%ld,'')", call_id, switch_core_session_get_uuid(session), to_user, to_host, to_tag, from_user, from_host, from_tag, contact_user, @@ -8446,8 +8447,9 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_ sql = switch_mprintf("insert into sip_dialogs " "(call_id,uuid,sip_to_user,sip_to_host,sip_to_tag,sip_from_user,sip_from_host,sip_from_tag,contact_user," - "contact_host,state,direction,user_agent,profile_name,hostname,contact,presence_id,presence_data,call_info,rcd) " - "values('%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q',%ld)", + "contact_host,state,direction,user_agent,profile_name,hostname,contact,presence_id,presence_data," + "call_info,rcd,call_info_state) " + "values('%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q',%ld,'')", call_id, tech_pvt->sofia_private->uuid, to_user, to_host, to_tag, dialog_from_user, dialog_from_host, from_tag, diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 3f754462e7..6ae9cef645 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -5985,7 +5985,7 @@ int sofia_glue_init_sql(sofia_profile_t *profile) " presence_id VARCHAR(255),\n" " presence_data VARCHAR(255),\n" " call_info VARCHAR(255),\n" - " call_info_state VARCHAR(255),\n" + " call_info_state VARCHAR(255) default '',\n" " expires INTEGER default 0,\n" " status VARCHAR(255),\n" " rpid VARCHAR(255),\n" From 4bbd967142a43b416377ee617fad720f0f810464 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 17 Feb 2012 20:21:44 -0600 Subject: [PATCH 086/292] FS-3794 this one might solve more issues --- src/mod/applications/mod_spandsp/Makefile.am | 6 ------ src/mod/endpoints/mod_sofia/sofia_presence.c | 7 +++---- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/mod/applications/mod_spandsp/Makefile.am b/src/mod/applications/mod_spandsp/Makefile.am index 551a2b560c..2a63c42316 100644 --- a/src/mod/applications/mod_spandsp/Makefile.am +++ b/src/mod/applications/mod_spandsp/Makefile.am @@ -22,9 +22,3 @@ $(SPANDSP_LA): $(TIFF_LA) $(SPANDSP_DIR) $(SPANDSP_DIR)/.update $(TIFF_LA): $(TIFF_DIR) $(TIFF_DIR)/.update cd $(TIFF_BUILDDIR) && $(MAKE) -j1 $(TOUCH_TARGET) - -install-exec-local: $(DESTDIR)$(libdir)/libspandsp.la - -$(DESTDIR)$(libdir)/libspandsp.la: $(SPANDSP_LA) - cd $(TIFF_DIR) && $(MAKE) -j1 install - cd $(SPANDSP_DIR) && $(MAKE) -j1 install diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 5a10dbfb64..719cdfcecd 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -1272,8 +1272,9 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) event->event_id == SWITCH_EVENT_PRESENCE_IN ? "IN" : "OUT", profile->name); } -#if 0 - if (hup) { + + if (hup) { + /* so many phones get confused when whe hangup we have to reprobe to get them all to reset to absolute states so the lights stay correct */ switch_event_t *s_event; if (switch_event_create(&s_event, SWITCH_EVENT_PRESENCE_PROBE) == SWITCH_STATUS_SUCCESS) { @@ -1287,8 +1288,6 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) } } -#endif - if (!zstr((char *) helper.stream.data)) { char *this_sql = (char *) helper.stream.data; char *next = NULL; From 2c52f23643cecf47050bdf4e4148d6fb0c217af4 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Sat, 18 Feb 2012 08:37:47 -0600 Subject: [PATCH 087/292] FS-3910 forgot part of this last patch --- src/switch_ivr_async.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/switch_ivr_async.c b/src/switch_ivr_async.c index 9971ab68e0..1620086e62 100644 --- a/src/switch_ivr_async.c +++ b/src/switch_ivr_async.c @@ -1097,28 +1097,26 @@ static switch_bool_t record_callback(switch_media_bug_t *bug, void *user_data, s switch_size_t len; uint8_t data[SWITCH_RECOMMENDED_BUFFER_SIZE]; switch_frame_t frame = { 0 }; + switch_status_t status; frame.data = data; frame.buflen = SWITCH_RECOMMENDED_BUFFER_SIZE; - for (;;) { - switch_status_t status = switch_core_media_bug_read(bug, &frame, SWITCH_FALSE); - if (status != SWITCH_STATUS_SUCCESS && status != SWITCH_STATUS_BREAK) { - break; - } - + status = switch_core_media_bug_read(bug, &frame, SWITCH_FALSE); + + if (status == SWITCH_STATUS_SUCCESS || status == SWITCH_STATUS_BREAK) { len = (switch_size_t) frame.datalen / 2; + if (len && switch_core_file_write(rh->fh, data, &len) != SWITCH_STATUS_SUCCESS && rh->hangup_on_error) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error writing %s\n", rh->file); switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE); return SWITCH_FALSE; } - - if (status == SWITCH_STATUS_BREAK) break; } + } break; case SWITCH_ABC_TYPE_WRITE: From ca4c800fb3616e2bffc686b66fc9c73f5c0c1eba Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 20 Feb 2012 11:11:15 -0600 Subject: [PATCH 088/292] FS-3794 --- src/mod/endpoints/mod_sofia/sofia_presence.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 719cdfcecd..0bb119f8d3 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -1124,7 +1124,7 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) switch_safe_free(sql); - +#if 0 if (hup && dh.hits > 0) { /* sigh, mangle this packet to simulate a call that is up instead of hungup */ event->flags |= EF_UNIQ_HEADERS; @@ -1155,7 +1155,7 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "answer-state", "confirmed"); } } - +#endif if (zstr(call_id) && (dh.hits && presence_source && (!strcasecmp(presence_source, "register") || switch_stristr("register", status)))) { goto done; From d36f5932047a388062bf6cc6bd703427a715e004 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 21 Feb 2012 10:00:19 -0600 Subject: [PATCH 089/292] fire failed sms events --- src/switch_loadable_module.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/switch_loadable_module.c b/src/switch_loadable_module.c index 335e15df00..36cc24b282 100644 --- a/src/switch_loadable_module.c +++ b/src/switch_loadable_module.c @@ -579,14 +579,23 @@ static switch_status_t do_chat_send(switch_event_t *message_event) } if (!do_skip && !switch_stristr("GLOBAL", dest_proto)) { - if (!(ci = switch_loadable_module_get_chat_interface(dest_proto)) || !ci->chat_send) { + if ((ci = switch_loadable_module_get_chat_interface(dest_proto)) && ci->chat_send) { + status = ci->chat_send(message_event); + UNPROTECT_INTERFACE(ci); + } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid chat interface [%s]!\n", dest_proto); - return SWITCH_STATUS_FALSE; + status = SWITCH_STATUS_FALSE; } - status = ci->chat_send(message_event); - UNPROTECT_INTERFACE(ci); } + if (status != SWITCH_STATUS_SUCCESS) { + switch_event_t *dup; + switch_event_dup(&dup, message_event); + switch_event_add_header_string(dup, SWITCH_STACK_BOTTOM, "Delivery-Failure", "true"); + switch_event_fire(&dup); + } + + return status; } From ba1db5b65af34f0adf1f9ece9017dac57bc4f772 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 21 Feb 2012 10:08:58 -0600 Subject: [PATCH 090/292] FS-3928 --resolve --- src/mod/applications/mod_dptools/mod_dptools.c | 6 ++++++ src/mod/endpoints/mod_sofia/mod_sofia.c | 3 ++- src/mod/endpoints/mod_sofia/sofia_glue.c | 3 ++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index e067b091f0..f5c28221c1 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -3038,6 +3038,12 @@ SWITCH_STANDARD_APP(audio_bridge_function) } else { if (switch_channel_test_flag(caller_channel, CF_PROXY_MODE)) { + switch_channel_t *channel = switch_core_session_get_channel(session); + switch_channel_t *peer_channel = switch_core_session_get_channel(peer_session); + if (switch_true(switch_channel_get_variable(caller_channel, SWITCH_BYPASS_MEDIA_AFTER_BRIDGE_VARIABLE)) || + switch_true(switch_channel_get_variable(peer_channel, SWITCH_BYPASS_MEDIA_AFTER_BRIDGE_VARIABLE))) { + switch_channel_set_flag(caller_channel, CF_BYPASS_MEDIA_AFTER_BRIDGE); + } switch_ivr_signal_bridge(session, peer_session); } else { switch_channel_t *channel = switch_core_session_get_channel(session); diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index d8f548e188..ee79914236 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -1723,7 +1723,8 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi } - if ((var = switch_channel_get_variable(channel, SOFIA_SECURE_MEDIA_VARIABLE)) && switch_true(var)) { + if ((var = switch_channel_get_variable(channel, SOFIA_SECURE_MEDIA_VARIABLE)) && + (switch_true(var) || !strcasecmp(var, SWITCH_RTP_CRYPTO_KEY_32) || !strcasecmp(var, SWITCH_RTP_CRYPTO_KEY_80))) { sofia_set_flag_locked(tech_pvt, TFLAG_SECURE); } diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 6ae9cef645..d8824dae33 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -4628,7 +4628,8 @@ uint8_t sofia_glue_negotiate_sdp(switch_core_session_t *session, const char *r_s crypto_tag = atoi(crypto); if (tech_pvt->remote_crypto_key && switch_rtp_ready(tech_pvt->rtp_session)) { - if (crypto_tag && crypto_tag == tech_pvt->crypto_tag) { + /* Compare all the key. The tag may remain the same even if key changed */ + if (crypto && !strcmp(crypto, tech_pvt->remote_crypto_key)) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Existing key is still valid.\n"); } else { const char *a = switch_stristr("AES", tech_pvt->remote_crypto_key); From 7eba3f2b1ca1817f593cc75a9ea98d80ce43a5de Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 21 Feb 2012 10:10:28 -0600 Subject: [PATCH 091/292] FS-3927 --resolve --- .../applications/mod_commands/mod_commands.c | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/mod/applications/mod_commands/mod_commands.c b/src/mod/applications/mod_commands/mod_commands.c index 48cfebf8ca..41db0f191b 100644 --- a/src/mod/applications/mod_commands/mod_commands.c +++ b/src/mod/applications/mod_commands/mod_commands.c @@ -5312,6 +5312,27 @@ SWITCH_STANDARD_API(log_function) return SWITCH_STATUS_SUCCESS; } +SWITCH_STANDARD_API(file_exists_function) +{ + if (!zstr(cmd)) { + switch_memory_pool_t *pool; + + switch_core_new_memory_pool(&pool); + + if (switch_file_exists(cmd, pool) == SWITCH_STATUS_SUCCESS) { + stream->write_function(stream, "true"); + } else { + stream->write_function(stream, "false"); + } + + switch_core_destroy_memory_pool(&pool); + } else { + stream->write_function(stream, "false"); + } + + return SWITCH_STATUS_SUCCESS; +} + SWITCH_MODULE_LOAD_FUNCTION(mod_commands_load) { switch_api_interface_t *commands_api_interface; @@ -5436,6 +5457,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_commands_load) SWITCH_ADD_API(commands_api_interface, "xml_flush_cache", "clear xml cache", xml_flush_function, " "); SWITCH_ADD_API(commands_api_interface, "xml_locate", "find some xml", xml_locate_function, "[root |
]"); SWITCH_ADD_API(commands_api_interface, "xml_wrap", "Wrap another api command in xml", xml_wrap_api_function, " "); + SWITCH_ADD_API(commands_api_interface, "file_exists", "check if a file exists on server", file_exists_function, ""); switch_console_set_complete("add alias add"); @@ -5577,6 +5599,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_commands_load) switch_console_set_complete("add version"); switch_console_set_complete("add uuid_warning ::console::list_uuid"); switch_console_set_complete("add ..."); + switch_console_set_complete("add file_exists"); /* indicate that the module should continue to be loaded */ From 25dd668af269ed9221556f155feb4dd9c0e223ad Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 21 Feb 2012 10:51:18 -0600 Subject: [PATCH 092/292] allow enable_file_write_buffering to alternatively allow you to set the exact size of the pre buffer --- src/switch_ivr_async.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/switch_ivr_async.c b/src/switch_ivr_async.c index 1620086e62..6e3385ff23 100644 --- a/src/switch_ivr_async.c +++ b/src/switch_ivr_async.c @@ -1639,10 +1639,19 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_session(switch_core_session_t fh->channels = channels; - vval = switch_channel_get_variable(channel, "enable_file_write_buffering"); - if (!vval || switch_true(vval)) { + if ((vval = switch_channel_get_variable(channel, "enable_file_write_buffering"))) { + int tmp = atoi(vval); + + if (tmp > 0) { + fh->pre_buffer_datalen = tmp; + } else if (switch_true(vval)) { + fh->pre_buffer_datalen = SWITCH_DEFAULT_FILE_BUFFER_LEN; + } + + } else { fh->pre_buffer_datalen = SWITCH_DEFAULT_FILE_BUFFER_LEN; } + if (!switch_is_file_path(file)) { char *tfile = NULL; From ffdf56243383d989df43ad8147eaa850c350fd20 Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Tue, 21 Feb 2012 12:26:36 -0600 Subject: [PATCH 093/292] remove unreferenced variable --- src/mod/applications/mod_dptools/mod_dptools.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index f5c28221c1..8067e98675 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -3038,7 +3038,6 @@ SWITCH_STANDARD_APP(audio_bridge_function) } else { if (switch_channel_test_flag(caller_channel, CF_PROXY_MODE)) { - switch_channel_t *channel = switch_core_session_get_channel(session); switch_channel_t *peer_channel = switch_core_session_get_channel(peer_session); if (switch_true(switch_channel_get_variable(caller_channel, SWITCH_BYPASS_MEDIA_AFTER_BRIDGE_VARIABLE)) || switch_true(switch_channel_get_variable(peer_channel, SWITCH_BYPASS_MEDIA_AFTER_BRIDGE_VARIABLE))) { From b0de882aeeeff65fb4aa2f31f6c28e379d2dd8e2 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 21 Feb 2012 15:33:37 -0600 Subject: [PATCH 094/292] FS-3794 I think I got to the bottom of the thing you hit with intercept, please update to this version --- src/mod/endpoints/mod_sofia/sofia_presence.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 0bb119f8d3..1a949044da 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -2487,9 +2487,12 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * "\n", version, default_dialog, clean_id); - } + if (!strcasecmp(astate, "hangup")) { + astate = "terminated"; + } + if (!zstr(uuid)) { if (!zstr(answer_state)) { astate = answer_state; @@ -2507,9 +2510,6 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * astate = "confirmed"; } - if (!strcasecmp(astate, "hangup")) { - astate = "terminated"; - } if (is_dialog) { @@ -2629,7 +2629,7 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * if (in) { open = "open"; - if (switch_false(resub)) { + if (!strcasecmp(astate, "terminated") && switch_false(resub)) { int term; const char *direction = switch_event_get_header(helper->event, "Caller-Direction"); From e9a7cb42a1b43e58c34cc9f71106b3022ac6f819 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 21 Feb 2012 15:52:17 -0600 Subject: [PATCH 095/292] FS-3930 --resolve --- src/mod/endpoints/mod_sofia/sofia.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 8b362b6f33..a30cbb699d 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -4736,7 +4736,7 @@ static void sofia_handle_sip_r_options(switch_core_session_t *session, int statu gateway->ping = switch_epoch_time_now(NULL) + gateway->ping_freq; sofia_reg_release_gateway(gateway); gateway->pinging = 0; - } else if (sofia_test_pflag(profile, PFLAG_UNREG_OPTIONS_FAIL) && status != 200 && sip && sip->sip_to) { + } else if (sofia_test_pflag(profile, PFLAG_UNREG_OPTIONS_FAIL) && (status != 200 && status != 486) && sip && sip->sip_to) { char *sql; time_t now = switch_epoch_time_now(NULL); switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "Expire registration '%s@%s' due to options failure\n", From 21a469e4d2fbb2dd66afc52d1994febce287ae76 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 22 Feb 2012 11:51:49 -0600 Subject: [PATCH 096/292] FS-3935 --resolve --- src/mod/endpoints/mod_sofia/sofia_presence.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 1a949044da..ecedd8898e 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -3559,8 +3559,9 @@ void sofia_presence_handle_sip_i_subscribe(int status, switch_event_add_header_string(sevent, SWITCH_STACK_BOTTOM, "proto", SOFIA_CHAT_PROTO); switch_event_add_header_string(sevent, SWITCH_STACK_BOTTOM, "login", profile->name); switch_event_add_header_string(sevent, SWITCH_STACK_BOTTOM, "presence-source", "subscribe"); - switch_event_add_header(sevent, SWITCH_STACK_BOTTOM, "from", "%s@%s", to_user, to_host); + switch_event_add_header(sevent, SWITCH_STACK_BOTTOM, "from", "%s@%s", from_user, from_host); switch_event_add_header(sevent, SWITCH_STACK_BOTTOM, "to", "%s@%s", to_user, to_host); + switch_event_add_header_string(sevent, SWITCH_STACK_BOTTOM, "expires", exp_delta_str); switch_event_add_header_string(sevent, SWITCH_STACK_BOTTOM, "alt_event_type", "dialog"); switch_event_add_header_string(sevent, SWITCH_STACK_BOTTOM, "rpid", "unknown"); switch_event_add_header_string(sevent, SWITCH_STACK_BOTTOM, "status", "Registered"); From 8e47f3c660276bc653f6cb1ac2611d5345244bd9 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 22 Feb 2012 15:26:38 -0600 Subject: [PATCH 097/292] FS-3937 --resolve --- src/mod/endpoints/mod_sofia/mod_sofia.h | 1 + src/mod/endpoints/mod_sofia/sofia_glue.c | 24 ++++++++++++++++++++ src/mod/endpoints/mod_sofia/sofia_presence.c | 4 ++++ 3 files changed, 29 insertions(+) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index 0a2f672df6..9947e3778e 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -1117,6 +1117,7 @@ switch_status_t sofia_glue_send_notify(sofia_profile_t *profile, const char *use const char *body, const char *o_contact, const char *network_ip); char *sofia_glue_get_extra_headers(switch_channel_t *channel, const char *prefix); void sofia_glue_set_extra_headers(switch_core_session_t *session, sip_t const *sip, const char *prefix); +char *sofia_glue_get_extra_headers_from_event(switch_event_t *event, const char *prefix); void sofia_info_send_sipfrag(switch_core_session_t *aleg, switch_core_session_t *bleg); void sofia_update_callee_id(switch_core_session_t *session, sofia_profile_t *profile, sip_t const *sip, switch_bool_t send); void sofia_send_callee_id(switch_core_session_t *session, const char *name, const char *number); diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index d8824dae33..43de002cd4 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -1975,6 +1975,30 @@ void sofia_glue_set_extra_headers(switch_core_session_t *session, sip_t const *s switch_channel_api_on(channel, "api_on_sip_extra_headers"); } +char *sofia_glue_get_extra_headers_from_event(switch_event_t *event, const char *prefix) +{ + char *extra_headers = NULL; + switch_stream_handle_t stream = { 0 }; + switch_event_header_t *hp; + + SWITCH_STANDARD_STREAM(stream); + for (hp = event->headers; hp; hp = hp->next) { + if (!zstr(hp->name) && !zstr(hp->value) && !strncasecmp(hp->name, prefix, strlen(prefix))) { + char *name = strdup(hp->name); + const char *hname = name + strlen(prefix); + stream.write_function(&stream, "%s: %s\r\n", hname, (char *)hp->value); + free(name); + } + } + + if (!zstr((char *) stream.data)) { + extra_headers = stream.data; + } else { + switch_safe_free(stream.data); + } + + return extra_headers; +} switch_status_t sofia_glue_do_invite(switch_core_session_t *session) { diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index ecedd8898e..e469eaca22 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -116,6 +116,7 @@ switch_status_t sofia_presence_chat_send(switch_event_t *message_event) char header[256] = ""; char *route_uri = NULL; const char *network_ip = NULL, *network_port = NULL, *from_proto; + char *extra_headers = NULL; proto = switch_event_get_header(message_event, "proto"); from_proto = switch_event_get_header(message_event, "from_proto"); @@ -129,6 +130,8 @@ switch_status_t sofia_presence_chat_send(switch_event_t *message_event) network_ip = switch_event_get_header(message_event, "to_sip_ip"); network_port = switch_event_get_header(message_event, "to_sip_port"); + extra_headers = sofia_glue_get_extra_headers_from_event(message_event, SOFIA_SIP_HEADER_PREFIX); + if (!to) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing To: header.\n"); goto end; @@ -322,6 +325,7 @@ switch_status_t sofia_presence_chat_send(switch_event_t *message_event) SIPTAG_CONTENT_TYPE_STR(ct), SIPTAG_PAYLOAD_STR(body), SIPTAG_HEADER_STR(header), + TAG_IF(!zstr(extra_headers), SIPTAG_HEADER_STR(extra_headers)), TAG_END()); sofia_glue_free_destination(dst); From 3505cb47e31ffbf520211ace7215e923a6b51765 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 22 Feb 2012 18:16:25 -0600 Subject: [PATCH 098/292] FS-3929 --resolve --- src/switch_ivr.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/switch_ivr.c b/src/switch_ivr.c index a4046b32b4..955f7b50d6 100644 --- a/src/switch_ivr.c +++ b/src/switch_ivr.c @@ -1733,6 +1733,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_transfer_variable(switch_core_session { switch_channel_t *chana = switch_core_session_get_channel(sessa); switch_channel_t *chanb = switch_core_session_get_channel(sessb); + switch_event_t *var_event; + const char *val = NULL; uint8_t prefix = 0; @@ -1747,16 +1749,18 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_transfer_variable(switch_core_session } } else { switch_event_header_t *hi; - if ((hi = switch_channel_variable_first(chana))) { - for (; hi; hi = hi->next) { - char *vvar = hi->name; - char *vval = hi->value; - if (vvar && vval && (!prefix || (var && !strncmp((char *) vvar, var, strlen(var))))) { - switch_channel_set_variable(chanb, (char *) vvar, (char *) vval); - } + + switch_channel_get_variables(chana, &var_event); + + for (hi = var_event->headers; hi; hi = hi->next) { + char *vvar = hi->name; + char *vval = hi->value; + if (vvar && vval && (!prefix || (var && !strncmp((char *) vvar, var, strlen(var))))) { + switch_channel_set_variable(chanb, (char *) vvar, (char *) vval); } - switch_channel_variable_last(chana); } + + switch_event_destroy(&var_event); } return SWITCH_STATUS_SUCCESS; From 55faab9d7bbc8bf1a841c0182911a6bec2276a76 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 22 Feb 2012 18:30:01 -0600 Subject: [PATCH 099/292] fix reversed arguements in mod_rtmp caught by gcc 4.6.2 --- src/mod/endpoints/mod_rtmp/mod_rtmp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_rtmp/mod_rtmp.c b/src/mod/endpoints/mod_rtmp/mod_rtmp.c index 9d2039e37e..5dd5b4adfd 100644 --- a/src/mod/endpoints/mod_rtmp/mod_rtmp.c +++ b/src/mod/endpoints/mod_rtmp/mod_rtmp.c @@ -843,7 +843,7 @@ switch_call_cause_t rtmp_session_create_call(rtmp_session_t *rsession, switch_co switch_channel_t *channel; const char *dialplan, *context; - if (!(*newsession = switch_core_session_request(rtmp_globals.rtmp_endpoint_interface, SOF_NONE, SWITCH_CALL_DIRECTION_INBOUND, NULL))) { + if (!(*newsession = switch_core_session_request(rtmp_globals.rtmp_endpoint_interface, SWITCH_CALL_DIRECTION_INBOUND, SOF_NONE, NULL))) { return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; } From dbba4a2eab0847f8be23ec0822cc744945d07bf2 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 22 Feb 2012 18:39:16 -0600 Subject: [PATCH 100/292] FS-3794 zig zag mismatch --- src/mod/endpoints/mod_sofia/sofia_presence.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index e469eaca22..aad3caad5f 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -2633,7 +2633,7 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * if (in) { open = "open"; - if (!strcasecmp(astate, "terminated") && switch_false(resub)) { + if (switch_false(resub)) { int term; const char *direction = switch_event_get_header(helper->event, "Caller-Direction"); From 0b27385734a71f365e8e1db8c482db85e131ee81 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 22 Feb 2012 19:27:02 -0600 Subject: [PATCH 101/292] FS-3794 zig zag mismatch contd --- src/mod/endpoints/mod_sofia/sofia_presence.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index aad3caad5f..5dc57c6908 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -2676,7 +2676,7 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * rpid = "on-the-phone"; force_status = 1; - } else if (!strcmp(astate, "terminated")) { + } else if (!strcmp(astate, "terminated") || !strcmp(astate, "hangup")) { rpid = "online"; dialog_rpid = ""; force_event_status = "Available"; From 2261f8a82ef32f8bf46b7b2989f62eda837299c4 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 22 Feb 2012 20:17:51 -0600 Subject: [PATCH 102/292] FS-3933 --resolve --- src/mod/endpoints/mod_sofia/sofia_glue.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 43de002cd4..26ddaef10a 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -2324,21 +2324,25 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session) if (!switch_channel_get_variable(channel, "presence_id")) { char *from = switch_core_session_strdup(session, from_str); - + const char *s; + + if ((s = switch_stristr("<", from))) { + from = (char *)s + 1; + } + if (!strncasecmp(from, "sip:", 4)) { from += 4; } - if (!strncasecmp(from, "sips:", 4)) { + if (!strncasecmp(from, "sips:", 5)) { from += 5; } - if ((p = strchr(from, ':')) || (p = strchr(from, ';'))) { + if ((p = strchr(from, ':')) || (p = strchr(from, ';')) || (p = strchr(from, '>'))) { *p++ = '\0'; } switch_channel_set_variable(channel, "presence_id", from); - } if (!(tech_pvt->nh = nua_handle(tech_pvt->profile->nua, NULL, From 50727f56c63714e83b9a2c52492b5694b5a32097 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 22 Feb 2012 20:37:56 -0600 Subject: [PATCH 103/292] add sdp_secure_savp_only channel variable for silly asterisk srtp that only has the SAVP or cries --- src/mod/endpoints/mod_sofia/sofia_glue.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 26ddaef10a..bf31f3c5ca 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -590,14 +590,23 @@ void sofia_glue_set_local_sdp(private_object_t *tech_pvt, const char *ip, switch if (cur_ptime != this_ptime) { char *bp = buf; - cur_ptime = this_ptime; + int both = 1; + cur_ptime = this_ptime; + if ((!zstr(tech_pvt->local_crypto_key) && sofia_test_flag(tech_pvt, TFLAG_SECURE))) { generate_m(tech_pvt, buf, sizeof(buf), port, cur_ptime, append_audio, sr, use_cng, cng_type, map, verbose_sdp, 1); bp = (buf + strlen(buf)); + + /* asterisk can't handle AVP and SAVP in sep streams, way to blow off the spec....*/ + if (switch_true(switch_channel_get_variable(tech_pvt->channel, "sdp_secure_savp_only"))) { + both = 0; + } + } + + if (both) { + generate_m(tech_pvt, bp, sizeof(buf) - strlen(buf), port, cur_ptime, append_audio, sr, use_cng, cng_type, map, verbose_sdp, 0); } - - generate_m(tech_pvt, bp, sizeof(buf) - strlen(buf), port, cur_ptime, append_audio, sr, use_cng, cng_type, map, verbose_sdp, 0); } } From 29b0af627e684dead40577a17225c28be227afa3 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 22 Feb 2012 21:48:03 -0600 Subject: [PATCH 104/292] FS-3932 --resolve the change in switch_ivr_bridge was your issue --- src/mod/applications/mod_dptools/mod_dptools.c | 6 ++++++ src/switch_ivr_bridge.c | 1 + 2 files changed, 7 insertions(+) diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index 8067e98675..246295f0fe 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -2902,6 +2902,12 @@ SWITCH_STANDARD_APP(audio_bridge_function) v_campon_fallback_exten, switch_channel_get_variable(caller_channel, "campon_fallback_dialplan"), switch_channel_get_variable(caller_channel, "campon_fallback_context")); + + if (peer_session) { + switch_channel_hangup(switch_core_session_get_channel(peer_session), SWITCH_CAUSE_ORIGINATOR_CANCEL); + switch_core_session_rwunlock(peer_session); + } + return; } diff --git a/src/switch_ivr_bridge.c b/src/switch_ivr_bridge.c index 3096f9cf92..266fa8d187 100644 --- a/src/switch_ivr_bridge.c +++ b/src/switch_ivr_bridge.c @@ -1244,6 +1244,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_multi_threaded_bridge(switch_core_ses if (!switch_channel_ready(caller_channel)) { abort_call(caller_channel, peer_channel); + switch_core_session_rwunlock(peer_session); goto done; } From fbe4e6475d7c873e8adbd770c1c2b86f02c3da85 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 22 Feb 2012 23:08:19 -0600 Subject: [PATCH 105/292] FS-3794 wow i am going bonkers --- src/mod/endpoints/mod_sofia/sofia_presence.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 5dc57c6908..6b0442eb76 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -2493,10 +2493,6 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * } - if (!strcasecmp(astate, "hangup")) { - astate = "terminated"; - } - if (!zstr(uuid)) { if (!zstr(answer_state)) { astate = answer_state; @@ -2528,6 +2524,11 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * if (holding) { astate = "early"; } + + + if (!strcasecmp(astate, "hangup")) { + astate = "terminated"; + } stream.write_function(&stream, "\n", uuid, direction); stream.write_function(&stream, "%s\n", astate); From 097d9a1ac551e906dc416e25773e9e54588f75dc Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 23 Feb 2012 12:23:18 -0600 Subject: [PATCH 106/292] missed a spot on commit 50727f56c63714e83b9a2c52492b5694b5a32097 --- src/mod/endpoints/mod_sofia/sofia_glue.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index bf31f3c5ca..4b31e760e1 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -565,13 +565,22 @@ void sofia_glue_set_local_sdp(private_object_t *tech_pvt, const char *ip, switch if (mult && switch_false(mult)) { char *bp = buf; - + int both = 1; + if ((!zstr(tech_pvt->local_crypto_key) && sofia_test_flag(tech_pvt, TFLAG_SECURE))) { generate_m(tech_pvt, buf, sizeof(buf), port, 0, append_audio, sr, use_cng, cng_type, map, verbose_sdp, 1); bp = (buf + strlen(buf)); + + /* asterisk can't handle AVP and SAVP in sep streams, way to blow off the spec....*/ + if (switch_true(switch_channel_get_variable(tech_pvt->channel, "sdp_secure_savp_only"))) { + both = 0; + } + } - generate_m(tech_pvt, bp, sizeof(buf) - strlen(buf), port, 0, append_audio, sr, use_cng, cng_type, map, verbose_sdp, 0); + if (both) { + generate_m(tech_pvt, bp, sizeof(buf) - strlen(buf), port, 0, append_audio, sr, use_cng, cng_type, map, verbose_sdp, 0); + } } else { From 24afb8aaaf38c8e78c40e5e4ba419ffa08d4bd3a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 23 Feb 2012 14:32:25 -0600 Subject: [PATCH 107/292] FS-3925 --resolve --- src/mod/languages/mod_lua/mod_lua.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mod/languages/mod_lua/mod_lua.cpp b/src/mod/languages/mod_lua/mod_lua.cpp index 64f8011586..765bdfcc98 100644 --- a/src/mod/languages/mod_lua/mod_lua.cpp +++ b/src/mod/languages/mod_lua/mod_lua.cpp @@ -371,6 +371,8 @@ static switch_status_t do_config(void) if (!strcmp(var, "startup-script")) { if (val) { lua_thread(val); + /* wait 10ms to avoid lua init issues */ + switch_yield(10000); } } } From 13ac8baef24bb048479275a25af30b9a73c12abd Mon Sep 17 00:00:00 2001 From: Josh Perry Date: Wed, 22 Feb 2012 18:19:07 -0700 Subject: [PATCH 108/292] Fix FS-3904 use a message to shutdown the module For some reason the running flag being set on the thread initiating the shutdown did not propogate to the run loop thread. I couldn't find any memory barrier functions in APR or the FS API so I am using 0MQ to send a termination request message to the run loop thread. --- .../mod_event_zmq/mod_event_zmq.cpp | 102 ++++++++++++------ .../mod_event_zmq/mod_event_zmq.h | 20 ++++ 2 files changed, 92 insertions(+), 30 deletions(-) create mode 100644 src/mod/event_handlers/mod_event_zmq/mod_event_zmq.h diff --git a/src/mod/event_handlers/mod_event_zmq/mod_event_zmq.cpp b/src/mod/event_handlers/mod_event_zmq/mod_event_zmq.cpp index c8975ebe5d..b85acbf0e0 100644 --- a/src/mod/event_handlers/mod_event_zmq/mod_event_zmq.cpp +++ b/src/mod/event_handlers/mod_event_zmq/mod_event_zmq.cpp @@ -4,24 +4,17 @@ #include #include +#include "mod_event_zmq.h" + namespace mod_event_zmq { -SWITCH_MODULE_LOAD_FUNCTION(load); -SWITCH_MODULE_SHUTDOWN_FUNCTION(shutdown); -SWITCH_MODULE_RUNTIME_FUNCTION(runtime); - -extern "C" { -SWITCH_MODULE_DEFINITION(mod_event_zmq, load, shutdown, runtime); -}; - // Handles publishing events out to clients class ZmqEventPublisher { public: - ZmqEventPublisher() : - context(1), - event_publisher(context, ZMQ_PUB) + ZmqEventPublisher(zmq::context_t &context) : + _publisher(context, ZMQ_PUB) { - event_publisher.bind("tcp://*:5556"); + _publisher.bind("tcp://*:5556"); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Listening for clients\n"); } @@ -35,7 +28,7 @@ public: zmq::message_t msg(pjson, strlen(pjson), free_message_data, NULL); // Send the message - event_publisher.send(msg); + _publisher.send(msg); } private: @@ -43,18 +36,34 @@ private: free (data); } - zmq::context_t context; - zmq::socket_t event_publisher; + zmq::socket_t _publisher; +}; + +class char_msg : public zmq::message_t { +public: + char_msg() : zmq::message_t(sizeof(char)) { } + char_msg(char data) : zmq::message_t(sizeof(char)) { + *char_data() = data; + } + + char* char_data() { + return static_cast(this->data()); + } }; // Handles global inititalization and teardown of the module class ZmqModule { public: ZmqModule(switch_loadable_module_interface_t **module_interface, switch_memory_pool_t *pool) : - _running(false) { + _context(1), _term_rep(_context, ZMQ_REP), _term_req(_context, ZMQ_REQ), _publisher(_context) { + + // Set up the term messaging connection + _term_rep.bind(TERM_URI); + _term_req.connect(TERM_URI); + // Subscribe to all switch events of any subclass // Store a pointer to ourself in the user data - if (switch_event_bind_removable(modname, SWITCH_EVENT_ALL, SWITCH_EVENT_SUBCLASS_ANY, event_handler, (void*)this, &_node) + if (switch_event_bind_removable(modname, SWITCH_EVENT_ALL, SWITCH_EVENT_SUBCLASS_ANY, event_handler, static_cast(&_publisher), &_node) != SWITCH_STATUS_SUCCESS) { throw std::runtime_error("Couldn't bind to switch events."); } @@ -67,20 +76,45 @@ public: } void Listen() { - if(_running) - return; + // All we do is sit here and block the run loop thread so it doesn't return + // it seems that if you want to keep your module running you can't return from the run loop + + char_msg msg; + while(true) { + // Listen for term message + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Entered run loop, waiting for term message\n"); + _term_rep.recv(&msg); + if(*msg.char_data() == MODULE_TERM_REQ_MESSAGE) { + // Ack term message + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Got term message, sending ack and leaving run loop\n"); - _publisher.reset(new ZmqEventPublisher()); - _running = true; + *msg.char_data() = MODULE_TERM_ACK_MESSAGE; + _term_rep.send(msg); - while(_running) { - switch_yield(100000); + break; + } + } + } + + void Shutdown() { + // Send term message + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Shutdown requested, sending term message to runloop\n"); + char_msg msg(MODULE_TERM_REQ_MESSAGE); + _term_req.send(msg); + + while(true) { + // Wait for the term ack message + _term_req.recv(&msg); + if(*msg.char_data() == MODULE_TERM_ACK_MESSAGE) { + // Continue shutdown + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Got term ack message, continuing shutdown\n"); + break; + } } } ~ZmqModule() { // Unsubscribe from the switch events - _running = false; switch_event_unbind(&_node); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Module shut down\n"); } @@ -89,9 +123,8 @@ private: // Dispatches events to the publisher static void event_handler(switch_event_t *event) { try { - ZmqModule *module = (ZmqModule*)event->bind_user_data; - if(module->_publisher.get()) - module->_publisher->PublishEvent(event); + ZmqEventPublisher *publisher = static_cast(event->bind_user_data); + publisher->PublishEvent(event); } catch(std::exception ex) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Error publishing event via 0MQ: %s\n", ex.what()); } catch(...) { // Exceptions must not propogate to C caller @@ -100,8 +133,12 @@ private: } switch_event_node_t *_node; - std::auto_ptr _publisher; - bool _running; + + zmq::context_t _context; + zmq::socket_t _term_rep; + zmq::socket_t _term_req; + + ZmqEventPublisher _publisher; }; //*****************************// @@ -140,10 +177,15 @@ SWITCH_MODULE_RUNTIME_FUNCTION(runtime) { SWITCH_MODULE_SHUTDOWN_FUNCTION(shutdown) { try { + // Tell the module to shutdown + module->Shutdown(); + // Free the module object module.reset(); + } catch(std::exception &ex) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error shutting down module: %s\n", ex.what()); } catch(...) { // Exceptions must not propogate to C caller - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error shutting down module\n"); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unknown error shutting down module\n"); } } diff --git a/src/mod/event_handlers/mod_event_zmq/mod_event_zmq.h b/src/mod/event_handlers/mod_event_zmq/mod_event_zmq.h new file mode 100644 index 0000000000..a60c720d74 --- /dev/null +++ b/src/mod/event_handlers/mod_event_zmq/mod_event_zmq.h @@ -0,0 +1,20 @@ +#ifndef MOD_EVENT_ZMQ_H +#define MOD_EVENT_ZMQ_H + +namespace mod_event_zmq { +static const char MODULE_TERM_REQ_MESSAGE = 1; +static const char MODULE_TERM_ACK_MESSAGE = 2; + +static const char *TERM_URI = "inproc://mod_event_zmq_term"; + +SWITCH_MODULE_LOAD_FUNCTION(load); +SWITCH_MODULE_SHUTDOWN_FUNCTION(shutdown); +SWITCH_MODULE_RUNTIME_FUNCTION(runtime); + +extern "C" { +SWITCH_MODULE_DEFINITION(mod_event_zmq, load, shutdown, runtime); +}; + +} + +#endif // MOD_EVENT_ZMQ_H From 3ca8536558305de888178704131fe5c3ed9e623c Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 23 Feb 2012 16:21:05 -0600 Subject: [PATCH 109/292] regression from 29f66f99 --- src/switch_utils.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/switch_utils.c b/src/switch_utils.c index 25f5216177..4edd9c8a68 100644 --- a/src/switch_utils.c +++ b/src/switch_utils.c @@ -774,10 +774,10 @@ SWITCH_DECLARE(switch_bool_t) switch_simple_email(const char *to, end: - if (fd < 0) { + if (fd > -1) { close(fd); } - if (ifd < 0) { + if (ifd > -1) { close(ifd); } From b843911c3577e02a9e77d32ff4905d8a502cb093 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 23 Feb 2012 16:55:54 -0600 Subject: [PATCH 110/292] allow publish with no contact --- src/mod/endpoints/mod_sofia/sofia_presence.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 6b0442eb76..1a4196e2ff 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -3737,7 +3737,7 @@ void sofia_presence_handle_sip_i_publish(nua_t *nua, sofia_profile_t *profile, n char expstr[30] = ""; long exp = 0, exp_delta = 3600; char *pd_dup = NULL; - int count = 1, sub_count = 0; + int count = 1, sub_count = 1; char *contact_str; int open = 1; sofia_nat_parse_t np = { { 0 } }; @@ -3802,9 +3802,8 @@ void sofia_presence_handle_sip_i_publish(nua_t *nua, sofia_profile_t *profile, n if (sofia_test_pflag(profile, PFLAG_MULTIREG) && !open) { count = sofia_reg_reg_count(profile, from_user, from_host); + sub_count = sofia_presence_contact_count(profile, contact_str); } - - sub_count = sofia_presence_contact_count(profile, contact_str); /* if (count > 1) let's not and say we did or all the clients who subscribe to their own presence will think they selves is offline */ From 2ac4557ffc9d89962893e04b6abfd18158d0be72 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 23 Feb 2012 17:59:01 -0600 Subject: [PATCH 111/292] fix issue with blf over a sip proxy --- src/mod/endpoints/mod_sofia/sofia_presence.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 1a4196e2ff..e8440eb647 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -1924,7 +1924,7 @@ static void _send_presence_notify(sofia_profile_t *profile, route_uri = sofia_glue_strip_uri(dst->route_uri); } else { if (remote_ip && remote_port) { - route_uri = switch_mprintf("sip:%s:%s;transport=%s", remote_ip, remote_port, tp); + route_uri = switch_mprintf("sip:user@%s:%s;transport=%s", remote_ip, remote_port, tp); } } @@ -1987,7 +1987,8 @@ static void _send_presence_notify(sofia_profile_t *profile, nua_notify(nh, NUTAG_NEWSUB(1), - TAG_IF(dst->route_uri, NUTAG_PROXY(route_uri)), TAG_IF(dst->route, SIPTAG_ROUTE_STR(dst->route)), + TAG_IF(route_uri, NUTAG_PROXY(route_uri)), + TAG_IF(dst->route, SIPTAG_ROUTE_STR(dst->route)), TAG_IF(user_via, SIPTAG_VIA_STR(user_via)), From 77f3bd2402e3ba87c2b518123849160463e5a467 Mon Sep 17 00:00:00 2001 From: William King Date: Thu, 23 Feb 2012 16:16:55 -0800 Subject: [PATCH 112/292] Adding mod_vlc initial working version --- src/mod/formats/mod_vlc/Makefile | 4 + src/mod/formats/mod_vlc/TODO | 14 ++ src/mod/formats/mod_vlc/mod_vlc.c | 218 ++++++++++++++++++++++++++++++ 3 files changed, 236 insertions(+) create mode 100644 src/mod/formats/mod_vlc/Makefile create mode 100644 src/mod/formats/mod_vlc/TODO create mode 100644 src/mod/formats/mod_vlc/mod_vlc.c diff --git a/src/mod/formats/mod_vlc/Makefile b/src/mod/formats/mod_vlc/Makefile new file mode 100644 index 0000000000..a41d9b3109 --- /dev/null +++ b/src/mod/formats/mod_vlc/Makefile @@ -0,0 +1,4 @@ +BASE=../../../.. +include $(BASE)/build/modmake.rules + +LOCAL_LDFLAGS= -lvlc diff --git a/src/mod/formats/mod_vlc/TODO b/src/mod/formats/mod_vlc/TODO new file mode 100644 index 0000000000..ea3aacd33a --- /dev/null +++ b/src/mod/formats/mod_vlc/TODO @@ -0,0 +1,14 @@ +Following list not in priority order. + +1. Determine if a new instance is needed for each independant inbound stream, or if a global instance can handle all inbound and outbound streams +2. Look into libvlc imem and determine if it is possible to stream parts of a call at a time, or if imem requires all of the buffer to be loaded. + a. Add and confirm stream over network functionality + b. Add and confirm stream to file + c. Confirm transcode works to mp3, wav, aac, etc. +3. Test multiple concurrent listeners to the same stream. + a. Look into have a single libvlc thread stream the file and write to the audio buffer, and multiple readers + b. Test multiple input streams simultaniously + c. Load test multiple requests(both multiple to the same stream, and multiple unique streams) to look for issues +4. Enable proper seeking support +5. Add video support +6. Confirm streaming from file works on differnt sample rates. 8k, 16k, etc. diff --git a/src/mod/formats/mod_vlc/mod_vlc.c b/src/mod/formats/mod_vlc/mod_vlc.c new file mode 100644 index 0000000000..995b202b35 --- /dev/null +++ b/src/mod/formats/mod_vlc/mod_vlc.c @@ -0,0 +1,218 @@ +/* + * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * Copyright (C) 2005-2011, Anthony Minessale II + * + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * + * The Initial Developer of the Original Code is + * Anthony Minessale II + * Portions created by the Initial Developer are Copyright (C) + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * William King william.king@quentustech.com + * + * mod_vlc.c -- VLC streaming module + * + * Examples: + * + * File: vlc:///path/to/file + * Stream: http://path.to.file.com:port/file.pls + * Stream: vlc://ftp://path.to.file.com:port/file.mp3 + * + * Notes: + * + * Requires at least libvlc version 1.2 + * + */ +#include +#include +#include + +#define VLC_BUFFER_SIZE 4096 + +static char *vlc_file_supported_formats[SWITCH_MAX_CODECS] = { 0 }; + +libvlc_instance_t *inst; + +struct vlc_file_context { + libvlc_media_player_t *mp; + libvlc_media_t *m; + switch_file_handle_t fh; + switch_memory_pool_t *pool; + switch_buffer_t *audio_buffer; + switch_mutex_t *audio_mutex; + char *path; + int samples; + int playing; + int err; +}; + +typedef struct vlc_file_context vlc_file_context_t; + +SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_vlc_shutdown); +SWITCH_MODULE_LOAD_FUNCTION(mod_vlc_load); +SWITCH_MODULE_DEFINITION(mod_vlc, mod_vlc_load, mod_vlc_shutdown, NULL); + +void vlc_auto_play_callback(void *data, const void *samples, unsigned count, int64_t pts) { + vlc_file_context_t *context = (vlc_file_context_t *) data; + + switch_mutex_lock(context->audio_mutex); + if (context->audio_buffer) { + if (!switch_buffer_write(context->audio_buffer, samples, count * 2)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Buffer error\n"); + } + } + switch_mutex_unlock(context->audio_mutex); + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "VLC callback for %s %d \n", context->path, count); +} + +static switch_status_t vlc_file_open(switch_file_handle_t *handle, const char *path) +{ + vlc_file_context_t *context; + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "VLC open %s\n", path); + + context = switch_core_alloc(handle->memory_pool, sizeof(*context)); + context->pool = handle->memory_pool; + + context->path = switch_core_strdup(context->pool, path); + switch_buffer_create_dynamic(&(context->audio_buffer), VLC_BUFFER_SIZE, VLC_BUFFER_SIZE * 2, 0); + + /* Determine if this is a url or a path */ + /* TODO: Change this so that it tries local files first, and then if it fails try location. */ + if(! strncmp(context->path, "http", 4)){ + context->m = libvlc_media_new_location(inst, context->path); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "VLC Path is http %s\n", context->path); + } else if (! strncmp(context->path, "/", 1)){ + context->m = libvlc_media_new_path(inst, context->path); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "VLC Path is file %s\n", context->path); + } else { + context->m = libvlc_media_new_location(inst, context->path); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "VLC Path is unknown type %s\n", context->path); + } + + context->playing = 0; + context->err = 0; + + context->mp = libvlc_media_player_new_from_media(context->m); + + if ( !handle->samplerate) + handle->samplerate = 16000; + libvlc_audio_set_format(context->mp, "S16N", handle->samplerate, 1); + + libvlc_audio_set_callbacks(context->mp, vlc_auto_play_callback, NULL,NULL,NULL,NULL, (void *) context); + + switch_mutex_init(&context->audio_mutex, SWITCH_MUTEX_NESTED, context->pool); + + handle->private_info = context; + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t vlc_file_read(switch_file_handle_t *handle, void *data, size_t *len) +{ + vlc_file_context_t *context = handle->private_info; + size_t bytes = *len * sizeof(int16_t); + libvlc_state_t status; + + if (!context) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "VLC read handle context is NULL\n"); + return SWITCH_STATUS_GENERR; + } + + if (context->err) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "VLC error\n"); + return SWITCH_STATUS_GENERR; + } + + if(! context->playing ) { + context->playing = 1; + libvlc_media_player_play(context->mp); + } + + status = libvlc_media_get_state(context->m); + if (status == 6 || status == 7) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "VLC media state: %d\n", (int) status); + return SWITCH_STATUS_GENERR; + } + + switch_mutex_lock(context->audio_mutex); + switch_buffer_read(context->audio_buffer, data, bytes); + switch_mutex_unlock(context->audio_mutex); + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t vlc_file_close(switch_file_handle_t *handle) +{ + vlc_file_context_t *context = handle->private_info; + + libvlc_media_player_stop(context->mp); + libvlc_media_release(context->m); + + return SWITCH_STATUS_SUCCESS; +} + +/* Macro expands to: switch_status_t mod_vlc_load(switch_loadable_module_interface_t **module_interface, switch_memory_pool_t *pool) */ +SWITCH_MODULE_LOAD_FUNCTION(mod_vlc_load) +{ + switch_file_interface_t *file_interface; + const char *args = "-vvv"; + + /* connect my internal structure to the blank pointer passed to me */ + *module_interface = switch_loadable_module_create_module_interface(pool, modname); + + vlc_file_supported_formats[0] = "vlc"; + vlc_file_supported_formats[1] = "http"; + + file_interface = switch_loadable_module_create_interface(*module_interface, SWITCH_FILE_INTERFACE); + file_interface->interface_name = modname; + file_interface->extens = vlc_file_supported_formats; + file_interface->file_open = vlc_file_open; + file_interface->file_close = vlc_file_close; + file_interface->file_read = vlc_file_read; + + /* load the vlc engine. */ + inst = libvlc_new(1, &args); + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Initialized VLC instance\n"); + + /* indicate that the module should continue to be loaded */ + return SWITCH_STATUS_SUCCESS; +} + +/* + Called when the system shuts down + Macro expands to: switch_status_t mod_vlc_shutdown() */ +SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_vlc_shutdown) +{ + libvlc_release(inst); + return SWITCH_STATUS_SUCCESS; +} + + +/* For Emacs: + * Local Variables: + * mode:c + * indent-tabs-mode:t + * tab-width:4 + * c-basic-offset:4 + * End: + * For VIM: + * vim:set softtabstop=4 shiftwidth=4 tabstop=4 + */ From df899dbdb4bf4df684696f9ab0ea8aae74daf043 Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Thu, 23 Feb 2012 21:24:04 -0600 Subject: [PATCH 113/292] vs2010 reswig --- .../mod_managed/freeswitch_wrap.2010.cxx | 164 ++++++++++++++++- .../mod_managed/managed/swig.2010.cs | 165 ++++++++++++++++-- 2 files changed, 310 insertions(+), 19 deletions(-) diff --git a/src/mod/languages/mod_managed/freeswitch_wrap.2010.cxx b/src/mod/languages/mod_managed/freeswitch_wrap.2010.cxx index 579be71bad..d25bcff52d 100644 --- a/src/mod/languages/mod_managed/freeswitch_wrap.2010.cxx +++ b/src/mod/languages/mod_managed/freeswitch_wrap.2010.cxx @@ -3514,6 +3514,68 @@ SWIGEXPORT void SWIGSTDCALL CSharp_delete_switch_rtcp_hdr_t(void * jarg1) { } +SWIGEXPORT void SWIGSTDCALL CSharp_audio_buffer_header_t_ts_set(void * jarg1, unsigned long jarg2) { + audio_buffer_header_t *arg1 = (audio_buffer_header_t *) 0 ; + uint32_t arg2 ; + + arg1 = (audio_buffer_header_t *)jarg1; + arg2 = (uint32_t)jarg2; + if (arg1) (arg1)->ts = arg2; +} + + +SWIGEXPORT unsigned long SWIGSTDCALL CSharp_audio_buffer_header_t_ts_get(void * jarg1) { + unsigned long jresult ; + audio_buffer_header_t *arg1 = (audio_buffer_header_t *) 0 ; + uint32_t result; + + arg1 = (audio_buffer_header_t *)jarg1; + result = (uint32_t) ((arg1)->ts); + jresult = (unsigned long)result; + return jresult; +} + + +SWIGEXPORT void SWIGSTDCALL CSharp_audio_buffer_header_t_len_set(void * jarg1, unsigned long jarg2) { + audio_buffer_header_t *arg1 = (audio_buffer_header_t *) 0 ; + uint32_t arg2 ; + + arg1 = (audio_buffer_header_t *)jarg1; + arg2 = (uint32_t)jarg2; + if (arg1) (arg1)->len = arg2; +} + + +SWIGEXPORT unsigned long SWIGSTDCALL CSharp_audio_buffer_header_t_len_get(void * jarg1) { + unsigned long jresult ; + audio_buffer_header_t *arg1 = (audio_buffer_header_t *) 0 ; + uint32_t result; + + arg1 = (audio_buffer_header_t *)jarg1; + result = (uint32_t) ((arg1)->len); + jresult = (unsigned long)result; + return jresult; +} + + +SWIGEXPORT void * SWIGSTDCALL CSharp_new_audio_buffer_header_t() { + void * jresult ; + audio_buffer_header_t *result = 0 ; + + result = (audio_buffer_header_t *)new audio_buffer_header_t(); + jresult = (void *)result; + return jresult; +} + + +SWIGEXPORT void SWIGSTDCALL CSharp_delete_audio_buffer_header_t(void * jarg1) { + audio_buffer_header_t *arg1 = (audio_buffer_header_t *) 0 ; + + arg1 = (audio_buffer_header_t *)jarg1; + delete arg1; +} + + SWIGEXPORT void SWIGSTDCALL CSharp_switch_t38_options_t_T38FaxVersion_set(void * jarg1, unsigned short jarg2) { switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ; uint16_t arg2 ; @@ -6661,6 +6723,20 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_media_bug_flush_all(void * jarg1) } +SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_media_bug_set_pre_buffer_framecount(void * jarg1, unsigned long jarg2) { + int jresult ; + switch_media_bug_t *arg1 = (switch_media_bug_t *) 0 ; + uint32_t arg2 ; + switch_status_t result; + + arg1 = (switch_media_bug_t *)jarg1; + arg2 = (uint32_t)jarg2; + result = (switch_status_t)switch_core_media_bug_set_pre_buffer_framecount(arg1,arg2); + jresult = result; + return jresult; +} + + SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_port_allocator_new(unsigned short jarg1, unsigned short jarg2, unsigned long jarg3, void * jarg4) { int jresult ; switch_port_t arg1 ; @@ -7975,11 +8051,15 @@ SWIGEXPORT void SWIGSTDCALL CSharp_switch_core_thread_session_end(void * jarg1) } -SWIGEXPORT void SWIGSTDCALL CSharp_switch_core_service_session(void * jarg1) { +SWIGEXPORT void SWIGSTDCALL CSharp_switch_core_service_session_av(void * jarg1, int jarg2, int jarg3) { switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + switch_bool_t arg2 ; + switch_bool_t arg3 ; arg1 = (switch_core_session_t *)jarg1; - switch_core_service_session(arg1); + arg2 = (switch_bool_t)jarg2; + arg3 = (switch_bool_t)jarg3; + switch_core_service_session_av(arg1,arg2,arg3); } @@ -8830,6 +8910,20 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_session_set_read_codec(void * jarg } +SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_session_set_real_read_codec(void * jarg1, void * jarg2) { + int jresult ; + switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + switch_codec_t *arg2 = (switch_codec_t *) 0 ; + switch_status_t result; + + arg1 = (switch_core_session_t *)jarg1; + arg2 = (switch_codec_t *)jarg2; + result = (switch_status_t)switch_core_session_set_real_read_codec(arg1,arg2); + jresult = result; + return jresult; +} + + SWIGEXPORT void SWIGSTDCALL CSharp_switch_core_session_unset_read_codec(void * jarg1) { switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; @@ -13697,6 +13791,30 @@ SWIGEXPORT char * SWIGSTDCALL CSharp_switch_format_number(char * jarg1) { } +SWIGEXPORT unsigned int SWIGSTDCALL CSharp_switch_atoui(char * jarg1) { + unsigned int jresult ; + char *arg1 = (char *) 0 ; + unsigned int result; + + arg1 = (char *)jarg1; + result = (unsigned int)switch_atoui((char const *)arg1); + jresult = result; + return jresult; +} + + +SWIGEXPORT unsigned long SWIGSTDCALL CSharp_switch_atoul(char * jarg1) { + unsigned long jresult ; + char *arg1 = (char *) 0 ; + unsigned long result; + + arg1 = (char *)jarg1; + result = (unsigned long)switch_atoul((char const *)arg1); + jresult = (unsigned long)result; + return jresult; +} + + SWIGEXPORT void SWIGSTDCALL CSharp_profile_node_t_var_set(void * jarg1, char * jarg2) { profile_node_t *arg1 = (profile_node_t *) 0 ; char *arg2 = (char *) 0 ; @@ -25173,15 +25291,19 @@ SWIGEXPORT void SWIGSTDCALL CSharp_switch_channel_event_set_extended_data(void * } -SWIGEXPORT char * SWIGSTDCALL CSharp_switch_channel_expand_variables(void * jarg1, char * jarg2) { +SWIGEXPORT char * SWIGSTDCALL CSharp_switch_channel_expand_variables_check(void * jarg1, char * jarg2, void * jarg3, void * jarg4) { char * jresult ; switch_channel_t *arg1 = (switch_channel_t *) 0 ; char *arg2 = (char *) 0 ; + switch_event_t *arg3 = (switch_event_t *) 0 ; + switch_event_t *arg4 = (switch_event_t *) 0 ; char *result = 0 ; arg1 = (switch_channel_t *)jarg1; arg2 = (char *)jarg2; - result = (char *)switch_channel_expand_variables(arg1,(char const *)arg2); + arg3 = (switch_event_t *)jarg3; + arg4 = (switch_event_t *)jarg4; + result = (char *)switch_channel_expand_variables_check(arg1,(char const *)arg2,arg3,arg4); jresult = SWIG_csharp_string_callback((const char *)result); return jresult; } @@ -26759,15 +26881,19 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_event_set_body(void * jarg1, char * jar } -SWIGEXPORT char * SWIGSTDCALL CSharp_switch_event_expand_headers(void * jarg1, char * jarg2) { +SWIGEXPORT char * SWIGSTDCALL CSharp_switch_event_expand_headers_check(void * jarg1, char * jarg2, void * jarg3, void * jarg4) { char * jresult ; switch_event_t *arg1 = (switch_event_t *) 0 ; char *arg2 = (char *) 0 ; + switch_event_t *arg3 = (switch_event_t *) 0 ; + switch_event_t *arg4 = (switch_event_t *) 0 ; char *result = 0 ; arg1 = (switch_event_t *)jarg1; arg2 = (char *)jarg2; - result = (char *)switch_event_expand_headers(arg1,(char const *)arg2); + arg3 = (switch_event_t *)jarg3; + arg4 = (switch_event_t *)jarg4; + result = (char *)switch_event_expand_headers_check(arg1,(char const *)arg2,arg3,arg4); jresult = SWIG_csharp_string_callback((const char *)result); return jresult; } @@ -26851,6 +26977,20 @@ SWIGEXPORT char * SWIGSTDCALL CSharp_switch_event_build_param_string(void * jarg } +SWIGEXPORT int SWIGSTDCALL CSharp_switch_event_check_permission_list(void * jarg1, char * jarg2) { + int jresult ; + switch_event_t *arg1 = (switch_event_t *) 0 ; + char *arg2 = (char *) 0 ; + int result; + + arg1 = (switch_event_t *)jarg1; + arg2 = (char *)jarg2; + result = (int)switch_event_check_permission_list(arg1,(char const *)arg2); + jresult = result; + return jresult; +} + + SWIGEXPORT int SWIGSTDCALL CSharp_SWITCH_RESAMPLE_QUALITY_get() { int jresult ; int result; @@ -29481,6 +29621,18 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_uuid_exists(char * jarg1) { } +SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_dmachine_last_ping(void * jarg1) { + int jresult ; + switch_ivr_dmachine_t *arg1 = (switch_ivr_dmachine_t *) 0 ; + switch_status_t result; + + arg1 = (switch_ivr_dmachine_t *)jarg1; + result = (switch_status_t)switch_ivr_dmachine_last_ping(arg1); + jresult = result; + return jresult; +} + + SWIGEXPORT char * SWIGSTDCALL CSharp_switch_ivr_dmachine_get_name(void * jarg1) { char * jresult ; switch_ivr_dmachine_t *arg1 = (switch_ivr_dmachine_t *) 0 ; diff --git a/src/mod/languages/mod_managed/managed/swig.2010.cs b/src/mod/languages/mod_managed/managed/swig.2010.cs index 6f0c848599..336e468c61 100644 --- a/src/mod/languages/mod_managed/managed/swig.2010.cs +++ b/src/mod/languages/mod_managed/managed/swig.2010.cs @@ -72,6 +72,75 @@ public class Api : IDisposable { namespace FreeSWITCH.Native { +using System; +using System.Runtime.InteropServices; + +public class audio_buffer_header_t : IDisposable { + private HandleRef swigCPtr; + protected bool swigCMemOwn; + + internal audio_buffer_header_t(IntPtr cPtr, bool cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = new HandleRef(this, cPtr); + } + + internal static HandleRef getCPtr(audio_buffer_header_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } + + ~audio_buffer_header_t() { + Dispose(); + } + + public virtual void Dispose() { + lock(this) { + if (swigCPtr.Handle != IntPtr.Zero) { + if (swigCMemOwn) { + swigCMemOwn = false; + freeswitchPINVOKE.delete_audio_buffer_header_t(swigCPtr); + } + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + GC.SuppressFinalize(this); + } + } + + public uint ts { + set { + freeswitchPINVOKE.audio_buffer_header_t_ts_set(swigCPtr, value); + } + get { + uint ret = freeswitchPINVOKE.audio_buffer_header_t_ts_get(swigCPtr); + return ret; + } + } + + public uint len { + set { + freeswitchPINVOKE.audio_buffer_header_t_len_set(swigCPtr, value); + } + get { + uint ret = freeswitchPINVOKE.audio_buffer_header_t_len_get(swigCPtr); + return ret; + } + } + + public audio_buffer_header_t() : this(freeswitchPINVOKE.new_audio_buffer_header_t(), true) { + } + +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + public enum cache_db_flag_t { CDF_INUSE = (1 << 0), CDF_PRUNE = (1 << 1) @@ -1111,6 +1180,11 @@ public class freeswitch { return ret; } + public static switch_status_t switch_core_media_bug_set_pre_buffer_framecount(SWIGTYPE_p_switch_media_bug bug, uint framecount) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_media_bug_set_pre_buffer_framecount(SWIGTYPE_p_switch_media_bug.getCPtr(bug), framecount); + return ret; + } + public static switch_status_t switch_core_port_allocator_new(ushort start, ushort end, uint flags, SWIGTYPE_p_p_switch_core_port_allocator new_allocator) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_port_allocator_new(start, end, flags, SWIGTYPE_p_p_switch_core_port_allocator.getCPtr(new_allocator)); return ret; @@ -1611,8 +1685,8 @@ public class freeswitch { freeswitchPINVOKE.switch_core_thread_session_end(SWIGTYPE_p_switch_core_session.getCPtr(session)); } - public static void switch_core_service_session(SWIGTYPE_p_switch_core_session session) { - freeswitchPINVOKE.switch_core_service_session(SWIGTYPE_p_switch_core_session.getCPtr(session)); + public static void switch_core_service_session_av(SWIGTYPE_p_switch_core_session session, switch_bool_t audio, switch_bool_t video) { + freeswitchPINVOKE.switch_core_service_session_av(SWIGTYPE_p_switch_core_session.getCPtr(session), (int)audio, (int)video); } public static switch_call_cause_t switch_core_session_outgoing_channel(SWIGTYPE_p_switch_core_session session, switch_event var_event, string endpoint_name, switch_caller_profile caller_profile, SWIGTYPE_p_p_switch_core_session new_session, SWIGTYPE_p_p_apr_pool_t pool, uint flags, SWIGTYPE_p_switch_call_cause_t cancel_cause) { @@ -1887,6 +1961,11 @@ public class freeswitch { return ret; } + public static switch_status_t switch_core_session_set_real_read_codec(SWIGTYPE_p_switch_core_session session, switch_codec codec) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_session_set_real_read_codec(SWIGTYPE_p_switch_core_session.getCPtr(session), switch_codec.getCPtr(codec)); + return ret; + } + public static void switch_core_session_unset_read_codec(SWIGTYPE_p_switch_core_session session) { freeswitchPINVOKE.switch_core_session_unset_read_codec(SWIGTYPE_p_switch_core_session.getCPtr(session)); } @@ -3351,6 +3430,16 @@ public class freeswitch { return ret; } + public static uint switch_atoui(string nptr) { + uint ret = freeswitchPINVOKE.switch_atoui(nptr); + return ret; + } + + public static uint switch_atoul(string nptr) { + uint ret = freeswitchPINVOKE.switch_atoul(nptr); + return ret; + } + public static switch_caller_extension switch_caller_extension_new(SWIGTYPE_p_switch_core_session session, string extension_name, string extension_number) { IntPtr cPtr = freeswitchPINVOKE.switch_caller_extension_new(SWIGTYPE_p_switch_core_session.getCPtr(session), extension_name, extension_number); switch_caller_extension ret = (cPtr == IntPtr.Zero) ? null : new switch_caller_extension(cPtr, false); @@ -3860,8 +3949,8 @@ public class freeswitch { freeswitchPINVOKE.switch_channel_event_set_extended_data(SWIGTYPE_p_switch_channel.getCPtr(channel), switch_event.getCPtr(arg1)); } - public static string switch_channel_expand_variables(SWIGTYPE_p_switch_channel channel, string arg1) { - string ret = freeswitchPINVOKE.switch_channel_expand_variables(SWIGTYPE_p_switch_channel.getCPtr(channel), arg1); + public static string switch_channel_expand_variables_check(SWIGTYPE_p_switch_channel channel, string arg1, switch_event var_list, switch_event api_list) { + string ret = freeswitchPINVOKE.switch_channel_expand_variables_check(SWIGTYPE_p_switch_channel.getCPtr(channel), arg1, switch_event.getCPtr(var_list), switch_event.getCPtr(api_list)); return ret; } @@ -4243,8 +4332,8 @@ public class freeswitch { return ret; } - public static string switch_event_expand_headers(switch_event arg0, string arg1) { - string ret = freeswitchPINVOKE.switch_event_expand_headers(switch_event.getCPtr(arg0), arg1); + public static string switch_event_expand_headers_check(switch_event arg0, string arg1, switch_event var_list, switch_event api_list) { + string ret = freeswitchPINVOKE.switch_event_expand_headers_check(switch_event.getCPtr(arg0), arg1, switch_event.getCPtr(var_list), switch_event.getCPtr(api_list)); return ret; } @@ -4267,6 +4356,11 @@ public class freeswitch { return ret; } + public static int switch_event_check_permission_list(switch_event list, string name) { + int ret = freeswitchPINVOKE.switch_event_check_permission_list(switch_event.getCPtr(list), name); + return ret; + } + public static switch_status_t switch_resample_perform_create(SWIGTYPE_p_p_switch_audio_resampler_t new_resampler, uint from_rate, uint to_rate, uint to_size, int quality, uint channels, string file, string func, int line) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_resample_perform_create(SWIGTYPE_p_p_switch_audio_resampler_t.getCPtr(new_resampler), from_rate, to_rate, to_size, quality, channels, file, func, line); return ret; @@ -4873,6 +4967,11 @@ public class freeswitch { return ret; } + public static switch_status_t switch_ivr_dmachine_last_ping(SWIGTYPE_p_switch_ivr_dmachine dmachine) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_dmachine_last_ping(SWIGTYPE_p_switch_ivr_dmachine.getCPtr(dmachine)); + return ret; + } + public static string switch_ivr_dmachine_get_name(SWIGTYPE_p_switch_ivr_dmachine dmachine) { string ret = freeswitchPINVOKE.switch_ivr_dmachine_get_name(SWIGTYPE_p_switch_ivr_dmachine.getCPtr(dmachine)); return ret; @@ -7094,6 +7193,24 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_delete_switch_rtcp_hdr_t")] public static extern void delete_switch_rtcp_hdr_t(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_audio_buffer_header_t_ts_set")] + public static extern void audio_buffer_header_t_ts_set(HandleRef jarg1, uint jarg2); + + [DllImport("mod_managed", EntryPoint="CSharp_audio_buffer_header_t_ts_get")] + public static extern uint audio_buffer_header_t_ts_get(HandleRef jarg1); + + [DllImport("mod_managed", EntryPoint="CSharp_audio_buffer_header_t_len_set")] + public static extern void audio_buffer_header_t_len_set(HandleRef jarg1, uint jarg2); + + [DllImport("mod_managed", EntryPoint="CSharp_audio_buffer_header_t_len_get")] + public static extern uint audio_buffer_header_t_len_get(HandleRef jarg1); + + [DllImport("mod_managed", EntryPoint="CSharp_new_audio_buffer_header_t")] + public static extern IntPtr new_audio_buffer_header_t(); + + [DllImport("mod_managed", EntryPoint="CSharp_delete_audio_buffer_header_t")] + public static extern void delete_audio_buffer_header_t(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_T38FaxVersion_set")] public static extern void switch_t38_options_t_T38FaxVersion_set(HandleRef jarg1, ushort jarg2); @@ -7886,6 +8003,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_flush_all")] public static extern int switch_core_media_bug_flush_all(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_set_pre_buffer_framecount")] + public static extern int switch_core_media_bug_set_pre_buffer_framecount(HandleRef jarg1, uint jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_port_allocator_new")] public static extern int switch_core_port_allocator_new(ushort jarg1, ushort jarg2, uint jarg3, HandleRef jarg4); @@ -8189,8 +8309,8 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_core_thread_session_end")] public static extern void switch_core_thread_session_end(HandleRef jarg1); - [DllImport("mod_managed", EntryPoint="CSharp_switch_core_service_session")] - public static extern void switch_core_service_session(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_service_session_av")] + public static extern void switch_core_service_session_av(HandleRef jarg1, int jarg2, int jarg3); [DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_outgoing_channel")] public static extern int switch_core_session_outgoing_channel(HandleRef jarg1, HandleRef jarg2, string jarg3, HandleRef jarg4, HandleRef jarg5, HandleRef jarg6, uint jarg7, HandleRef jarg8); @@ -8354,6 +8474,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_set_read_codec")] public static extern int switch_core_session_set_read_codec(HandleRef jarg1, HandleRef jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_set_real_read_codec")] + public static extern int switch_core_session_set_real_read_codec(HandleRef jarg1, HandleRef jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_unset_read_codec")] public static extern void switch_core_session_unset_read_codec(HandleRef jarg1); @@ -9455,6 +9578,12 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_format_number")] public static extern string switch_format_number(string jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_atoui")] + public static extern uint switch_atoui(string jarg1); + + [DllImport("mod_managed", EntryPoint="CSharp_switch_atoul")] + public static extern uint switch_atoul(string jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_profile_node_t_var_set")] public static extern void profile_node_t_var_set(HandleRef jarg1, string jarg2); @@ -12362,8 +12491,8 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_event_set_extended_data")] public static extern void switch_channel_event_set_extended_data(HandleRef jarg1, HandleRef jarg2); - [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_expand_variables")] - public static extern string switch_channel_expand_variables(HandleRef jarg1, string jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_expand_variables_check")] + public static extern string switch_channel_expand_variables_check(HandleRef jarg1, string jarg2, HandleRef jarg3, HandleRef jarg4); [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_build_param_string")] public static extern string switch_channel_build_param_string(HandleRef jarg1, HandleRef jarg2, string jarg3); @@ -12716,8 +12845,8 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_event_set_body")] public static extern int switch_event_set_body(HandleRef jarg1, string jarg2); - [DllImport("mod_managed", EntryPoint="CSharp_switch_event_expand_headers")] - public static extern string switch_event_expand_headers(HandleRef jarg1, string jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_event_expand_headers_check")] + public static extern string switch_event_expand_headers_check(HandleRef jarg1, string jarg2, HandleRef jarg3, HandleRef jarg4); [DllImport("mod_managed", EntryPoint="CSharp_switch_event_create_pres_in_detailed")] public static extern int switch_event_create_pres_in_detailed(string jarg1, string jarg2, int jarg3, string jarg4, string jarg5, string jarg6, string jarg7, string jarg8, string jarg9, string jarg10, int jarg11, string jarg12, string jarg13, string jarg14, string jarg15); @@ -12731,6 +12860,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_event_build_param_string")] public static extern string switch_event_build_param_string(HandleRef jarg1, string jarg2, HandleRef jarg3); + [DllImport("mod_managed", EntryPoint="CSharp_switch_event_check_permission_list")] + public static extern int switch_event_check_permission_list(HandleRef jarg1, string jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_RESAMPLE_QUALITY_get")] public static extern int SWITCH_RESAMPLE_QUALITY_get(); @@ -13256,6 +13388,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_uuid_exists")] public static extern int switch_ivr_uuid_exists(string jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_dmachine_last_ping")] + public static extern int switch_ivr_dmachine_last_ping(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_dmachine_get_name")] public static extern string switch_ivr_dmachine_get_name(HandleRef jarg1); @@ -22884,6 +23019,9 @@ public enum switch_channel_flag_t { CF_ZOMBIE_EXEC, CF_INTERCEPT, CF_INTERCEPTED, + CF_VIDEO_REFRESH_REQ, + CF_SERVICE_AUDIO, + CF_SERVICE_VIDEO, CF_FLAG_MAX } @@ -26095,7 +26233,8 @@ namespace FreeSWITCH.Native { public enum switch_event_flag_t { EF_UNIQ_HEADERS = (1 << 0), - EF_NO_CHAT_EXEC = (1 << 1) + EF_NO_CHAT_EXEC = (1 << 1), + EF_DEFAULT_ALLOW = (1 << 2) } } From 1e6c4bef92f88b97974579a4fc5621cd18e3d050 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 24 Feb 2012 14:15:32 -0600 Subject: [PATCH 114/292] FS-3943 --resolve --- src/mod/applications/mod_dptools/mod_dptools.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index 246295f0fe..80797b0a32 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -3251,7 +3251,7 @@ static switch_call_cause_t user_outgoing_channel(switch_core_session_t *session, switch_call_cause_t *cancel_cause) { switch_xml_t x_user = NULL, x_param, x_params; - char *user = NULL, *domain = NULL, *dup_domain = NULL; + char *user = NULL, *domain = NULL, *dup_domain = NULL, *dialed_user = NULL; const char *dest = NULL; switch_call_cause_t cause = SWITCH_CAUSE_NONE; unsigned int timelimit = 60; @@ -3321,11 +3321,13 @@ static switch_call_cause_t user_outgoing_channel(switch_core_session_t *session, } } + dialed_user = (char *)switch_xml_attr(x_user, "id"); + if (var_event) { - switch_event_add_header_string(var_event, SWITCH_STACK_BOTTOM, "dialed_user", user); + switch_event_add_header_string(var_event, SWITCH_STACK_BOTTOM, "dialed_user", dialed_user); switch_event_add_header_string(var_event, SWITCH_STACK_BOTTOM, "dialed_domain", domain); if (!strstr(dest, "presence_id=")) { - switch_event_add_header(var_event, SWITCH_STACK_BOTTOM, "presence_id", "%s@%s", user, domain); + switch_event_add_header(var_event, SWITCH_STACK_BOTTOM, "presence_id", "%s@%s", dialed_user, domain); } } @@ -3352,7 +3354,7 @@ static switch_call_cause_t user_outgoing_channel(switch_core_session_t *session, timelimit = atoi(varval); } - switch_channel_set_variable(channel, "dialed_user", user); + switch_channel_set_variable(channel, "dialed_user", dialed_user); switch_channel_set_variable(channel, "dialed_domain", domain); d_dest = switch_channel_expand_variables(channel, dest); @@ -3373,7 +3375,7 @@ static switch_call_cause_t user_outgoing_channel(switch_core_session_t *session, switch_assert(event); } - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "dialed_user", user); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "dialed_user", dialed_user); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "dialed_domain", domain); d_dest = switch_event_expand_headers(event, dest); switch_event_destroy(&event); @@ -3388,7 +3390,7 @@ static switch_call_cause_t user_outgoing_channel(switch_core_session_t *session, } - switch_snprintf(stupid, sizeof(stupid), "user/%s", user); + switch_snprintf(stupid, sizeof(stupid), "user/%s", dialed_user); if (switch_stristr(stupid, d_dest)) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "Waddya Daft? You almost called '%s' in an infinate loop!\n", stupid); From ee95a35b7189417eb64d340c1141b60a860eaf57 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 24 Feb 2012 15:18:44 -0600 Subject: [PATCH 115/292] formatting --- src/mod/endpoints/mod_sofia/sofia.c | 34 ++++++++++++++--------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index a30cbb699d..b84cc00f4a 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -5806,11 +5806,11 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, } } else { if (sofia_test_pflag(profile, PFLAG_3PCC)) { - if (switch_channel_test_flag(channel, CF_PROXY_MODE) || switch_channel_test_flag(channel, CF_PROXY_MEDIA)) { + if (switch_channel_test_flag(channel, CF_PROXY_MODE) || switch_channel_test_flag(channel, CF_PROXY_MEDIA)) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "No SDP in INVITE and 3pcc=yes cannot work with bypass or proxy media, hanging up.\n"); switch_channel_set_variable(channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "3PCC DISABLED"); switch_channel_hangup(channel, SWITCH_CAUSE_MANDATORY_IE_MISSING); - } else { + } else { switch_channel_set_variable(channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "RECEIVED_NOSDP"); sofia_glue_tech_choose_port(tech_pvt, 0); sofia_glue_set_local_sdp(tech_pvt, NULL, 0, NULL, 0); @@ -5830,23 +5830,23 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, SIPTAG_CONTENT_TYPE_STR("application/sdp"), SIPTAG_PAYLOAD_STR(tech_pvt->local_sdp_str), TAG_END()); } } - } else if (sofia_test_pflag(profile, PFLAG_3PCC_PROXY)) { - //3PCC proxy mode delays the 200 OK until the call is answered + } else if (sofia_test_pflag(profile, PFLAG_3PCC_PROXY)) { + //3PCC proxy mode delays the 200 OK until the call is answered // so can be made to work with bypass media as we have time to find out what the other end thinks codec offer should be... - switch_channel_set_variable(channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "RECEIVED_NOSDP"); - sofia_set_flag_locked(tech_pvt, TFLAG_3PCC); - //sofia_glue_tech_choose_port(tech_pvt, 0); - //sofia_glue_set_local_sdp(tech_pvt, NULL, 0, NULL, 0); - sofia_set_flag(tech_pvt, TFLAG_LATE_NEGOTIATION); - //Moves into CS_INIT so call moves forward into the dialplan - switch_channel_set_state(channel, CS_INIT); - } else { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "No SDP in INVITE and 3pcc not enabled, hanging up.\n"); - switch_channel_set_variable(channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "3PCC DISABLED"); - switch_channel_hangup(channel, SWITCH_CAUSE_MANDATORY_IE_MISSING); - } - goto done; + switch_channel_set_variable(channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "RECEIVED_NOSDP"); + sofia_set_flag_locked(tech_pvt, TFLAG_3PCC); + //sofia_glue_tech_choose_port(tech_pvt, 0); + //sofia_glue_set_local_sdp(tech_pvt, NULL, 0, NULL, 0); + sofia_set_flag(tech_pvt, TFLAG_LATE_NEGOTIATION); + //Moves into CS_INIT so call moves forward into the dialplan + switch_channel_set_state(channel, CS_INIT); + } else { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "No SDP in INVITE and 3pcc not enabled, hanging up.\n"); + switch_channel_set_variable(channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "3PCC DISABLED"); + switch_channel_hangup(channel, SWITCH_CAUSE_MANDATORY_IE_MISSING); } + goto done; + } } else if (tech_pvt && sofia_test_flag(tech_pvt, TFLAG_SDP) && !r_sdp) { sofia_set_flag_locked(tech_pvt, TFLAG_NOSDP_REINVITE); From 803d25c45c4d92035ed78dc0bcec1d43c9cefa20 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 24 Sep 2011 06:24:49 +0000 Subject: [PATCH 116/292] Add ability to sign releases with tagscript --- scripts/tagscript.sh | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/scripts/tagscript.sh b/scripts/tagscript.sh index 44797b3640..1ac817cb74 100755 --- a/scripts/tagscript.sh +++ b/scripts/tagscript.sh @@ -7,9 +7,20 @@ if [ ! -d .git ]; then exit 1; fi -if [ -z "$1" ]; then - echo "usage: ./scripts/tagscript.sh MAJOR.MINOR.MICRO[.REVISION]" 1>&2 +showusage() { + echo "usage: ./scripts/tagscript.sh [-s] MAJOR.MINOR.MICRO[.REVISION]" 1>&2 exit 1; +} + +while getopts "s" o; do + case "$o" in + s) opts="-s" ;; + esac +done +shift $(($OPTIND-1)) + +if [ -z "$1" ]; then + showusage fi ver="$1" @@ -46,7 +57,7 @@ fi git add configure.in git commit -m "Release freeswitch-$ver" -git tag -a -m "freeswitch-$ver release" v$ver +git tag -a ${opts} -m "freeswitch-$ver release" v$ver git clone $src_repo $dst_dir if [ -n "$stash_saved" ]; then From c9261be6d1829b9b98e2f5fba26186c276d7acec Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 24 Feb 2012 16:09:30 -0600 Subject: [PATCH 117/292] FS-3942 --- src/mod/say/mod_say_de/mod_say_de.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mod/say/mod_say_de/mod_say_de.c b/src/mod/say/mod_say_de/mod_say_de.c index 667f3f6669..542e4e6da4 100644 --- a/src/mod/say/mod_say_de/mod_say_de.c +++ b/src/mod/say/mod_say_de/mod_say_de.c @@ -87,7 +87,7 @@ static switch_status_t play_group(switch_say_method_t method, switch_say_gender_ if (a) { /*german nominativ for "one" in numbers like 21, 171, 4591 is flexed("ein" instead of "eins"), 2-9 are not*/ if ( a == 1 ) { - say_file("digits/s-%d.wav"); + say_file("digits/s-1.wav"); } else { say_file("digits/%d.wav", a); } @@ -98,7 +98,7 @@ static switch_status_t play_group(switch_say_method_t method, switch_say_gender_ if (b > 1) { /*german nominativ for "one" in numbers like 21, 171, 4591 is flexed, 2-9 are not*/ if ( c == 1 ) { - say_file("digits/s-%d.wav"); + say_file("digits/s-1.wav"); } else { say_file("digits/%d.wav", c); } @@ -127,7 +127,7 @@ static switch_status_t play_group(switch_say_method_t method, switch_say_gender_ if ( b == 0 && c == 1 && gender == SSG_FEMININE ) { say_file("digits/%d_f.wav", c); } else if ( b == 0 && c == 1 && what ) { - say_file("digits/s-%d.wav"); + say_file("digits/s-1.wav"); } else { say_file("digits/%d.wav", c); } From fea66c154273d2d7e2ff6c417e3f5da45f647eec Mon Sep 17 00:00:00 2001 From: William King Date: Fri, 24 Feb 2012 15:41:12 -0800 Subject: [PATCH 118/292] Add a README and turn off verbose debugging by default. --- src/mod/formats/mod_vlc/README | 23 +++++++++++++++++++++++ src/mod/formats/mod_vlc/mod_vlc.c | 6 ++++-- 2 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 src/mod/formats/mod_vlc/README diff --git a/src/mod/formats/mod_vlc/README b/src/mod/formats/mod_vlc/README new file mode 100644 index 0000000000..16db672c59 --- /dev/null +++ b/src/mod/formats/mod_vlc/README @@ -0,0 +1,23 @@ +You HAVE to have libvlc version 1.2 or later for mod_vlc to work. Both for the reason that +libvlc version 1.2 is LGPL and because there are new api's in 1.2 that are required. + +Building and usage: + +I used git://git.videolan.org/vlc.git to get the latest version of libvlc. + +On debian I had to install: +sudo apt-get install libavcodec-dev libavutil-dev libavformat-dev liba52-0.7.4-dev + +My configure line for libvlc was: +./configure --prefix=/usr/ --disable-vlc --disable-lua --disable-mad --disable-swscale --disable-postproc --disable-xcb --disable-alsa + +The dialplan syntax I use are one of the following: + + + +Development: + +If you are having troubles, first change the value of vlc_args in mod_vlc.c. + +The documentation for the libvlc library is located at: +http://www.videolan.org/developers/vlc/doc/doxygen/html/group__libvlc.html \ No newline at end of file diff --git a/src/mod/formats/mod_vlc/mod_vlc.c b/src/mod/formats/mod_vlc/mod_vlc.c index 995b202b35..078152156a 100644 --- a/src/mod/formats/mod_vlc/mod_vlc.c +++ b/src/mod/formats/mod_vlc/mod_vlc.c @@ -46,6 +46,9 @@ static char *vlc_file_supported_formats[SWITCH_MAX_CODECS] = { 0 }; +/* Change valud to -vvv for vlc related debug. Be careful since vlc is at least as verbose as FS about logging */ +const char *vlc_args = ""; + libvlc_instance_t *inst; struct vlc_file_context { @@ -172,7 +175,6 @@ static switch_status_t vlc_file_close(switch_file_handle_t *handle) SWITCH_MODULE_LOAD_FUNCTION(mod_vlc_load) { switch_file_interface_t *file_interface; - const char *args = "-vvv"; /* connect my internal structure to the blank pointer passed to me */ *module_interface = switch_loadable_module_create_module_interface(pool, modname); @@ -188,7 +190,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_vlc_load) file_interface->file_read = vlc_file_read; /* load the vlc engine. */ - inst = libvlc_new(1, &args); + inst = libvlc_new(1, &vlc_args); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Initialized VLC instance\n"); From 3a0767865d5c1866b9beadbbd812dafc65229000 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 27 Feb 2012 13:26:50 -0600 Subject: [PATCH 119/292] only flush on break when its a blocking situation --- src/switch_rtp.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/switch_rtp.c b/src/switch_rtp.c index 5c966cde6e..d48d622baf 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -3097,9 +3097,12 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_BREAK) || (bytes && bytes == 4 && *((int *) &rtp_session->recv_msg) == UINT_MAX)) { switch_clear_flag_locked(rtp_session, SWITCH_RTP_FLAG_BREAK); - do_2833(rtp_session, session); - bytes = 0; - return_cng_frame(); + + if (!switch_test_flag(rtp_session, SWITCH_RTP_FLAG_NOBLOCK) || switch_test_flag(rtp_session, SWITCH_RTP_FLAG_PROXY_MEDIA) || switch_test_flag(rtp_session, SWITCH_RTP_FLAG_UDPTL) || (bytes && bytes < 5) || (!bytes && poll_loop)) { + do_2833(rtp_session, session); + bytes = 0; + return_cng_frame(); + } } if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_FLUSH)) { From 62c6855f280d9d617fa22c29a173a5cc9524ec4a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 27 Feb 2012 13:28:27 -0600 Subject: [PATCH 120/292] only flush on break when its a blocking situation part 1 --- src/switch_rtp.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/switch_rtp.c b/src/switch_rtp.c index d48d622baf..8774c2479e 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -3102,6 +3102,8 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ do_2833(rtp_session, session); bytes = 0; return_cng_frame(); + } else { + switch_clear_flag_locked(rtp_session, SWITCH_RTP_FLAG_FLUSH); } } From 23645b6af2b155203222bedd4cc3a134309147ed Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 27 Feb 2012 16:49:12 -0600 Subject: [PATCH 121/292] comment assert for windows --- libs/esl/src/esl.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libs/esl/src/esl.c b/libs/esl/src/esl.c index 562ee2d84c..d55fdbaa2e 100644 --- a/libs/esl/src/esl.c +++ b/libs/esl/src/esl.c @@ -741,9 +741,10 @@ ESL_DECLARE(int) esl_wait_sock(esl_socket_t sock, uint32_t ms, esl_poll_t flags) FD_ZERO(&wfds); FD_ZERO(&efds); +#ifdef WIN32 /* Wouldn't you rather know?? */ assert(sock <= FD_SETSIZE); - +#endif if ((flags & ESL_POLL_READ)) { From da36d1f57fda6eaa703e9b52f1e192116bfb8c61 Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Tue, 28 Feb 2012 08:38:45 -0600 Subject: [PATCH 122/292] FS-3953 --resolve --- libs/esl/src/esl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/esl/src/esl.c b/libs/esl/src/esl.c index d55fdbaa2e..02ab7ef271 100644 --- a/libs/esl/src/esl.c +++ b/libs/esl/src/esl.c @@ -741,7 +741,7 @@ ESL_DECLARE(int) esl_wait_sock(esl_socket_t sock, uint32_t ms, esl_poll_t flags) FD_ZERO(&wfds); FD_ZERO(&efds); -#ifdef WIN32 +#ifndef WIN32 /* Wouldn't you rather know?? */ assert(sock <= FD_SETSIZE); #endif From a6a3ff1dc5574ded096ac1427cd7c6992d14092f Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 28 Feb 2012 09:51:57 -0600 Subject: [PATCH 123/292] add another case to flush check --- src/switch_rtp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_rtp.c b/src/switch_rtp.c index 8774c2479e..56bc0e58ee 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -3098,7 +3098,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_BREAK) || (bytes && bytes == 4 && *((int *) &rtp_session->recv_msg) == UINT_MAX)) { switch_clear_flag_locked(rtp_session, SWITCH_RTP_FLAG_BREAK); - if (!switch_test_flag(rtp_session, SWITCH_RTP_FLAG_NOBLOCK) || switch_test_flag(rtp_session, SWITCH_RTP_FLAG_PROXY_MEDIA) || switch_test_flag(rtp_session, SWITCH_RTP_FLAG_UDPTL) || (bytes && bytes < 5) || (!bytes && poll_loop)) { + if (!switch_test_flag(rtp_session, SWITCH_RTP_FLAG_NOBLOCK) || !switch_test_flag(rtp_session, SWITCH_RTP_FLAG_USE_TIMER) || switch_test_flag(rtp_session, SWITCH_RTP_FLAG_PROXY_MEDIA) || switch_test_flag(rtp_session, SWITCH_RTP_FLAG_UDPTL) || (bytes && bytes < 5) || (!bytes && poll_loop)) { do_2833(rtp_session, session); bytes = 0; return_cng_frame(); From 926af0392d1052295a825a72c3155245b3bcdd44 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 28 Feb 2012 10:17:08 -0600 Subject: [PATCH 124/292] FS-3940 --resolve --- src/mod/endpoints/mod_sofia/mod_sofia.c | 58 ++++++++++++++++--------- 1 file changed, 38 insertions(+), 20 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index ee79914236..72cbccf544 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -2801,8 +2801,29 @@ static int show_reg_callback_xml(void *pArg, int argc, char **argv, char **colum return 0; } -static const char *status_names[] = { "DOWN", "UP", NULL }; +static int sql2str_callback(void *pArg, int argc, char **argv, char **columnNames) +{ + struct cb_helper_sql2str *cbt = (struct cb_helper_sql2str *) pArg; + switch_copy_string(cbt->buf, argv[0], cbt->len); + cbt->matches++; + return 0; +} + +static uint32_t sofia_profile_reg_count(sofia_profile_t *profile) +{ + struct cb_helper_sql2str cb; + char reg_count[80] = ""; + char *sql; + cb.buf = reg_count; + cb.len = sizeof(reg_count); + sql = switch_mprintf("select count(*) from sip_registrations where profile_name = '%q'", profile->name); + sofia_glue_execute_sql_callback(profile, profile->ireg_mutex, sql, sql2str_callback, &cb); + free(sql); + return strtoul(reg_count, NULL, 10); +} + +static const char *status_names[] = { "DOWN", "UP", NULL }; static switch_status_t cmd_status(char **argv, int argc, switch_stream_handle_t *stream) { @@ -2976,6 +2997,7 @@ static switch_status_t cmd_status(char **argv, int argc, switch_stream_handle_t stream->write_function(stream, "FAILED-CALLS-IN \t%u\n", profile->ib_failed_calls); stream->write_function(stream, "CALLS-OUT \t%u\n", profile->ob_calls); stream->write_function(stream, "FAILED-CALLS-OUT \t%u\n", profile->ob_failed_calls); + stream->write_function(stream, "REGISTRATIONS \t%lu\n", sofia_profile_reg_count(profile)); } cb.profile = profile; @@ -3252,9 +3274,9 @@ static switch_status_t cmd_xml_status(char **argv, int argc, switch_stream_handl stream->write_function(stream, " %u\n", profile->ob_calls); stream->write_function(stream, " %u\n", profile->ib_failed_calls); stream->write_function(stream, " %u\n", profile->ob_failed_calls); + stream->write_function(stream, " %lu\n", sofia_profile_reg_count(profile)); stream->write_function(stream, " \n"); } - stream->write_function(stream, " \n"); cb.profile = profile; cb.stream = stream; @@ -3273,6 +3295,13 @@ static switch_status_t cmd_xml_status(char **argv, int argc, switch_stream_handl "network_ip,network_port,sip_username,sip_realm,mwi_user,mwi_host" " from sip_registrations where profile_name='%q' and contact like '%%%q%%'", profile->name, argv[3]); } + if (!sql && argv[2] && !strcasecmp(argv[2], "reg")) { + + sql = switch_mprintf("select call_id,sip_user,sip_host,contact,status," + "rpid,expires,user_agent,server_user,server_host,profile_name,hostname," + "network_ip,network_port,sip_username,sip_realm,mwi_user,mwi_host" + " from sip_registrations where profile_name='%q'", profile->name); + } if (!sql && argv[2] && !strcasecmp(argv[2], "user") && argv[3]) { char *dup = strdup(argv[3]); char *host = NULL, *user = NULL; @@ -3303,17 +3332,15 @@ static switch_status_t cmd_xml_status(char **argv, int argc, switch_stream_handl switch_safe_free(sqlextra); } - if (!sql) { - sql = switch_mprintf("select call_id,sip_user,sip_host,contact,status," - "rpid,expires,user_agent,server_user,server_host,profile_name,hostname," - "network_ip,network_port,sip_username,sip_realm,mwi_user,mwi_host" - " from sip_registrations where profile_name='%q'", profile->name); + if (sql) { + stream->write_function(stream, " \n"); + + sofia_glue_execute_sql_callback(profile, profile->ireg_mutex, sql, show_reg_callback_xml, &cb); + switch_safe_free(sql); + + stream->write_function(stream, " \n"); } - sofia_glue_execute_sql_callback(profile, profile->ireg_mutex, sql, show_reg_callback_xml, &cb); - switch_safe_free(sql); - - stream->write_function(stream, " \n"); stream->write_function(stream, "\n"); sofia_glue_release_profile(profile); @@ -3682,15 +3709,6 @@ static int contact_callback(void *pArg, int argc, char **argv, char **columnName return 0; } -static int sql2str_callback(void *pArg, int argc, char **argv, char **columnNames) -{ - struct cb_helper_sql2str *cbt = (struct cb_helper_sql2str *) pArg; - - switch_copy_string(cbt->buf, argv[0], cbt->len); - cbt->matches++; - return 0; -} - SWITCH_STANDARD_API(sofia_count_reg_function) { char *data; From 41b3cf148f6f5cb2e3bd2781506dfcbaa72a05e9 Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Tue, 28 Feb 2012 10:34:07 -0600 Subject: [PATCH 125/292] vs2010 add mod_sms. not built by default. --- Freeswitch.2010.sln | 16 ++++++++++++++++ .../applications/mod_sms/mod_sms.2010.vcxproj | 10 +++------- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/Freeswitch.2010.sln b/Freeswitch.2010.sln index 83f9734fa1..3470f69d55 100644 --- a/Freeswitch.2010.sln +++ b/Freeswitch.2010.sln @@ -724,6 +724,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_httapi", "src\mod\appli EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_abstraction", "src\mod\applications\mod_abstraction\mod_abstraction.2010.vcxproj", "{60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sms", "src\mod\applications\mod_sms\mod_sms.2010.vcxproj", "{2469B306-B027-4FF2-8815-C9C1EA2CAE79}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution All|Win32 = All|Win32 @@ -3734,6 +3736,19 @@ Global {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|x64.Build.0 = Release|x64 {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|x64 Setup.ActiveCfg = Release|x64 {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|x86 Setup.ActiveCfg = Release|x64 + {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.All|Win32.ActiveCfg = Release|x64 + {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.All|x64.ActiveCfg = Release|x64 + {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.All|x64.Build.0 = Release|x64 + {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.All|x64 Setup.ActiveCfg = Release|x64 + {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.All|x86 Setup.ActiveCfg = Release|x64 + {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Debug|Win32.ActiveCfg = Debug|Win32 + {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Debug|x64.ActiveCfg = Debug|x64 + {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Debug|x64 Setup.ActiveCfg = Debug|x64 + {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Debug|x86 Setup.ActiveCfg = Debug|x64 + {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|Win32.ActiveCfg = Release|Win32 + {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|x64.ActiveCfg = Release|x64 + {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|x64 Setup.ActiveCfg = Release|x64 + {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|x86 Setup.ActiveCfg = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -3787,6 +3802,7 @@ Global {50AAC2CE-BFC9-4912-87CC-C6381850D735} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {4748FF56-CA85-4809-97D6-A94C0FAC1D77} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {2469B306-B027-4FF2-8815-C9C1EA2CAE79} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {07113B25-D3AF-4E04-BA77-4CD1171F022C} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4} {A27CCA23-1541-4337-81A4-F0A6413078A0} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4} {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4} diff --git a/src/mod/applications/mod_sms/mod_sms.2010.vcxproj b/src/mod/applications/mod_sms/mod_sms.2010.vcxproj index 4dbbf47874..7be7e86fe1 100644 --- a/src/mod/applications/mod_sms/mod_sms.2010.vcxproj +++ b/src/mod/applications/mod_sms/mod_sms.2010.vcxproj @@ -1,4 +1,4 @@ - + @@ -20,7 +20,7 @@ mod_sms - {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39} + {2469B306-B027-4FF2-8815-C9C1EA2CAE79} mod_sms Win32Proj @@ -63,10 +63,6 @@ <_ProjectFileVersion>10.0.30319.1 - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ @@ -132,4 +128,4 @@ - + \ No newline at end of file From ea975c3db1125fa86fce3c1f6c5b9341e5f28f92 Mon Sep 17 00:00:00 2001 From: SwK Date: Tue, 28 Feb 2012 19:21:04 -0500 Subject: [PATCH 126/292] FS-3630 --resolve Fix up the autoconf macro to properly use the linker flags for a statically linked library. --- build/config/libcurl.m4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/config/libcurl.m4 b/build/config/libcurl.m4 index 5ddf77f321..d1e6f65aa5 100644 --- a/build/config/libcurl.m4 +++ b/build/config/libcurl.m4 @@ -97,7 +97,7 @@ AC_DEFUN([LIBCURL_CHECK_CONFIG], LIBCURL_CPPFLAGS=`$_libcurl_config --cflags` fi if test x"$LIBCURL" = "x" ; then - LIBCURL=`$_libcurl_config --libs` + LIBCURL=`$_libcurl_config --libs --static` # This is so silly, but Apple actually has a bug in their # curl-config script. Fixed in Tiger, but there are still From 7ea4d9ee378181e51a5b1d368be7e3f7fd4360f5 Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Wed, 29 Feb 2012 07:37:45 -0600 Subject: [PATCH 127/292] FS-3711 --resolve --- src/mod/formats/mod_shout/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/formats/mod_shout/Makefile b/src/mod/formats/mod_shout/Makefile index d35d75a630..f059677e7e 100644 --- a/src/mod/formats/mod_shout/Makefile +++ b/src/mod/formats/mod_shout/Makefile @@ -49,7 +49,7 @@ $(LAMELA): $(LAME_BUILDDIR)/Makefile $(SHOUT_DIR): $(GETLIB) $(SHOUT).tar.gz - patch -p0 -i hack_out_ogg.diff + patch -p 6 -d ../../../../libs/libshout-2.2.2 < hack_out_ogg.diff $(SHOUT_BUILDDIR)/Makefile: $(SHOUT_DIR) mkdir -p $(SHOUT_BUILDDIR) From 6aa492d0341ea87d58668699d32cd9c52386815d Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Wed, 29 Feb 2012 08:50:00 -0600 Subject: [PATCH 128/292] vs2010 add some ssl support to curl - test --- libs/win32/curl/curllib.2010.vcxproj | 16 ++++++++-------- .../applications/mod_curl/mod_curl.2010.vcxproj | 6 ++++++ .../mod_spidermonkey_curl.2010.vcxproj | 6 ++++++ .../mod_xml_curl/mod_xml_curl.2010.vcxproj | 6 ++++++ w32/Library/FreeSwitchCore.2010.vcxproj | 6 ++++++ 5 files changed, 32 insertions(+), 8 deletions(-) diff --git a/libs/win32/curl/curllib.2010.vcxproj b/libs/win32/curl/curllib.2010.vcxproj index 979093e958..c607e0198a 100644 --- a/libs/win32/curl/curllib.2010.vcxproj +++ b/libs/win32/curl/curllib.2010.vcxproj @@ -80,8 +80,8 @@ MaxSpeed OnlyExplicitInline - ..\..\curl\lib\;..\..\curl\include;.;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;_USRDLL;BUILDING_LIBCURL;%(PreprocessorDefinitions) + ..\..\curl\lib\;..\..\curl\include;.;..\..\openssl-1.0.0a\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -111,8 +111,8 @@ MaxSpeed OnlyExplicitInline - ..\..\curl\lib\;..\..\curl\include;.;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;_USRDLL;BUILDING_LIBCURL;%(PreprocessorDefinitions) + ..\..\curl\lib\;..\..\curl\include;.;..\..\openssl-1.0.0a\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -141,8 +141,8 @@ Disabled - ..\..\curl\lib\;..\..\curl\include;.;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;_USRDLL;BUILDING_LIBCURL;%(PreprocessorDefinitions) + ..\..\curl\lib\;..\..\curl\include;.;..\..\openssl-1.0.0a\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebugDLL @@ -171,8 +171,8 @@ Disabled - ..\..\curl\lib\;..\..\curl\include;.;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;_USRDLL;BUILDING_LIBCURL;%(PreprocessorDefinitions) + ..\..\curl\lib\;..\..\curl\include;.;..\..\openssl-1.0.0a\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebugDLL diff --git a/src/mod/applications/mod_curl/mod_curl.2010.vcxproj b/src/mod/applications/mod_curl/mod_curl.2010.vcxproj index dd7ea67bd0..45257322b9 100644 --- a/src/mod/applications/mod_curl/mod_curl.2010.vcxproj +++ b/src/mod/applications/mod_curl/mod_curl.2010.vcxproj @@ -136,6 +136,12 @@ {9778f1c0-09bc-4698-8ebc-bd982247209a} false + + {d331904d-a00a-4694-a5a3-fcff64ab5dbe} + + + {b4b62169-5ad4-4559-8707-3d933ac5db39} + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} false diff --git a/src/mod/languages/mod_spidermonkey/mod_spidermonkey_curl.2010.vcxproj b/src/mod/languages/mod_spidermonkey/mod_spidermonkey_curl.2010.vcxproj index 9bcd25813e..9dbcd29cfc 100644 --- a/src/mod/languages/mod_spidermonkey/mod_spidermonkey_curl.2010.vcxproj +++ b/src/mod/languages/mod_spidermonkey/mod_spidermonkey_curl.2010.vcxproj @@ -166,6 +166,12 @@ {204fa0de-305d-4414-ae2e-f195a23f390d} false + + {d331904d-a00a-4694-a5a3-fcff64ab5dbe} + + + {b4b62169-5ad4-4559-8707-3d933ac5db39} + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} false diff --git a/src/mod/xml_int/mod_xml_curl/mod_xml_curl.2010.vcxproj b/src/mod/xml_int/mod_xml_curl/mod_xml_curl.2010.vcxproj index 0d30ff3489..d5d3af69f0 100644 --- a/src/mod/xml_int/mod_xml_curl/mod_xml_curl.2010.vcxproj +++ b/src/mod/xml_int/mod_xml_curl/mod_xml_curl.2010.vcxproj @@ -136,6 +136,12 @@ {87ee9da4-de1e-4448-8324-183c98dca588} false + + {d331904d-a00a-4694-a5a3-fcff64ab5dbe} + + + {b4b62169-5ad4-4559-8707-3d933ac5db39} + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} false diff --git a/w32/Library/FreeSwitchCore.2010.vcxproj b/w32/Library/FreeSwitchCore.2010.vcxproj index aa03a0b49a..7cb47d30ba 100644 --- a/w32/Library/FreeSwitchCore.2010.vcxproj +++ b/w32/Library/FreeSwitchCore.2010.vcxproj @@ -792,6 +792,12 @@ if not exist "$(OutDir)htdocs" xcopy "$(SolutionDir)htdocs\*.*" "$(OutDir)htdocs {87ee9da4-de1e-4448-8324-183c98dca588} + + {d331904d-a00a-4694-a5a3-fcff64ab5dbe} + + + {b4b62169-5ad4-4559-8707-3d933ac5db39} + {8d04b550-d240-4a44-8a18-35da3f7038d9} false From 0626c89d4af613bf7a5fb57994e0a5768ee0e852 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 29 Feb 2012 14:45:39 -0600 Subject: [PATCH 129/292] always update the .update file when changing the sofia lib --- libs/sofia-sip/.update | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/sofia-sip/.update b/libs/sofia-sip/.update index 692541efac..c55ef8adfe 100644 --- a/libs/sofia-sip/.update +++ b/libs/sofia-sip/.update @@ -1 +1 @@ -Mon Jan 16 17:26:19 CST 2012 +Wed Feb 29 14:45:18 CST 2012 From 2ec02e54455f2c635a347803f85e5a874977975e Mon Sep 17 00:00:00 2001 From: Brian West Date: Thu, 1 Mar 2012 13:22:52 -0600 Subject: [PATCH 130/292] FS-3890 --- scripts/gentls_cert.in | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/scripts/gentls_cert.in b/scripts/gentls_cert.in index e102a964ef..e397e97d61 100644 --- a/scripts/gentls_cert.in +++ b/scripts/gentls_cert.in @@ -3,6 +3,7 @@ CONFDIR=@prefix@/conf/ssl DAYS=2190 KEY_SIZE=2048 +export KEY_SIZE=${KEY_SIZE} TMPFILE="/tmp/fs-ca-$$-$(date +%Y%m%d%H%M%S)" @@ -36,10 +37,14 @@ setup_ca() { mkdir -p -m 750 "${CONFDIR}/CA" || exit 1 fi - if [ ! -e "${CONFDIR}/CA/config.tpl" ]; then + if [ -e "${CONFDIR}/CA/config.tpl" ]; then + if [ $0 -nt "${CONFDIR}/CA/config.tpl" ]; then + echo "WARNING! genttls_cert has a modified time more recent than ${CONFDIR}/CA/config.tpl remove config.tpl to re-generate it" + fi + else cat > "${CONFDIR}/CA/config.tpl" <<-EOF [ req ] - default_bits = $ENV::KEY_SIZE + default_bits = \$ENV::KEY_SIZE prompt = no distinguished_name = req_dn @@ -117,7 +122,7 @@ generate_cert() { > "${TMPFILE}.cfg" || exit 1 openssl req -new -out "${TMPFILE}.req" \ - -newkey rsa: -keyout "${TMPFILE}.key" \ + -newkey rsa:${KEY_SIZE} -keyout "${TMPFILE}.key" \ -config "${TMPFILE}.cfg" -nodes -sha1 >/dev/null || exit 1 openssl x509 -req -CAkey "${CONFDIR}/CA/cakey.pem" -CA "${CONFDIR}/CA/cacert.pem" -CAcreateserial \ From 7f4c35c91dba235b31e563babb168306d422d58f Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Thu, 1 Mar 2012 09:28:38 -0600 Subject: [PATCH 131/292] comment log of entire upnp keep alive packet - remove debug log clutter --- src/switch_nat.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_nat.c b/src/switch_nat.c index 3918cdbbf1..dd73cd8be7 100644 --- a/src/switch_nat.c +++ b/src/switch_nat.c @@ -304,7 +304,7 @@ static void *SWITCH_THREAD_FUNC switch_nat_multicast_runtime(switch_thread_t * t pos++; } if (!strncmp(pos, "ssdp:alive", 10)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "got UPnP keep alive packet: \n%s\n", buf); + /* switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "got UPnP keep alive packet: \n%s\n", buf); */ /* did pub ip change */ newip[0] = '\0'; if (get_upnp_pubaddr(newip) != SWITCH_STATUS_SUCCESS) { From 5e906e8eaa8c54bbcd6c698c061e890a1caf2a4d Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 1 Mar 2012 10:00:24 -0600 Subject: [PATCH 132/292] FS-3962 --resolve --- src/mod/applications/mod_dptools/mod_dptools.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index 80797b0a32..7d48784486 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -3326,7 +3326,7 @@ static switch_call_cause_t user_outgoing_channel(switch_core_session_t *session, if (var_event) { switch_event_add_header_string(var_event, SWITCH_STACK_BOTTOM, "dialed_user", dialed_user); switch_event_add_header_string(var_event, SWITCH_STACK_BOTTOM, "dialed_domain", domain); - if (!strstr(dest, "presence_id=")) { + if (!zstr(dest) && !strstr(dest, "presence_id=")) { switch_event_add_header(var_event, SWITCH_STACK_BOTTOM, "presence_id", "%s@%s", dialed_user, domain); } } From 872a0fe658c3be79aa82c253d6490a60f0ea60c5 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 1 Mar 2012 10:04:07 -0600 Subject: [PATCH 133/292] FS-3957 --resolve --- libs/sofia-sip/.update | 2 +- libs/sofia-sip/libsofia-sip-ua/sdp/sdp.c | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/libs/sofia-sip/.update b/libs/sofia-sip/.update index c55ef8adfe..c35540c4f5 100644 --- a/libs/sofia-sip/.update +++ b/libs/sofia-sip/.update @@ -1 +1 @@ -Wed Feb 29 14:45:18 CST 2012 +Thu Mar 1 10:03:45 CST 2012 diff --git a/libs/sofia-sip/libsofia-sip-ua/sdp/sdp.c b/libs/sofia-sip/libsofia-sip-ua/sdp/sdp.c index 867ca7a79d..3718764718 100644 --- a/libs/sofia-sip/libsofia-sip-ua/sdp/sdp.c +++ b/libs/sofia-sip/libsofia-sip-ua/sdp/sdp.c @@ -1875,10 +1875,11 @@ sdp_rtpmap_t *sdp_rtpmap_find_matching(sdp_rtpmap_t const *list, sdp_rtpmap_t const *rm) { char const *lparam, *rparam; + sdp_rtpmap_t const *cp_list = NULL; if (rm == NULL) return NULL; - + for (; list; list = list->rm_next) { if (rm->rm_rate != list->rm_rate) continue; @@ -1888,8 +1889,11 @@ sdp_rtpmap_t *sdp_rtpmap_find_matching(sdp_rtpmap_t const *list, lparam = rm->rm_params; rparam = list->rm_params; - if (lparam == rparam) - break; + if (lparam == rparam) { + cp_list = list; + if (rm->rm_pt != list->rm_pt) continue; + break; + } if (!lparam) lparam = "1"; if (!rparam) rparam = "1"; if (!su_casematch(lparam, rparam)) @@ -1898,5 +1902,5 @@ sdp_rtpmap_t *sdp_rtpmap_find_matching(sdp_rtpmap_t const *list, break; } - return (sdp_rtpmap_t *)list; + return cp_list ? (sdp_rtpmap_t *) cp_list : (sdp_rtpmap_t *)list; } From d0d75433c0cd24e47c78bff050ec103b3904bf11 Mon Sep 17 00:00:00 2001 From: William King Date: Thu, 1 Mar 2012 10:21:11 -0800 Subject: [PATCH 134/292] the http prefix should not be listed as a supported prefix since this could cause it to conflict with other modules. Now use the vlc:// prefix on any streams to have mod_vlc handle the stream. --- src/mod/formats/mod_vlc/README | 5 ++++- src/mod/formats/mod_vlc/mod_vlc.c | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/mod/formats/mod_vlc/README b/src/mod/formats/mod_vlc/README index 16db672c59..4ffce5d174 100644 --- a/src/mod/formats/mod_vlc/README +++ b/src/mod/formats/mod_vlc/README @@ -11,8 +11,11 @@ sudo apt-get install libavcodec-dev libavutil-dev libavformat-dev liba52-0.7.4-d My configure line for libvlc was: ./configure --prefix=/usr/ --disable-vlc --disable-lua --disable-mad --disable-swscale --disable-postproc --disable-xcb --disable-alsa +Debian unstable now has VLC 2.0 packaged. I am now testing with the packaged version of the library. + The dialplan syntax I use are one of the following: - + + Development: diff --git a/src/mod/formats/mod_vlc/mod_vlc.c b/src/mod/formats/mod_vlc/mod_vlc.c index 078152156a..fdcb64ed8d 100644 --- a/src/mod/formats/mod_vlc/mod_vlc.c +++ b/src/mod/formats/mod_vlc/mod_vlc.c @@ -101,6 +101,9 @@ static switch_status_t vlc_file_open(switch_file_handle_t *handle, const char *p if(! strncmp(context->path, "http", 4)){ context->m = libvlc_media_new_location(inst, context->path); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "VLC Path is http %s\n", context->path); + } else if (! strncmp(context->path, "mms", 3)){ + context->m = libvlc_media_new_path(inst, context->path); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "VLC Path is mms %s\n", context->path); } else if (! strncmp(context->path, "/", 1)){ context->m = libvlc_media_new_path(inst, context->path); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "VLC Path is file %s\n", context->path); @@ -180,7 +183,6 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_vlc_load) *module_interface = switch_loadable_module_create_module_interface(pool, modname); vlc_file_supported_formats[0] = "vlc"; - vlc_file_supported_formats[1] = "http"; file_interface = switch_loadable_module_create_interface(*module_interface, SWITCH_FILE_INTERFACE); file_interface->interface_name = modname; From 1aa910339adb6f39df190137af439e34774908bd Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Thu, 1 Mar 2012 15:55:32 -0600 Subject: [PATCH 135/292] add to .gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index b85dc53ca8..073d91beae 100644 --- a/.gitignore +++ b/.gitignore @@ -171,3 +171,5 @@ Freeswitch.2010.sdf src/mod/codecs/mod_celt/*/*/mod_celt.log src/mod/endpoints/mod_skinny/*/*/mod_skinny_2010.log src/mod/formats/mod_shout/*/*/mod_shout.log + +/w32/Setup/obj \ No newline at end of file From 29d036799b76b8bac49598a09db4b4cd2c54ada4 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 2 Mar 2012 11:51:32 -0600 Subject: [PATCH 136/292] FS-3955 --resolve --- src/mod/endpoints/mod_sofia/sofia_presence.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index e8440eb647..7700674243 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -2015,6 +2015,7 @@ static void _send_presence_notify(sofia_profile_t *profile, sofia_glue_free_destination(dst); switch_safe_free(user_via); switch_safe_free(o_contact_dup); + switch_safe_free(our_contact_dup); } From 8e7f6b71a11b9cae3bafae90eb0470f5e8f44097 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 2 Mar 2012 13:42:56 -0600 Subject: [PATCH 137/292] FS-3966 --resolve nm i guess that's fine, btw your patch had funny line feeds --- src/mod/applications/mod_spandsp/mod_spandsp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/applications/mod_spandsp/mod_spandsp.c b/src/mod/applications/mod_spandsp/mod_spandsp.c index 68ac50f137..ba5f7713f2 100644 --- a/src/mod/applications/mod_spandsp/mod_spandsp.c +++ b/src/mod/applications/mod_spandsp/mod_spandsp.c @@ -337,7 +337,7 @@ switch_status_t load_configuration(switch_bool_t reload) spandsp_globals.timezone = ""; /* TODO make configuration param */ - spandsp_globals.tonedebug = 1; + spandsp_globals.tonedebug = 0; if ((xml = switch_xml_open_cfg("spandsp.conf", &cfg, NULL)) || (xml = switch_xml_open_cfg("fax.conf", &cfg, NULL))) { status = SWITCH_STATUS_SUCCESS; From 17cb6a22b31d96a3ef2246aaaa73eaeb0f1bbc29 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 2 Mar 2012 16:42:05 -0600 Subject: [PATCH 138/292] add some defensive code to allow support for yealink in SCA mode even when its broken --- src/mod/endpoints/mod_sofia/sofia.c | 74 +++++++++++- src/mod/endpoints/mod_sofia/sofia_glue.c | 4 +- src/mod/endpoints/mod_sofia/sofia_presence.c | 117 +++++++++++++++---- 3 files changed, 164 insertions(+), 31 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index b84cc00f4a..1ebddbc87d 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -4806,6 +4806,7 @@ static void sofia_handle_sip_r_invite(switch_core_session_t *session, int status if (channel && sip->sip_call_info) { char *p; call_info = sip_header_as_string(nua_handle_home(nh), (void *) sip->sip_call_info); + if (switch_stristr("appearance", call_info)) { switch_channel_set_variable(channel, "presence_call_info_full", call_info); if ((p = strchr(call_info, ';'))) { @@ -4842,10 +4843,15 @@ static void sofia_handle_sip_r_invite(switch_core_session_t *session, int status if (mod_sofia_globals.debug_sla > 1) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "QUERY SQL %s\n", sql); } - + sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE); + + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "Auto-Fixing Broken SLA [;%s]\n", + sip->sip_from->a_url->url_host, buf); + switch_channel_set_variable_printf(channel, "presence_call_info_full", ";%s", sip->sip_from->a_url->url_host, buf); + switch_channel_set_variable(channel, "presence_call_info", buf); } - } + } } } @@ -8021,12 +8027,67 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_ if ((call_info = sip_call_info(sip))) { call_info_str = sip_header_as_string(nh->nh_home, (void *) call_info); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "WTF %s\n", call_info_str); + + if (sofia_test_pflag(profile, PFLAG_MANAGE_SHARED_APPEARANCE) && switch_stristr("appearance", call_info_str)) { + char *p; + + switch_channel_set_variable(channel, "presence_call_info_full", call_info_str); + if ((p = strchr(call_info_str, ';'))) { + p++; + switch_channel_set_variable(channel, "presence_call_info", p); + } + } + if (call_info->ci_params && (msg_params_find(call_info->ci_params, "answer-after=0"))) { switch_channel_set_variable(channel, "sip_auto_answer_detected", "true"); } switch_channel_set_variable(channel, "sip_call_info", call_info_str); + } else if (sofia_test_pflag(profile, PFLAG_MANAGE_SHARED_APPEARANCE)) { + char buf[128] = ""; + char *sql; + char *state = "progressing"; + + if (sip && + sip->sip_from && sip->sip_from->a_url && sip->sip_from->a_url->url_user && sip->sip_from->a_url->url_host && + sip->sip_to && sip->sip_to->a_url && sip->sip_to->a_url->url_user && sip->sip_to->a_url->url_host) { + sql = + switch_mprintf("select 'appearance-index=1' from sip_subscriptions where expires > -1 and hostname='%q' and event='call-info' and " + "sub_to_user='%q' and sub_to_host='%q'", mod_sofia_globals.hostname, sip->sip_to->a_url->url_user, + sip->sip_from->a_url->url_host); + sofia_glue_execute_sql2str(profile, profile->ireg_mutex, sql, buf, sizeof(buf)); + + if (mod_sofia_globals.debug_sla > 1) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "QUERY SQL %s [%s]\n", sql, buf); + } + free(sql); + + if (!zstr(buf)) { + sql = switch_mprintf("update sip_dialogs set call_info='%q',call_info_state='%q' " + "where uuid='%q'", buf, state, switch_core_session_get_uuid(session)); + + if (mod_sofia_globals.debug_sla > 1) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "QUERY SQL %s\n", sql); + } + + sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE); + + + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "Auto-Fixing Broken SLA [;%s]\n", + sip->sip_from->a_url->url_host, buf); + + switch_channel_set_variable_printf(channel, "presence_call_info_full", ";%s", sip->sip_from->a_url->url_host, buf); + switch_channel_set_variable(channel, "presence_call_info", buf); + call_info_str = switch_core_session_sprintf(session, ";%s", sip->sip_from->a_url->url_host, buf); + } + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "WTF FAIL IF\n"); + + + } } + if (profile->pres_type) { const char *presence_id = switch_channel_get_variable(channel, "presence_id"); if (zstr(presence_id)) { @@ -8145,7 +8206,8 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_ free(sql); } - } + } + check_decode(displayname, session); tech_pvt->caller_profile = switch_caller_profile_new(switch_core_session_get_pool(session), @@ -8197,7 +8259,7 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_ if (app && data && !strcasecmp(app, "conference")) { - tech_pvt->caller_profile->destination_number = switch_core_sprintf(tech_pvt->caller_profile->pool, "answer,conference:%s", data); + tech_pvt->caller_profile->destination_number = switch_core_sprintf(tech_pvt->caller_profile->pool, "answer,conference:%s+flags{dist-dtmf}", data); tech_pvt->caller_profile->dialplan = "inline"; } else { if (switch_core_session_check_interface(b_session, sofia_endpoint_interface)) { @@ -8233,7 +8295,7 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_ if (!one_leg && (!b_tech_pvt || !sofia_test_flag(b_tech_pvt, TFLAG_SIP_HOLD)) && (!c_tech_pvt || !sofia_test_flag(c_tech_pvt, TFLAG_SIP_HOLD))) { - char *ext = switch_core_session_sprintf(session, "answer,conference:%s@sla+flags{mintwo}", uuid); + char *ext = switch_core_session_sprintf(session, "answer,conference:%s@sla+flags{mintwo|dist-dtmf}", uuid); switch_channel_set_flag(c_channel, CF_REDIRECT); switch_ivr_session_transfer(b_session, ext, "inline", NULL); @@ -8246,7 +8308,7 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_ if (do_conf) { tech_pvt->caller_profile->destination_number = switch_core_sprintf(tech_pvt->caller_profile->pool, - "answer,conference:%s@sla+flags{mintwo}", uuid); + "answer,conference:%s@sla+flags{mintwo|dist-dtmf}", uuid); } else { if (one_leg && c_app) { if (c_data) { diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 4b31e760e1..ad0f25300b 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -2362,7 +2362,7 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session) switch_channel_set_variable(channel, "presence_id", from); } - + if (!(tech_pvt->nh = nua_handle(tech_pvt->profile->nua, NULL, NUTAG_URL(url_str), TAG_IF(call_id, SIPTAG_CALL_ID_STR(call_id)), @@ -2575,7 +2575,7 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session) } else { tech_pvt->session_refresher = nua_no_refresher; } - + if (sofia_use_soa(tech_pvt)) { nua_invite(tech_pvt->nh, NUTAG_AUTOANSWER(0), diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 7700674243..1dfa7188cd 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -55,6 +55,13 @@ static int sync_sla(sofia_profile_t *profile, const char *to_user, const char *t static int sofia_dialog_probe_callback(void *pArg, int argc, char **argv, char **columnNames); static int sofia_dialog_probe_notify_callback(void *pArg, int argc, char **argv, char **columnNames); +struct pres_sql_cb { + sofia_profile_t *profile; + int ttl; +}; + +static int sofia_presence_send_sql(void *pArg, int argc, char **argv, char **columnNames); + struct dialog_helper { char state[128]; char status[512]; @@ -627,7 +634,7 @@ static void do_normal_probe(switch_event_t *event) if (probe_euser && probe_host && (profile = sofia_glue_find_profile(probe_host))) { sql = switch_mprintf("select state,status,rpid,presence_id from sip_dialogs " - "where hostname='%q' and profile_name='%q' and " + "where hostname='%q' and profile_name='%q' and call_info_state != 'seized' and " "((sip_from_user='%q' and sip_from_host='%q') or presence_id='%q@%q') order by rcd desc", mod_sofia_globals.hostname, profile->name, probe_euser, probe_host, probe_euser, probe_host); @@ -701,7 +708,7 @@ static void do_normal_probe(switch_event_t *event) "from sip_dialogs " - "where hostname='%q' and profile_name='%q' and (presence_id='%q@%q' or " + "where call_info_state != 'seized' and hostname='%q' and profile_name='%q' and (presence_id='%q@%q' or " "(sip_from_user='%q' and (sip_from_host='%q' or sip_to_host='%q')))", mod_sofia_globals.hostname, profile->name, dh.status, dh.rpid, probe_euser, probe_host, probe_euser, probe_host, probe_host); @@ -1938,15 +1945,13 @@ static void _send_presence_notify(sofia_profile_t *profile, } } - - if (exptime <= 0) { switch_snprintf(sstr, sizeof(sstr), "terminated;reason=noresource"); } else { switch_snprintf(sstr, sizeof(sstr), "active;expires=%u", (unsigned) exptime); } - if (mod_sofia_globals.debug_presence > 1) { + if (mod_sofia_globals.debug_presence > 1 || mod_sofia_globals.debug_sla > 1) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "SEND PRES NOTIFY:\n" "file[%s]\nfunc[%s]\nline[%d]\n" "profile[%s]\nvia[%s]\nip[%s]\nport[%s]\nroute[%s]\ncontact[%s]\nto[%s]\nfrom[%s]\nurl[%s]\ncall_id[%s]\nexpires_str[%s]\n" @@ -2007,7 +2012,6 @@ static void _send_presence_notify(sofia_profile_t *profile, TAG_END()); - switch_safe_free(route_uri); switch_safe_free(dcs); switch_safe_free(contact); @@ -3018,6 +3022,85 @@ static int sync_sla(sofia_profile_t *profile, const char *to_user, const char *t char *sql; int total = 0; + + if (clear) { + struct pres_sql_cb cb = {profile, 0}; + + + if (call_id) { + + sql = switch_mprintf("update sip_subscriptions set version=version+1,expires=%ld where " + "call_id='%q' " + "and event='line-seize'", (long) switch_epoch_time_now(NULL), + call_id); + + sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE); + + if (mod_sofia_globals.debug_sla > 1) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "CLEAR SQL %s\n", sql); + } + switch_safe_free(sql); + + sql = switch_mprintf("select full_to, full_from, contact, -1, call_id, event, network_ip, network_port, " + "NULL as ct, NULL as pt " + " from sip_subscriptions where call_id='%q' " + + "and event='line-seize'", call_id); + + sofia_glue_execute_sql_callback(profile, profile->ireg_mutex, sql, sofia_presence_send_sql, &cb); + if (mod_sofia_globals.debug_sla > 1) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "CLEAR SQL %s\n", sql); + } + switch_safe_free(sql); + } else { + + sql = switch_mprintf("update sip_subscriptions set version=version+1,expires=%ld where " + "hostname='%q' and profile_name='%q' " + "and sub_to_user='%q' and sub_to_host='%q' " + + "and event='line-seize'", (long) switch_epoch_time_now(NULL), + mod_sofia_globals.hostname, profile->name, to_user, to_host + ); + + if (mod_sofia_globals.debug_sla > 1) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "CLEAR SQL %s\n", sql); + } + + sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE); + + + sql = switch_mprintf("select full_to, full_from, contact, -1, call_id, event, network_ip, network_port, " + "NULL as ct, NULL as pt " + " from sip_subscriptions where " + "hostname='%q' and profile_name='%q' " + "and sub_to_user='%q' and sub_to_host='%q' " + "and event='line-seized'", + mod_sofia_globals.hostname, profile->name, to_user, to_host + ); + + sofia_glue_execute_sql_callback(profile, profile->ireg_mutex, sql, sofia_presence_send_sql, &cb); + + if (mod_sofia_globals.debug_sla > 1) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "CLEAR SQL %s\n", sql); + } + + switch_safe_free(sql); + } + + + sql = switch_mprintf("delete from sip_dialogs where hostname='%q' and profile_name='%q' and " + "((sip_from_user='%q' and sip_from_host='%q') or presence_id='%q@%q') " + "and call_info_state='seized'", mod_sofia_globals.hostname, profile->name, to_user, to_host, to_user, to_host); + + + if (mod_sofia_globals.debug_sla > 1) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "CLEAR SQL %s\n", sql); + } + sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE); + switch_safe_free(sql); + } + + switch_core_new_memory_pool(&pool); sh = switch_core_alloc(pool, sizeof(*sh)); sh->pool = pool; @@ -3041,12 +3124,13 @@ static int sync_sla(sofia_profile_t *profile, const char *to_user, const char *t if (unseize) { sql = switch_mprintf("select call_id,expires,sub_to_user,sub_to_host,event,full_to,full_from,contact,expires,network_ip,network_port " - "from sip_subscriptions where call_id='%q' and hostname='%q' and profile_name='%q')", + "from sip_subscriptions where call_id='%q' and hostname='%q' and profile_name='%q' " + "and (event='call-info' or event='line-seize')", call_id, mod_sofia_globals.hostname, profile->name); } else { sql = switch_mprintf("select call_id,expires,sub_to_user,sub_to_host,event,full_to,full_from,contact,expires,network_ip,network_port " - "from sip_subscriptions where call_id='%q' and hostname='%q' and profile_name='%q'", + "from sip_subscriptions where call_id='%q' and hostname='%q' and profile_name='%q' and event='call-info'", call_id, mod_sofia_globals.hostname, profile->name); } @@ -3082,17 +3166,7 @@ static int sync_sla(sofia_profile_t *profile, const char *to_user, const char *t - if (clear) { - sql = switch_mprintf("delete from sip_dialogs where hostname='%q' and profile_name='%q' and " - "((sip_from_user='%q' and sip_from_host='%q') or presence_id='%q@%q') " - "and call_info_state='seized'", mod_sofia_globals.hostname, profile->name, to_user, to_host, to_user, to_host); - - - if (mod_sofia_globals.debug_sla > 1) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "CLEAR SQL %s\n", sql); - } - sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE); - } + return total; @@ -3452,6 +3526,7 @@ void sofia_presence_handle_sip_i_subscribe(int status, SIPTAG_SUBSCRIPTION_STATE_STR(sstr), SIPTAG_EVENT_STR("line-seize"), TAG_IF(full_call_info, SIPTAG_CALL_INFO_STR(full_call_info)), TAG_END()); + sql = switch_mprintf("delete from sip_dialogs where hostname='%q' and profile_name='%q' and " @@ -3687,10 +3762,6 @@ void sofia_presence_handle_sip_r_subscribe(int status, } } -struct pres_sql_cb { - sofia_profile_t *profile; - int ttl; -}; static int sofia_presence_send_sql(void *pArg, int argc, char **argv, char **columnNames) { From 063acdbd2492bac0f004222105798fea8553d28a Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Fri, 2 Mar 2012 17:58:05 -0500 Subject: [PATCH 139/292] remove some debug --- src/mod/endpoints/mod_sofia/sofia.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 1ebddbc87d..9d4fce66db 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -8027,7 +8027,6 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_ if ((call_info = sip_call_info(sip))) { call_info_str = sip_header_as_string(nh->nh_home, (void *) call_info); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "WTF %s\n", call_info_str); if (sofia_test_pflag(profile, PFLAG_MANAGE_SHARED_APPEARANCE) && switch_stristr("appearance", call_info_str)) { char *p; @@ -8080,10 +8079,6 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_ switch_channel_set_variable(channel, "presence_call_info", buf); call_info_str = switch_core_session_sprintf(session, ";%s", sip->sip_from->a_url->url_host, buf); } - } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "WTF FAIL IF\n"); - - } } From d827cfecb45a4d7f8c5f8e04c32089bd3c4a492b Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Sun, 4 Mar 2012 17:48:30 -0600 Subject: [PATCH 140/292] corrected managedEsl sample --- libs/esl/managed/ManagedEslTest/Program.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/esl/managed/ManagedEslTest/Program.cs b/libs/esl/managed/ManagedEslTest/Program.cs index f19c19ceeb..cbede4d028 100644 --- a/libs/esl/managed/ManagedEslTest/Program.cs +++ b/libs/esl/managed/ManagedEslTest/Program.cs @@ -166,7 +166,7 @@ namespace ManagedEslTest ESLconnection eslConnection = new ESLconnection(sckClient.Handle.ToInt32()); ESLevent eslEvent = eslConnection.GetInfo(); - string strUuid = eslEvent.GetHeader("UNIQUE-ID", 0); + string strUuid = eslEvent.GetHeader("UNIQUE-ID", -1); eslConnection.SendRecv("myevents"); eslConnection.SendRecv("divert_events on"); From fe129b4d3035204fcb2617bc84d5932971a17fd8 Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Tue, 6 Mar 2012 13:38:42 -0600 Subject: [PATCH 141/292] FS-3972 --resolve --- .gitignore | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 073d91beae..35f80b285b 100644 --- a/.gitignore +++ b/.gitignore @@ -171,5 +171,30 @@ Freeswitch.2010.sdf src/mod/codecs/mod_celt/*/*/mod_celt.log src/mod/endpoints/mod_skinny/*/*/mod_skinny_2010.log src/mod/formats/mod_shout/*/*/mod_shout.log - -/w32/Setup/obj \ No newline at end of file + +/w32/Setup/obj +/src/mod/asr_tts/mod_pocketsphinx/x64/Debug/mod_pocketsphinx_manifest.rc +/src/mod/endpoints/mod_h323/x64/Debug/mod_h323_manifest.rc +/src/mod/endpoints/mod_rtmp/Win32/Debug/mod_rtmp_2010.log +/src/mod/endpoints/mod_rtmp/Win32/Release/mod_rtmp_2010.log +/src/mod/endpoints/mod_rtmp/x64/Debug/mod_rtmp_2010.log +/src/mod/endpoints/mod_rtmp/x64/Debug/mod_rtmp_manifest.rc +/src/mod/endpoints/mod_rtmp/x64/Release/mod_rtmp_2010.log +/src/mod/endpoints/mod_skinny/x64/Debug/mod_skinny_manifest.rc +/src/mod/languages/mod_managed/x64/Debug_CLR/FREESWITCH.MANAGED.DLL.metagen +/src/mod/languages/mod_managed/x64/Debug_CLR/RSAENH.DLL.bi +/src/mod/languages/mod_managed/x64/Debug_CLR/TZRES.DLL.bi +/w32/Library/x64/Debug/FreeSwitch_manifest.rc +/src/mod/endpoints/mod_h323/Win32/Debug/mod_h323_manifest.rc +/src/mod/endpoints/mod_rtmp/Win32/Debug/mod_rtmp_manifest.rc +/src/mod/endpoints/mod_skinny/Win32/Debug/mod_skinny_manifest.rc +/src/mod/languages/mod_managed/Win32/Debug_CLR/FREESWITCH.MANAGED.DLL.metagen +/src/mod/languages/mod_managed/Win32/Debug_CLR/RSAENH.DLL.bi +/src/mod/languages/mod_managed/Win32/Debug_CLR/TZRES.DLL.bi +/w32/Library/Win32/Debug/FreeSwitch_manifest.rc +/src/mod/languages/mod_managed/Win32/Release_CLR/FREESWITCH.MANAGED.DLL.metagen +/src/mod/languages/mod_managed/Win32/Release_CLR/RSAENH.DLL.bi +/src/mod/languages/mod_managed/Win32/Release_CLR/TZRES.DLL.bi +/src/mod/languages/mod_managed/x64/Release_CLR/FREESWITCH.MANAGED.DLL.metagen +/src/mod/languages/mod_managed/x64/Release_CLR/RSAENH.DLL.bi +/src/mod/languages/mod_managed/x64/Release_CLR/TZRES.DLL.bi \ No newline at end of file From d26dbeef0a840a81183abf2d50ee7356fd58f663 Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Tue, 6 Mar 2012 13:41:40 -0600 Subject: [PATCH 142/292] FS-3974 --resolve --- Freeswitch.2010.sln | 4 +- .../mod_skypopen/mod_skypopen.2010.vcxproj | 52 +++++++++++++++++++ .../mod_skypopen/skypopen_protocol.c | 4 +- 3 files changed, 56 insertions(+), 4 deletions(-) diff --git a/Freeswitch.2010.sln b/Freeswitch.2010.sln index 3470f69d55..480c9d4f2f 100644 --- a/Freeswitch.2010.sln +++ b/Freeswitch.2010.sln @@ -2917,11 +2917,11 @@ Global {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.All|x86 Setup.ActiveCfg = Release|Win32 {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.All|x86 Setup.Build.0 = Release|Win32 {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|Win32.ActiveCfg = Debug|Win32 - {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|x64.ActiveCfg = Debug|Win32 + {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|x64.ActiveCfg = Debug|x64 {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|x64 Setup.ActiveCfg = Debug|Win32 {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|x86 Setup.ActiveCfg = Debug|Win32 {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Release|Win32.ActiveCfg = Release|Win32 - {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Release|x64.ActiveCfg = Release|Win32 + {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Release|x64.ActiveCfg = Release|x64 {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Release|x64 Setup.ActiveCfg = Release|Win32 {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Release|x86 Setup.ActiveCfg = Release|Win32 {1F0A8A77-E661-418F-BB92-82172AE43803}.All|Win32.ActiveCfg = Release|Win32 diff --git a/src/mod/endpoints/mod_skypopen/mod_skypopen.2010.vcxproj b/src/mod/endpoints/mod_skypopen/mod_skypopen.2010.vcxproj index 126494830e..a09125af9a 100644 --- a/src/mod/endpoints/mod_skypopen/mod_skypopen.2010.vcxproj +++ b/src/mod/endpoints/mod_skypopen/mod_skypopen.2010.vcxproj @@ -5,10 +5,18 @@ Debug Win32 + + Debug + x64 + Release Win32 + + Release + x64 + mod_skypopen @@ -21,10 +29,18 @@ DynamicLibrary MultiByte + + DynamicLibrary + MultiByte + DynamicLibrary MultiByte + + DynamicLibrary + MultiByte + @@ -32,10 +48,18 @@ + + + + + + + + <_ProjectFileVersion>10.0.30319.1 @@ -55,6 +79,21 @@ + + + %(RootDir)%(Directory)..\..\..\..\libs\spandsp\src\msvc;%(RootDir)%(Directory)..\..\..\..\libs\spandsp\src;%(RootDir)%(Directory)..\..\..\..\libs\tiff-3.8.2\libtiff;%(AdditionalIncludeDirectories) + + + Level4 + false + + + rpcrt4.lib "..\..\..\..\libs\spandsp\src\x64\Debug\libtiff.lib" "..\..\..\..\x64\Debug\libspandsp.lib" %(AdditionalOptions) + false + + + + %(RootDir)%(Directory)..\..\..\..\libs\spandsp\src\msvc;%(RootDir)%(Directory)..\..\..\..\libs\spandsp\src;%(RootDir)%(Directory)..\..\..\..\libs\tiff-3.8.2\libtiff;%(AdditionalIncludeDirectories) @@ -68,6 +107,19 @@ + + + %(RootDir)%(Directory)..\..\..\..\libs\spandsp\src\msvc;%(RootDir)%(Directory)..\..\..\..\libs\spandsp\src;%(RootDir)%(Directory)..\..\..\..\libs\tiff-3.8.2\libtiff;%(AdditionalIncludeDirectories) + + + + + rpcrt4.lib "..\..\..\..\libs\spandsp\src\x64\Release\libtiff.lib" "..\..\..\..\x64\Release\libspandsp.lib" %(AdditionalOptions) + false + + + + diff --git a/src/mod/endpoints/mod_skypopen/skypopen_protocol.c b/src/mod/endpoints/mod_skypopen/skypopen_protocol.c index a308e2e551..95746411e9 100644 --- a/src/mod/endpoints/mod_skypopen/skypopen_protocol.c +++ b/src/mod/endpoints/mod_skypopen/skypopen_protocol.c @@ -1329,7 +1329,7 @@ LRESULT APIENTRY skypopen_present(HWND hWindow, UINT uiMessage, WPARAM uiParam, lReturnCode = 0; fIssueDefProc = 0; - tech_pvt = (private_t *) GetWindowLong(hWindow, GWL_USERDATA); + tech_pvt = (private_t *) GetWindowLong(hWindow, GWLP_USERDATA); if (!running) { DEBUGA_SKYPE("let's DIE!\n", SKYPOPEN_P_LOG); @@ -1340,7 +1340,7 @@ LRESULT APIENTRY skypopen_present(HWND hWindow, UINT uiMessage, WPARAM uiParam, switch (uiMessage) { case WM_CREATE: tech_pvt = (private_t *) ((LPCREATESTRUCT) ulParam)->lpCreateParams; - SetWindowLong(hWindow, GWL_USERDATA, (LONG) tech_pvt); + SetWindowLong(hWindow, GWLP_USERDATA, (LONG) tech_pvt); DEBUGA_SKYPE("got CREATE\n", SKYPOPEN_P_LOG); break; case WM_DESTROY: From d615ae55fc9b5d8af2e25d443b96d876083e1c76 Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Tue, 6 Mar 2012 13:43:00 -0600 Subject: [PATCH 143/292] FS-3975 --resolve --- .../endpoints/mod_h323/mod_h323.2010.vcxproj | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/mod/endpoints/mod_h323/mod_h323.2010.vcxproj b/src/mod/endpoints/mod_h323/mod_h323.2010.vcxproj index cb33edf477..ff9730673b 100644 --- a/src/mod/endpoints/mod_h323/mod_h323.2010.vcxproj +++ b/src/mod/endpoints/mod_h323/mod_h323.2010.vcxproj @@ -68,7 +68,7 @@ - %(AdditionalIncludeDirectories) + ..\..\..\..\..\ptlib\include;..\..\..\..\..\h323plus\include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;ALLOW_SMP_DANGERS;%(PreprocessorDefinitions) @@ -77,7 +77,7 @@ /NODEFAULTLIB:LIMBCTD %(AdditionalOptions) h323plusd.lib;ptlibsd.lib;%(AdditionalDependencies) - %(AdditionalLibraryDirectories) + ..\..\..\..\..\ptlib\lib;..\..\..\..\..\h323plus\lib;%(AdditionalLibraryDirectories) false @@ -85,7 +85,7 @@ - %(AdditionalIncludeDirectories) + ..\..\..\..\..\ptlib\include;..\..\..\..\..\h323plus\include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;ALLOW_SMP_DANGERS;%(PreprocessorDefinitions) @@ -94,7 +94,7 @@ /NODEFAULTLIB:LIMBCTD %(AdditionalOptions) h323plusd.lib;ptlibsd.lib;%(AdditionalDependencies) - %(AdditionalLibraryDirectories) + ..\..\..\..\..\ptlib\lib\x64;..\..\..\..\..\h323plus\lib\x64;%(AdditionalLibraryDirectories) false @@ -102,7 +102,7 @@ - %(AdditionalIncludeDirectories) + ..\..\..\..\..\ptlib\include;..\..\..\..\..\h323plus\include;%(AdditionalIncludeDirectories) WIN32;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions) @@ -110,7 +110,7 @@ h323plus.lib;ptlibs.lib;%(AdditionalDependencies) - %(AdditionalLibraryDirectories) + ..\..\..\..\..\ptlib\lib;..\..\..\..\..\h323plus\lib;%(AdditionalLibraryDirectories) false false @@ -119,7 +119,7 @@ - %(AdditionalIncludeDirectories) + ..\..\..\..\..\ptlib\include;..\..\..\..\..\h323plus\include;%(AdditionalIncludeDirectories) WIN32;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions) @@ -127,11 +127,12 @@ h323plus.lib;ptlibs.lib;%(AdditionalDependencies) - %(AdditionalLibraryDirectories) + ..\..\..\..\..\ptlib\lib\x64;..\..\..\..\..\h323plus\lib\x64;%(AdditionalLibraryDirectories) false false + false From 37d6c8556cddc6dee2f2e8d09cc8a8ca5dbec0d7 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 6 Mar 2012 22:38:44 +0000 Subject: [PATCH 144/292] add zrtp_proxy_media.lua script to intelligently enable proxy_media mode The logic in this script enables ZRTP sessions to negotiate end-to-end security associations, which is desirable whether or not the switch natively supports ZRTP itself. See the documentation in the header of the script for instructions on enabling this behavior. --- scripts/lua/zrtp_proxy_media.lua | 87 ++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 scripts/lua/zrtp_proxy_media.lua diff --git a/scripts/lua/zrtp_proxy_media.lua b/scripts/lua/zrtp_proxy_media.lua new file mode 100644 index 0000000000..1af3893f30 --- /dev/null +++ b/scripts/lua/zrtp_proxy_media.lua @@ -0,0 +1,87 @@ +-- Copyright (c) 2011-2012, Travis Cross. +-- +-- The contents of this file are subject to the Mozilla Public License +-- Version 1.1 (the "License"); you may not use this file except in +-- compliance with the License. You may obtain a copy of the License +-- at http://www.mozilla.org/MPL/ +-- +-- Software distributed under the License is distributed on an "AS IS" +-- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +-- the License for the specific language governing rights and +-- limitations under the License. +-- +-- zrtp_proxy_media.lua +-- +-- The logic in this script enables ZRTP sessions to negotiate +-- end-to-end security associations, which is desirable whether or not +-- the switch natively supports ZRTP itself. +-- +-- To enable this logic, call the script from the top of your dialplan +-- as so: +-- +-- +-- +-- +-- +-- +-- +-- If any particular call flow should never have proxy_media enabled, +-- such as for connecting to voicemail systems or conferences, make +-- sure this is called before the bridge: +-- +-- + +api=freeswitch.API() + +function sappend(s1,s2) if s1 and #s1>0 then return s1..s2 else return s2 end end +function log(level,msg) return freeswitch.consoleLog(level,msg.."\n") end +function ready() return session:ready() end +function getvar(var) return session:getVariable(var) end +function getvarp(var) return getvar(var)=="true" end +function setvar_a(k,v) return session:setVariable(k,v) end +function append_var(k,v) return setvar_a(k,sappend(getvar(k),v)) end +function export(k) return append_var("export_vars",","..k) end +function setvar_ab(k,v) if v then setvar_a(k,v) end return export(k) end +function setvar_b(k,v) return setvar_ab("nolocal:"..k,v) end + +function enable_zd(msg) + log("info",msg) + setvar_ab("zrtp_set","true") + setvar_ab("proxy_media","true") + setvar_ab("zrtp_secure_media","false") +end + +function disable_zd(msg) + log("info",msg) + setvar_ab("zrtp_set","true") + setvar_ab("proxy_media","false") + setvar_ab("zrtp_secure_media","true") +end + +function xfer(x) + return session:transfer(x,getvar("dialplan"),getvar("context")) +end + +function main() + if ready() then + session:setAutoHangup(false) + local dst=getvar("destination_number") + if argv[1]=="disable" then + return disable_zd("zrtp-direct disabled on this call flow") + elseif getvarp("zrtp_set") then + return log("notice","zrtp already decided; doing nothing") end + local x=dst:match("^%*%*%*(.*)$") + if x then + enable_zd("going zrtp-direct based on star code") + return xfer(x) end + local x=dst:match("^%*%*(.*)$") + if x then + disable_zd("going zrtp-indirect based on star code") + return xfer(x) end + if getvar("switch_r_sdp"):match("a=zrtp%-hash:") then + return enable_zd("going zrtp-direct based on a=zrtp-hash") end + return disable_zd("not going zrtp-direct") + end +end + +main() From 8f8af383654dcb3caf7cb483c073e63d8e2a3a7d Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 7 Mar 2012 13:05:27 -0600 Subject: [PATCH 145/292] FS-3983 try this --- src/mod/endpoints/mod_sofia/sofia_presence.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 1dfa7188cd..6e1d895074 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -2499,7 +2499,9 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * } - if (!zstr(uuid)) { + if (zstr(uuid)) { + stream.write_function(&stream, "terminated\n"); + } else { if (!zstr(answer_state)) { astate = answer_state; } From a6f7ad07ea49893ab4aebb87439e8d552161bb9c Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 7 Mar 2012 20:25:55 +0000 Subject: [PATCH 146/292] bump version of callie sounds --- build/sounds_version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/sounds_version.txt b/build/sounds_version.txt index 056ebde66c..0214d1555f 100644 --- a/build/sounds_version.txt +++ b/build/sounds_version.txt @@ -1,3 +1,3 @@ -en-us-callie 1.0.16 +en-us-callie 1.0.18 ru-RU-elena 1.0.13 From f558247d7dccc4f1d177bc81ead3efc24ebe74e0 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 7 Mar 2012 15:40:55 -0600 Subject: [PATCH 147/292] add user_via to ack in case with track calls --- src/mod/endpoints/mod_sofia/sofia.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 9d4fce66db..2cab2095e7 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -5696,11 +5696,13 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, const char *invite_route_uri = switch_channel_get_variable(tech_pvt->channel, "sip_invite_route_uri"); nua_ack(nh, - TAG_IF(invite_full_from, SIPTAG_FROM_STR(invite_full_from)), - TAG_IF(invite_full_to, SIPTAG_TO_STR(invite_full_to)), - TAG_IF(!zstr(invite_full_via), SIPTAG_VIA_STR(invite_full_via)), - TAG_IF(!zstr(invite_route_uri), SIPTAG_ROUTE_STR(invite_route_uri)), - TAG_END()); + TAG_IF(invite_full_from, SIPTAG_FROM_STR(invite_full_from)), + TAG_IF(invite_full_to, SIPTAG_TO_STR(invite_full_to)), + TAG_IF(!zstr(tech_pvt->user_via), SIPTAG_VIA_STR(tech_pvt->user_via)), + TAG_IF((zstr(tech_pvt->user_via) && !zstr(invite_full_via)), SIPTAG_VIA_STR(invite_full_via)), + + TAG_IF(!zstr(invite_route_uri), SIPTAG_ROUTE_STR(invite_route_uri)), + TAG_END()); } else { nua_ack(nh, From ca60afaa1900abdeeb3a105de6cd53f098a3dd01 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 7 Mar 2012 22:58:35 +0000 Subject: [PATCH 148/292] add cdr_csv template for OpenCDRRate --- conf/autoload_configs/cdr_csv.conf.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/conf/autoload_configs/cdr_csv.conf.xml b/conf/autoload_configs/cdr_csv.conf.xml index bcefd460b4..4026e2f2a1 100644 --- a/conf/autoload_configs/cdr_csv.conf.xml +++ b/conf/autoload_configs/cdr_csv.conf.xml @@ -17,6 +17,7 @@ + From 9ac53ff859952747f27d12f6a5d80c2e94cdc505 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 7 Mar 2012 23:11:05 +0000 Subject: [PATCH 149/292] use signal_bond rather than bleg_uuid --- conf/autoload_configs/cdr_csv.conf.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/autoload_configs/cdr_csv.conf.xml b/conf/autoload_configs/cdr_csv.conf.xml index 4026e2f2a1..8d796c68f0 100644 --- a/conf/autoload_configs/cdr_csv.conf.xml +++ b/conf/autoload_configs/cdr_csv.conf.xml @@ -17,7 +17,7 @@ - + From f2c5c92dfadff5d1b367ff524c94a3f5bc8a6966 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 8 Mar 2012 10:18:28 -0600 Subject: [PATCH 150/292] FS-3986 --resolve regression from 8f8af383654dcb3caf7cb483c073e63d8e2a3a7d --- src/mod/endpoints/mod_sofia/sofia_presence.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 6e1d895074..d6c06b6aaf 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -2500,7 +2500,9 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * } if (zstr(uuid)) { - stream.write_function(&stream, "terminated\n"); + if (stream.write_function) { + stream.write_function(&stream, "terminated\n"); + } } else { if (!zstr(answer_state)) { astate = answer_state; From b1281985d5f21531946dc9e9f919a645a42a1c22 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 8 Mar 2012 15:27:51 -0600 Subject: [PATCH 151/292] FS-3983 revert --- src/mod/endpoints/mod_sofia/sofia_presence.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index d6c06b6aaf..1dfa7188cd 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -2499,11 +2499,7 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * } - if (zstr(uuid)) { - if (stream.write_function) { - stream.write_function(&stream, "terminated\n"); - } - } else { + if (!zstr(uuid)) { if (!zstr(answer_state)) { astate = answer_state; } From f38c287a4bded82548bb5f25d28cd7e62dee5fe0 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 9 Mar 2012 11:28:29 -0600 Subject: [PATCH 152/292] FS-3961 --resolve --- src/mod/languages/mod_lua/freeswitch_lua.cpp | 13 +++++++------ src/switch_core_sqldb.c | 13 +++++++++++-- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/mod/languages/mod_lua/freeswitch_lua.cpp b/src/mod/languages/mod_lua/freeswitch_lua.cpp index 4af4e380e7..96897a24c9 100644 --- a/src/mod/languages/mod_lua/freeswitch_lua.cpp +++ b/src/mod/languages/mod_lua/freeswitch_lua.cpp @@ -385,6 +385,7 @@ bool Dbh::test_reactive(char *test_sql, char *drop_sql, char *reactive_sql) int Dbh::query_callback(void *pArg, int argc, char **argv, char **cargv) { SWIGLUA_FN *lua_fun = (SWIGLUA_FN *)pArg; + int ret = 0; lua_pushvalue(lua_fun->L, lua_fun->idx); /* get the lua callback function onto the stack */ @@ -396,13 +397,13 @@ int Dbh::query_callback(void *pArg, int argc, char **argv, char **cargv) lua_settable(lua_fun->L, -3); } - docall(lua_fun->L, 1, 1, 1); /* 1 in, 1 out */ + docall(lua_fun->L, 1, 0, 1); + ret = lua_tonumber(lua_fun->L, -1); + lua_pop(lua_fun->L, 1); - if (lua_isnumber(lua_fun->L, -1)) { - if (lua_tonumber(lua_fun->L, -1) != 0) { - return 1; - } - } + if (ret != 0) { + return 1; + } return 0; /* 0 to continue with next row */ } diff --git a/src/switch_core_sqldb.c b/src/switch_core_sqldb.c index 172cf6572b..0082b7b4ef 100644 --- a/src/switch_core_sqldb.c +++ b/src/switch_core_sqldb.c @@ -466,7 +466,12 @@ static switch_status_t switch_cache_db_execute_sql_real(switch_cache_db_handle_t break; case SCDB_TYPE_CORE_DB: { - status = switch_core_db_exec(dbh->native_handle.core_db_dbh, sql, NULL, NULL, &errmsg); + int ret = switch_core_db_exec(dbh->native_handle.core_db_dbh, sql, NULL, NULL, &errmsg); + + if (ret == SWITCH_CORE_DB_OK) { + status = SWITCH_STATUS_SUCCESS; + } + if (errmsg) { switch_strdup(tmp, errmsg); switch_core_db_free(errmsg); @@ -832,7 +837,11 @@ SWITCH_DECLARE(switch_status_t) switch_cache_db_execute_sql_callback(switch_cach break; case SCDB_TYPE_CORE_DB: { - status = switch_core_db_exec(dbh->native_handle.core_db_dbh, sql, callback, pdata, &errmsg); + int ret = switch_core_db_exec(dbh->native_handle.core_db_dbh, sql, callback, pdata, &errmsg); + + if (ret == SWITCH_CORE_DB_OK || ret == SWITCH_CORE_DB_ABORT) { + status = SWITCH_STATUS_SUCCESS; + } if (errmsg) { dbh->last_used = switch_epoch_time_now(NULL) - (SQL_CACHE_TIMEOUT * 2); From e31a35a7be3d7d56b0fd676ad7d19199a2a2160c Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 9 Mar 2012 11:43:37 -0600 Subject: [PATCH 153/292] FS-3973 --resolve we can go with this for now and ponder the other problem for later --- src/mod/endpoints/mod_sofia/mod_sofia.c | 2 +- src/switch_core_session.c | 2 ++ src/switch_ivr_originate.c | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index 72cbccf544..3cac1a0fc2 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -2034,7 +2034,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi const char *uuid; const char *call_id = NULL, *to_user = NULL, *to_host = NULL, *to_tag = NULL, *from_tag = NULL, *from_user = NULL, *from_host = NULL; - if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE))) { + if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) || (uuid = switch_channel_get_variable(channel, "originate_signal_bond"))) { switch_core_session_t *rsession; if ((rsession = switch_core_session_locate(uuid))) { switch_channel_t *rchannel = switch_core_session_get_channel(rsession); diff --git a/src/switch_core_session.c b/src/switch_core_session.c index aaf986b1c8..f0941297b2 100644 --- a/src/switch_core_session.c +++ b/src/switch_core_session.c @@ -543,6 +543,8 @@ SWITCH_DECLARE(switch_call_cause_t) switch_core_session_outgoing_channel(switch_ switch_channel_set_variable(peer_channel, SWITCH_ORIGINATOR_VARIABLE, switch_core_session_get_uuid(session)); switch_channel_set_variable(peer_channel, SWITCH_SIGNAL_BOND_VARIABLE, switch_core_session_get_uuid(session)); + // Needed by 3PCC proxy so that aleg can find bleg to pass SDP to, when final ACK arrives. + switch_channel_set_variable(channel, "originate_signal_bond", switch_core_session_get_uuid(*new_session)); if ((val = switch_channel_get_variable(channel, SWITCH_PROCESS_CDR_VARIABLE))) { switch_channel_set_variable(peer_channel, SWITCH_PROCESS_CDR_VARIABLE, val); diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c index 6546656303..6f5752641a 100644 --- a/src/switch_ivr_originate.c +++ b/src/switch_ivr_originate.c @@ -3518,6 +3518,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess } switch_channel_set_variable(caller_channel, SWITCH_SIGNAL_BOND_VARIABLE, switch_core_session_get_uuid(*bleg)); + // Now main SWITCH_SIGNAL_BOND_VARIABLE is populated, don't need this one anymore... + switch_channel_set_variable(caller_channel, "originate_signal_bond", NULL); } From 8331f4a0b5c6015a2ec336246f2165dd9590ee8c Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 9 Mar 2012 12:54:57 -0600 Subject: [PATCH 154/292] FS-3980 --resolve --- src/mod/codecs/mod_speex/mod_speex.c | 129 ++++++++++++++++++++++++++- src/switch_core_io.c | 2 + 2 files changed, 129 insertions(+), 2 deletions(-) diff --git a/src/mod/codecs/mod_speex/mod_speex.c b/src/mod/codecs/mod_speex/mod_speex.c index 6e21939d33..aaec0a6602 100644 --- a/src/mod/codecs/mod_speex/mod_speex.c +++ b/src/mod/codecs/mod_speex/mod_speex.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * @@ -24,6 +24,7 @@ * Contributor(s): * * Anthony Minessale II + * Chris Rienzo * * * mod_speex.c -- Speex Codec Module @@ -279,10 +280,11 @@ static switch_status_t switch_speex_encode(switch_codec_t *codec, if (is_speech) { switch_clear_flag(context, SWITCH_CODEC_FLAG_SILENCE); *flag |= SWITCH_CODEC_FLAG_SILENCE_STOP; + *flag &= ~SFF_CNG; } else { if (switch_test_flag(context, SWITCH_CODEC_FLAG_SILENCE)) { *encoded_data_len = 0; - *flag |= SWITCH_CODEC_FLAG_SILENCE; + *flag |= SWITCH_CODEC_FLAG_SILENCE | SFF_CNG; return SWITCH_STATUS_SUCCESS; } @@ -353,6 +355,126 @@ static switch_status_t switch_speex_destroy(switch_codec_t *codec) return SWITCH_STATUS_SUCCESS; } +/** + * read default settings from speex.conf + */ +static void load_configuration() +{ + switch_xml_t xml = NULL, cfg = NULL; + + if ((xml = switch_xml_open_cfg("speex.conf", &cfg, NULL))) { + switch_xml_t x_lists; + if ((x_lists = switch_xml_child(cfg, "settings"))) { + const char *settings_name = switch_xml_attr(x_lists, "name"); + switch_xml_t x_list; + if (zstr(settings_name)) { + settings_name = ""; + } + for (x_list = switch_xml_child(x_lists, "param"); x_list; x_list = x_list->next) { + const char *name = switch_xml_attr(x_list, "name"); + const char *value = switch_xml_attr(x_list, "value"); + if (zstr(name)) { + continue; + } + + if (zstr(value)) { + continue; + } + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s %s = %s\n", settings_name, name, value); + + if (!strcasecmp("quality", name)) { + /* compression quality, integer 0-10 */ + int tmp = atoi(value); + if (switch_is_number(value) && tmp >= 0 && tmp <= 10) { + default_codec_settings.quality = tmp; + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "ignoring invalid quality value: %s\n", value); + } + } else if (!strcasecmp("complexity", name)) { + /* compression complexity, integer 1-10 */ + int tmp = atoi(value); + if (switch_is_number(value) && tmp >= 1 && tmp <= 10) { + default_codec_settings.complexity = tmp; + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "ignoring invalid complexity value: %s\n", value); + } + } else if (!strcasecmp("enhancement", name)) { + /* enable perceptual enhancement, boolean */ + default_codec_settings.enhancement = switch_true(value); + } else if (!strcasecmp("vad", name)) { + /* enable voice activity detection, boolean */ + default_codec_settings.vad = switch_true(value); + } else if (!strcasecmp("vbr", name)) { + /* enable variable bit rate, boolean */ + default_codec_settings.vbr = switch_true(value); + } else if (!strcasecmp("vbr-quality", name)) { + /* variable bit rate quality, float 0-10 */ + float tmp = atof(value); + if (switch_is_number(value) && tmp >= 0 && tmp <= 10) { + default_codec_settings.vbr_quality = tmp; + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "ignoring invalid vbr-quality value: %s\n", value); + } + } else if (!strcasecmp("abr", name)) { + /* average bit rate, integer bits per sec */ + int tmp = atoi(value); + if (switch_is_number(value) && tmp >= 0) { + default_codec_settings.abr = tmp; + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "ignoring invalid abr value: %s\n", value); + } + } else if (!strcasecmp("dtx", name)) { + /* discontinuous transmit, boolean */ + default_codec_settings.dtx = switch_true(value); + } else if (!strcasecmp("preproc", name)) { + /* enable preprocessor, boolean */ + default_codec_settings.preproc = switch_true(value); + } else if (!strcasecmp("pp-vad", name)) { + /* enable preprocessor VAD, boolean */ + default_codec_settings.pp_vad = switch_true(value); + } else if (!strcasecmp("pp-agc", name)) { + /* enable preprocessor automatic gain control, boolean */ + default_codec_settings.pp_agc = switch_true(value); + } else if (!strcasecmp("pp-agc-level", name)) { + /* agc level, float */ + float tmp = atof(value); + if (switch_is_number(value) && tmp >= 0.0f) { + default_codec_settings.pp_agc_level = tmp; + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "ignoring invalid pp-agc-level value: %s\n", value); + } + } else if (!strcasecmp("pp-denoise", name)) { + /* enable preprocessor denoiser, boolean */ + default_codec_settings.pp_denoise = switch_true(value); + } else if (!strcasecmp("pp-dereverb", name)) { + /* enable preprocessor reverberation removal, boolean */ + default_codec_settings.pp_dereverb = switch_true(value); + } else if (!strcasecmp("pp-dereverb-decay", name)) { + /* reverberation removal decay, float */ + float tmp = atof(value); + if (switch_is_number(value) && tmp >= 0.0f) { + default_codec_settings.pp_dereverb_decay = tmp; + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "ignoring invalid pp-dereverb-decay value: %s\n", value); + } + } else if (!strcasecmp("pp-dereverb-level", name)) { + /* reverberation removal level, float */ + float tmp = atof(value); + if (switch_is_number(value) && tmp >= 0.0f) { + default_codec_settings.pp_dereverb_level = tmp; + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "ignoring invalid pp-dereverb-level value: %s\n", value); + } + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "ignoring invalid unknown param: %s = %s\n", name, value); + } + } + } + switch_xml_free(xml); + } +} + SWITCH_MODULE_LOAD_FUNCTION(mod_speex_load) { switch_codec_interface_t *codec_interface; @@ -361,6 +483,9 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_speex_load) int bps[4] = { 0, 24600, 42200, 44000 }; /* connect my internal structure to the blank pointer passed to me */ *module_interface = switch_loadable_module_create_module_interface(pool, modname); + + load_configuration(); + SWITCH_ADD_CODEC(codec_interface, "Speex"); codec_interface->parse_fmtp = switch_speex_fmtp_parse; for (counta = 1; counta <= 3; counta++) { diff --git a/src/switch_core_io.c b/src/switch_core_io.c index 3a1b433c46..8b147327a2 100644 --- a/src/switch_core_io.c +++ b/src/switch_core_io.c @@ -1059,6 +1059,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_write_frame(switch_core_sess session->enc_write_frame.m = frame->m; session->enc_write_frame.ssrc = frame->ssrc; session->enc_write_frame.seq = frame->seq; + session->enc_write_frame.flags = 0; write_frame = &session->enc_write_frame; break; case SWITCH_STATUS_NOOP: @@ -1173,6 +1174,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_write_frame(switch_core_sess session->enc_write_frame.m = frame->m; session->enc_write_frame.ssrc = frame->ssrc; session->enc_write_frame.payload = session->write_impl.ianacode; + session->enc_write_frame.flags = 0; write_frame = &session->enc_write_frame; break; case SWITCH_STATUS_NOOP: From 5e4a514531de2a1d8040c3d306a9e8de426de566 Mon Sep 17 00:00:00 2001 From: Marc Olivier Chouinard Date: Sat, 10 Mar 2012 22:56:29 -0500 Subject: [PATCH 155/292] mod_voicemail_ivr: Fix a segfault on non authenticated user and changed from 3 to 3000 the dtmf digit wait since it in milisecond --- conf/autoload_configs/voicemail_ivr.conf.xml | 2 +- src/mod/applications/mod_voicemail_ivr/config.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/conf/autoload_configs/voicemail_ivr.conf.xml b/conf/autoload_configs/voicemail_ivr.conf.xml index b25b4e485d..529509a495 100644 --- a/conf/autoload_configs/voicemail_ivr.conf.xml +++ b/conf/autoload_configs/voicemail_ivr.conf.xml @@ -3,7 +3,7 @@ - + diff --git a/src/mod/applications/mod_voicemail_ivr/config.c b/src/mod/applications/mod_voicemail_ivr/config.c index d666ebe07f..a664d85462 100644 --- a/src/mod/applications/mod_voicemail_ivr/config.c +++ b/src/mod/applications/mod_voicemail_ivr/config.c @@ -93,6 +93,11 @@ void menu_init(vmivr_profile_t *profile, vmivr_menu_t *menu) { } } } + + if (!menu->phrase_params) { + switch_event_create(&menu->phrase_params, SWITCH_EVENT_REQUEST_PARAMS); + } + end: if (xml) switch_xml_free(xml); From b0c6bd7101499f29235a7b1b465e95fac112cb6c Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 12 Mar 2012 13:49:33 -0500 Subject: [PATCH 156/292] FS-3739 please try this patch, its not so much of a bug as an unintended consequence of combining features but this may be the best of both worlds --- src/mod/endpoints/mod_sofia/sofia_glue.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index ad0f25300b..702dbbeaae 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -787,6 +787,11 @@ void sofia_glue_tech_prepare_codecs(private_object_t *tech_pvt) switch_assert(tech_pvt->session != NULL); if ((abs = switch_channel_get_variable(tech_pvt->channel, "absolute_codec_string"))) { + /* inherit_codec == true will implicitly clear the absolute_codec_string + variable if used since it was the reason it was set in the first place and is no longer needed */ + if (switch_true(switch_channel_get_variable(tech_pvt->channel, "inherit_codec"))) { + switch_channel_set_variable(tech_pvt->channel, "absolute_codec_string", NULL); + } codec_string = abs; goto ready; } From 72bb1969332010a361a277e9c6b1471930de3928 Mon Sep 17 00:00:00 2001 From: Michael S Collins Date: Mon, 12 Mar 2012 16:07:56 -0700 Subject: [PATCH 157/292] Docs: Update phrase_en.xml to reflect changes in FS Callie 1.0.18 sounds --- docs/phrase/phrase_en.xml | 40 +++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/docs/phrase/phrase_en.xml b/docs/phrase/phrase_en.xml index 5ef6baecd9..589a218549 100644 --- a/docs/phrase/phrase_en.xml +++ b/docs/phrase/phrase_en.xml @@ -241,6 +241,13 @@ + + + + + + + @@ -296,6 +303,10 @@ + + + + @@ -494,30 +505,29 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + @@ -537,6 +547,8 @@ + + From d3078c60ec0acb635887a8fecbd78e440ddcbde3 Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Tue, 13 Mar 2012 22:56:02 -0500 Subject: [PATCH 158/292] update flite to 1.5.4 fixes win64 and kal rate problem --- libs/win32/Download FLITE.2008.vcproj | 8 +- libs/win32/Download FLITE.2010.vcxproj | 10 +- libs/win32/flite/flite.2008.vcproj | 770 ++++++++++-------- libs/win32/flite/flite.2010.vcxproj | 405 ++++----- libs/win32/flite/flite.2010.vcxproj.filters | 561 ++++++++----- src/mod/asr_tts/mod_flite/Makefile | 2 +- .../asr_tts/mod_flite/mod_flite.2008.vcproj | 16 +- .../asr_tts/mod_flite/mod_flite.2010.vcxproj | 17 +- src/mod/asr_tts/mod_flite/mod_flite.c | 16 +- 9 files changed, 1051 insertions(+), 754 deletions(-) diff --git a/libs/win32/Download FLITE.2008.vcproj b/libs/win32/Download FLITE.2008.vcproj index 9c2d88a4c2..ebdbf99b89 100644 --- a/libs/win32/Download FLITE.2008.vcproj +++ b/libs/win32/Download FLITE.2008.vcproj @@ -76,8 +76,8 @@ diff --git a/libs/win32/Download FLITE.2010.vcxproj b/libs/win32/Download FLITE.2010.vcxproj index d88acb941f..bb63d1f00b 100644 --- a/libs/win32/Download FLITE.2010.vcxproj +++ b/libs/win32/Download FLITE.2010.vcxproj @@ -66,13 +66,15 @@ Document Downloading Flite. - if not exist "$(ProjectDir)..\flite-1.3.99" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/flite-1.3.99-latest.tar.gz "$(ProjectDir).." + if not exist "$(ProjectDir)..\flite-1.5.4" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/flite-1.5.4-current.tar.bz2 "$(ProjectDir).." +if exist "$(ProjectDir)..\flite-1.5.4-current" move "$(ProjectDir)..\flite-1.5.4-current" "$(ProjectDir)..\flite-1.5.4" - $(ProjectDir)..\flite-1.3.99;%(Outputs) + $(ProjectDir)..\flite-1.5.4;%(Outputs) Downloading Flite. - if not exist "$(ProjectDir)..\flite-1.3.99" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/flite-1.3.99-latest.tar.gz "$(ProjectDir).." + if not exist "$(ProjectDir)..\flite-1.5.4" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/flite-1.5.4-current.tar.bz2 "$(ProjectDir).." +if exist "$(ProjectDir)..\flite-1.5.4-current" move "$(ProjectDir)..\flite-1.5.4-current" "$(ProjectDir)..\flite-1.5.4" - $(ProjectDir)..\flite-1.3.99;%(Outputs) + $(ProjectDir)..\flite-1.5.4;%(Outputs) diff --git a/libs/win32/flite/flite.2008.vcproj b/libs/win32/flite/flite.2008.vcproj index 92c9984d42..22e97211ca 100644 --- a/libs/win32/flite/flite.2008.vcproj +++ b/libs/win32/flite/flite.2008.vcproj @@ -4,7 +4,7 @@ Version="9.00" Name="flite" ProjectGUID="{0AD1177E-1FD8-4643-9391-431467A11084}" - RootNamespace="flite-1.3-current" + RootNamespace="flite-1.5.4" TargetFrameworkVersion="196613" > @@ -43,7 +43,7 @@ - - - - - - - - - - - - - - @@ -672,223 +636,231 @@ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" > + + + + @@ -899,148 +871,308 @@ > - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libs/win32/flite/flite.2010.vcxproj b/libs/win32/flite/flite.2010.vcxproj index f6b0be5e27..aff892f095 100644 --- a/libs/win32/flite/flite.2010.vcxproj +++ b/libs/win32/flite/flite.2010.vcxproj @@ -21,7 +21,7 @@ flite {0AD1177E-1FD8-4643-9391-431467A11084} - flite-1.3-current + flite-1.5.4 @@ -68,7 +68,7 @@ Disabled - ..\..\flite-1.3.99\include;..\..\flite-1.3.99\lang\usenglish;..\..\flite-1.3.99\lang\cmulex;%(AdditionalIncludeDirectories) + ..\..\flite-1.5.4\include;..\..\flite-1.5.4\lang\usenglish;..\..\flite-1.5.4\lang\cmulex;%(AdditionalIncludeDirectories) CST_AUDIO_NONE=1;NO_UNION_INITIALIZATION=1;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) true EnableFastChecks @@ -83,7 +83,7 @@ Disabled - ..\..\flite-1.3.99\include;..\..\flite-1.3.99\lang\usenglish;..\..\flite-1.3.99\lang\cmulex;%(AdditionalIncludeDirectories) + ..\..\flite-1.5.4\include;..\..\flite-1.5.4\lang\usenglish;..\..\flite-1.5.4\lang\cmulex;%(AdditionalIncludeDirectories) CST_AUDIO_NONE=1;NO_UNION_INITIALIZATION=1;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) true EnableFastChecks @@ -96,7 +96,7 @@ MaxSpeed true - ..\..\flite-1.3.99\include;..\..\flite-1.3.99\lang\usenglish;..\..\flite-1.3.99\lang\cmulex;%(AdditionalIncludeDirectories) + ..\..\flite-1.5.4\include;..\..\flite-1.5.4\lang\usenglish;..\..\flite-1.5.4\lang\cmulex;%(AdditionalIncludeDirectories) CST_AUDIO_NONE=1;NO_UNION_INITIALIZATION=1;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) true MultiThreadedDLL @@ -112,7 +112,7 @@ MaxSpeed true - ..\..\flite-1.3.99\include;..\..\flite-1.3.99\lang\usenglish;..\..\flite-1.3.99\lang\cmulex;%(AdditionalIncludeDirectories) + ..\..\flite-1.5.4\include;..\..\flite-1.5.4\lang\usenglish;..\..\flite-1.5.4\lang\cmulex;%(AdditionalIncludeDirectories) CST_AUDIO_NONE=1;NO_UNION_INITIALIZATION=1;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) true MultiThreadedDLL @@ -122,189 +122,222 @@ - - - - - - - - - - - - - - include;lang/usenglish;%(AdditionalIncludeDirectories) - include;lang/usenglish;%(AdditionalIncludeDirectories) - include;lang/usenglish;%(AdditionalIncludeDirectories) - include;lang/usenglish;%(AdditionalIncludeDirectories) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libs/win32/flite/flite.2010.vcxproj.filters b/libs/win32/flite/flite.2010.vcxproj.filters index 6194dbb1d6..979f772242 100644 --- a/libs/win32/flite/flite.2010.vcxproj.filters +++ b/libs/win32/flite/flite.2010.vcxproj.filters @@ -1,558 +1,677 @@  - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - {2e2fca2e-fc24-48cd-bfa0-42ceb5aa5331} + + {8a9db04d-0a7b-47f2-97ed-73acecd51688} - + + {f4b8438d-32d6-4e75-926b-b3950baf2282} + + {58f041f5-13f9-4986-aa26-ab41db21c3b1} - + {f4db3d58-e9d3-415a-ae41-cc3dd1012fc2} + + {2e2fca2e-fc24-48cd-bfa0-42ceb5aa5331} + + + {29f922d5-330d-49c3-9f8d-5aaada042fe0} + - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - - Source Files + + voices\slt + + + voices\slt + + + voices\slt + + + voices\slt + + + voices\slt + + + voices\slt + + + voices\slt + + + voices\rms + + + voices\rms - + + voices\rms + + + voices\rms + + + voices\rms + + + voices\rms + + + voices\rms + + + voices\rms + + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + + voices\awb + + + voices\awb + + + voices\awb + + + voices\awb + + + voices\awb + + + voices\awb + + + voices\awb + + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - - sltvoice + + voices\awb + + + voices\awb + + + voices\awb + + + voices\rms - - sltvoice + + voices\rms - - sltvoice + + voices\rms - - sltvoice + + voices\slt - - sltvoice + + voices\slt - - sltvoice + + voices\slt - - sltvoice + + voices\kal - - awbvoice + + voices\kal - - awbvoice + + voices\kal - - awbvoice + + voices\kal - - awbvoice + + voices\kal - - awbvoice + + voices\kal - - awbvoice + + voices\kal16 - - awbvoice + + voices\kal16 - - rmsvoice + + voices\kal16 - - rmsvoice + + voices\kal16 - - rmsvoice + + voices\kal16 - - rmsvoice + + Source Files + + + Source Files + + + Source Files - - rmsvoice + + Source Files - - rmsvoice + + Source Files - - rmsvoice + + Source Files - + Header Files - + Header Files - + Header Files - + + voices\slt + + + voices\slt + + + voices\slt + + + voices\slt + + + voices\rms + + + voices\rms + + + voices\rms + + + voices\rms + + + voices\rms + + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + + voices\awb + + + voices\awb + + + voices\awb + + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - - sltvoice + + Header Files - - sltvoice + + voices\awb - - sltvoice + + voices\awb - - sltvoice + + voices\awb - - awbvoice + + voices\rms - - awbvoice + + voices\rms - - awbvoice + + voices\slt - - awbvoice + + voices\slt - - rmsvoice + + voices\kal - - rmsvoice + + voices\kal16 - - rmsvoice + + Header Files - - rmsvoice + + Header Files \ No newline at end of file diff --git a/src/mod/asr_tts/mod_flite/Makefile b/src/mod/asr_tts/mod_flite/Makefile index cdb2137f14..4352a5ba69 100644 --- a/src/mod/asr_tts/mod_flite/Makefile +++ b/src/mod/asr_tts/mod_flite/Makefile @@ -1,4 +1,4 @@ -FLITE=flite-1.5.1 +FLITE=flite-1.5.4 FLITE_DIR=$(switch_srcdir)/libs/$(FLITE)-current FLITE_BUILDDIR=$(switch_builddir)/libs/$(FLITE)-current diff --git a/src/mod/asr_tts/mod_flite/mod_flite.2008.vcproj b/src/mod/asr_tts/mod_flite/mod_flite.2008.vcproj index 53fdaadb08..23758c9191 100644 --- a/src/mod/asr_tts/mod_flite/mod_flite.2008.vcproj +++ b/src/mod/asr_tts/mod_flite/mod_flite.2008.vcproj @@ -42,7 +42,7 @@ /> @@ -108,7 +108,7 @@ /> @@ -175,7 +175,7 @@ /> @@ -241,7 +241,7 @@ /> @@ -308,7 +308,7 @@ /> - ../../../../libs/flite-1.3.99/include;%(AdditionalIncludeDirectories) + ../../../../libs/flite-1.5.4/include;%(AdditionalIncludeDirectories) APT_LIB_EXPORT;%(PreprocessorDefinitions) @@ -137,7 +137,7 @@ X64 - ../../../../libs/flite-1.3.99/include;%(AdditionalIncludeDirectories) + ../../../../libs/flite-1.5.4/include;%(AdditionalIncludeDirectories) APT_LIB_EXPORT;%(PreprocessorDefinitions) @@ -152,7 +152,7 @@ - ../../../../libs/flite-1.3.99/include;%(AdditionalIncludeDirectories) + ../../../../libs/flite-1.5.4/include;%(AdditionalIncludeDirectories) APT_LIB_EXPORT;%(PreprocessorDefinitions) @@ -170,7 +170,7 @@ X64 - ../../../../libs/flite-1.3.99/include;%(AdditionalIncludeDirectories) + ../../../../libs/flite-1.5.4/include;%(AdditionalIncludeDirectories) APT_LIB_EXPORT;%(PreprocessorDefinitions) @@ -186,7 +186,7 @@ - ../../../../libs/flite-1.3.99/include;%(AdditionalIncludeDirectories) + ../../../../libs/flite-1.5.4/include;%(AdditionalIncludeDirectories) @@ -203,7 +203,7 @@ X64 - ../../../../libs/flite-1.3.99/include;%(AdditionalIncludeDirectories) + ../../../../libs/flite-1.5.4/include;%(AdditionalIncludeDirectories) @@ -218,7 +218,7 @@ - ../../../../libs/flite-1.3.99/include;%(AdditionalIncludeDirectories) + ../../../../libs/flite-1.5.4/include;%(AdditionalIncludeDirectories) @@ -235,7 +235,7 @@ X64 - ../../../../libs/flite-1.3.99/include;%(AdditionalIncludeDirectories) + ../../../../libs/flite-1.5.4/include;%(AdditionalIncludeDirectories) @@ -258,7 +258,6 @@ {0ad1177e-1fd8-4643-9391-431467a11084} - false {202d7a4e-760d-4d0e-afa1-d7459ced30ff} diff --git a/src/mod/asr_tts/mod_flite/mod_flite.c b/src/mod/asr_tts/mod_flite/mod_flite.c index cd4bbfa66a..079818af07 100644 --- a/src/mod/asr_tts/mod_flite/mod_flite.c +++ b/src/mod/asr_tts/mod_flite/mod_flite.c @@ -44,6 +44,10 @@ void unregister_cmu_us_rms(cst_voice * v); cst_voice *register_cmu_us_slt(void); void unregister_cmu_us_slt(cst_voice * v); +cst_voice *register_cmu_us_kal16(void); +void unregister_cmu_us_kal16(cst_voice * v); + + SWITCH_MODULE_LOAD_FUNCTION(mod_flite_load); SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_flite_shutdown); SWITCH_MODULE_DEFINITION(mod_flite, mod_flite_load, mod_flite_shutdown, NULL); @@ -53,6 +57,7 @@ static struct { cst_voice *kal; cst_voice *rms; cst_voice *slt; + cst_voice *kal16; } globals; struct flite_data { @@ -75,13 +80,18 @@ static switch_status_t flite_speech_open(switch_speech_handle_t *sh, const char if (!strcasecmp(voice_name, "awb")) { flite->v = globals.awb; } else if (!strcasecmp(voice_name, "kal")) { - flite->v = globals.kal; +/* "kal" is 8kHz and the native rate is set to 16kHz + * so kal talks a little bit too fast ... + * for now: "symlink" kal to kal16 + */ flite->v = globals.kal16; } else if (!strcasecmp(voice_name, "rms")) { flite->v = globals.rms; } else if (!strcasecmp(voice_name, "slt")) { flite->v = globals.slt; + } else if (!strcasecmp(voice_name, "kal16")) { + flite->v = globals.kal16; } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Valid voice names are awb, kal, rms or slt.\n"); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Valid voice names are awb, rms, slt or kal.\n"); } if (flite->v) { @@ -179,6 +189,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_flite_load) globals.kal = register_cmu_us_kal(); globals.rms = register_cmu_us_rms(); globals.slt = register_cmu_us_slt(); + globals.kal16 = register_cmu_us_kal16(); /* connect my internal structure to the blank pointer passed to me */ *module_interface = switch_loadable_module_create_module_interface(pool, modname); @@ -203,6 +214,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_flite_shutdown) unregister_cmu_us_kal(globals.kal); unregister_cmu_us_rms(globals.rms); unregister_cmu_us_slt(globals.slt); + unregister_cmu_us_kal16(globals.kal16); return SWITCH_STATUS_UNLOAD; } From e0d235f59ceb2bcb9ab9fe7cc852504c259aeadc Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 7 Mar 2012 19:13:17 +0000 Subject: [PATCH 159/292] mod_callcenter: style --- src/mod/applications/mod_callcenter/mod_callcenter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/applications/mod_callcenter/mod_callcenter.c b/src/mod/applications/mod_callcenter/mod_callcenter.c index bc40e210fb..625a7fe2e9 100644 --- a/src/mod/applications/mod_callcenter/mod_callcenter.c +++ b/src/mod/applications/mod_callcenter/mod_callcenter.c @@ -2581,7 +2581,7 @@ SWITCH_STANDARD_APP(callcenter_function) } } else { - switch_ivr_collect_digits_callback(session, &args, 0, 0); + switch_ivr_collect_digits_callback(member_session, &args, 0, 0); } switch_yield(1000); From bf5df02c7aaa84ab5942a0038a31d8893095aa0f Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 18 Jul 2011 02:20:57 +0000 Subject: [PATCH 160/292] mod_callcenter: support cc_exit_keys channel variable If any digit in cc_exit_keys is pressed, the member will exit the queue and the callcenter application. --- .../mod_callcenter/mod_callcenter.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/mod/applications/mod_callcenter/mod_callcenter.c b/src/mod/applications/mod_callcenter/mod_callcenter.c index 625a7fe2e9..9133a0c0a9 100644 --- a/src/mod/applications/mod_callcenter/mod_callcenter.c +++ b/src/mod/applications/mod_callcenter/mod_callcenter.c @@ -2340,6 +2340,7 @@ void *SWITCH_THREAD_FUNC cc_member_thread_run(switch_thread_t *thread, void *obj struct moh_dtmf_helper { const char *queue_name; + const char *exit_keys; char dtmf; }; @@ -2348,10 +2349,9 @@ static switch_status_t moh_on_dtmf(switch_core_session_t *session, void *input, switch (itype) { case SWITCH_INPUT_TYPE_DTMF: - { - /* Just laywork for people who want to get some DTMF actions */ + if (h->exit_keys && *(h->exit_keys)) { switch_dtmf_t *dtmf = (switch_dtmf_t *) input; - if (strchr("#", dtmf->digit)) { + if (strchr(h->exit_keys, dtmf->digit)) { h->dtmf = dtmf->digit; return SWITCH_STATUS_BREAK; } @@ -2552,6 +2552,7 @@ SWITCH_STANDARD_APP(callcenter_function) switch_input_args_t args = { 0 }; struct moh_dtmf_helper ht; + ht.exit_keys = switch_channel_get_variable(member_channel, "cc_exit_keys"); ht.dtmf = '\0'; args.input_callback = moh_on_dtmf; args.buf = (void *) &ht; @@ -2575,17 +2576,17 @@ SWITCH_STANDARD_APP(callcenter_function) /* Sadly, there doesn't seem to be a return to switch_ivr_play_file that tell you the file wasn't found. FALSE also mean that the channel got switch to BRAKE state, so we check for read acceptable */ switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(member_session), SWITCH_LOG_WARNING, "Couldn't play file '%s', continuing wait with no audio\n", cur_moh); moh_valid = SWITCH_FALSE; - + } else if (status == SWITCH_STATUS_BREAK) { + break; } else if (!SWITCH_READ_ACCEPTABLE(status)) { break; } - } else { - switch_ivr_collect_digits_callback(member_session, &args, 0, 0); + if ((switch_ivr_collect_digits_callback(member_session, &args, 0, 0)) == SWITCH_STATUS_BREAK) { + break; + } } - switch_yield(1000); - } /* Make sure an agent was found, as we might break above without setting it */ From b2aa332090e24f6412bd07d0a6278ffd44d90ef6 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 18 Jul 2011 09:39:11 +0000 Subject: [PATCH 161/292] mod_callcenter: set cc_exit_key channel variable If a member of a queue presses a digit specified in cc_exit_keys, the caller will exit the queue and the variable cc_exit_key will be set to the digit the caller pressed. --- src/mod/applications/mod_callcenter/mod_callcenter.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/mod/applications/mod_callcenter/mod_callcenter.c b/src/mod/applications/mod_callcenter/mod_callcenter.c index 9133a0c0a9..49fb76f9d7 100644 --- a/src/mod/applications/mod_callcenter/mod_callcenter.c +++ b/src/mod/applications/mod_callcenter/mod_callcenter.c @@ -2577,12 +2577,16 @@ SWITCH_STANDARD_APP(callcenter_function) switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(member_session), SWITCH_LOG_WARNING, "Couldn't play file '%s', continuing wait with no audio\n", cur_moh); moh_valid = SWITCH_FALSE; } else if (status == SWITCH_STATUS_BREAK) { + char buf[2] = { ht.dtmf, 0 }; + switch_channel_set_variable(member_channel, "cc_exit_key", buf); break; } else if (!SWITCH_READ_ACCEPTABLE(status)) { break; } } else { if ((switch_ivr_collect_digits_callback(member_session, &args, 0, 0)) == SWITCH_STATUS_BREAK) { + char buf[2] = { ht.dtmf, 0 }; + switch_channel_set_variable(member_channel, "cc_exit_key", buf); break; } } From 6cd86c56288a1e4a7cccf8d16c2f6dcc2a0b3b82 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 18 Jul 2011 10:17:42 +0000 Subject: [PATCH 162/292] mod_callcenter: implement cc_outbound_announce Playback one or more things to the agent based on a channel variable of the member. cc_outbound_announce may contain an array. --- .../mod_callcenter/mod_callcenter.c | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/mod/applications/mod_callcenter/mod_callcenter.c b/src/mod/applications/mod_callcenter/mod_callcenter.c index 49fb76f9d7..6942e1f61f 100644 --- a/src/mod/applications/mod_callcenter/mod_callcenter.c +++ b/src/mod/applications/mod_callcenter/mod_callcenter.c @@ -1371,6 +1371,22 @@ end: return status; } +static void playback_array(switch_core_session_t *session, const char *str) { + if (str && !strncmp(str, "ARRAY::", 7)) { + char *i = (char*) str + 7, *j = i; + while (1) { + if ((j = strstr(i, "::"))) { + *j = 0; + } + switch_ivr_play_file(session, NULL, i, NULL); + if (!j) break; + i = j + 2; + } + } else { + switch_ivr_play_file(session, NULL, str, NULL); + } +} + static void *SWITCH_THREAD_FUNC outbound_agent_thread_run(switch_thread_t *thread, void *obj) { struct call_helper *h = (struct call_helper *) obj; @@ -1489,6 +1505,7 @@ static void *SWITCH_THREAD_FUNC outbound_agent_thread_run(switch_thread_t *threa switch_channel_t *member_channel = switch_core_session_get_channel(member_session); switch_channel_t *agent_channel = switch_core_session_get_channel(agent_session); const char *other_loopback_leg_uuid = switch_channel_get_variable(agent_channel, "other_loopback_leg_uuid"); + const char *o_announce = NULL; switch_channel_set_variable(agent_channel, "cc_member_pre_answer_uuid", NULL); @@ -1616,6 +1633,10 @@ static void *SWITCH_THREAD_FUNC outbound_agent_thread_run(switch_thread_t *threa switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(member_session), SWITCH_LOG_DEBUG, "Agent %s answered \"%s\" <%s> from queue %s%s\n", h->agent_name, h->member_cid_name, h->member_cid_number, h->queue_name, (h->record_template?" (Recorded)":"")); + if ((o_announce = switch_channel_get_variable(member_channel, "cc_outbound_announce"))) { + playback_array(agent_session, o_announce); + } + switch_ivr_uuid_bridge(h->member_session_uuid, switch_core_session_get_uuid(agent_session)); switch_channel_set_variable(member_channel, "cc_agent_uuid", agent_uuid); From 9fca678d84db5793288e25bc2eae0256f324c21f Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 19 Aug 2011 05:28:39 +0000 Subject: [PATCH 163/292] mod_callcenter: add cc_outbound_cid_name_prefix Prefixes the displayed caller_id_name when calling outbound agents without affecting the caller_id_name of the underlying member channel. --- src/mod/applications/mod_callcenter/mod_callcenter.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/mod/applications/mod_callcenter/mod_callcenter.c b/src/mod/applications/mod_callcenter/mod_callcenter.c index 6942e1f61f..277026a3c6 100644 --- a/src/mod/applications/mod_callcenter/mod_callcenter.c +++ b/src/mod/applications/mod_callcenter/mod_callcenter.c @@ -1445,6 +1445,14 @@ static void *SWITCH_THREAD_FUNC outbound_agent_thread_run(switch_thread_t *threa /* CallBack Mode */ if (!strcasecmp(h->agent_type, CC_AGENT_TYPE_CALLBACK)) { + switch_channel_t *member_channel = switch_core_session_get_channel(member_session); + char *cid_name = NULL; + const char *cid_name_prefix = NULL; + if ((cid_name_prefix = switch_channel_get_variable(member_channel, "cc_outbound_cid_name_prefix"))) { + cid_name = switch_mprintf("%s%s", cid_name_prefix, h->member_cid_name); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(member_session), SWITCH_LOG_DEBUG, "Setting outbound caller_id_name to: %s\n", cid_name); + } + switch_event_create(&ovars, SWITCH_EVENT_REQUEST_PARAMS); switch_event_add_header(ovars, SWITCH_STACK_BOTTOM, "cc_queue", "%s", h->queue_name); switch_event_add_header(ovars, SWITCH_STACK_BOTTOM, "cc_member_uuid", "%s", h->member_uuid); @@ -1460,9 +1468,9 @@ static void *SWITCH_THREAD_FUNC outbound_agent_thread_run(switch_thread_t *threa t_agent_called = local_epoch_time_now(NULL); dialstr = switch_mprintf("%s", h->originate_string); - status = switch_ivr_originate(NULL, &agent_session, &cause, dialstr, 60, NULL, h->member_cid_name, h->member_cid_number, NULL, ovars, SOF_NONE, NULL); - + status = switch_ivr_originate(NULL, &agent_session, &cause, dialstr, 60, NULL, cid_name ? cid_name : h->member_cid_name, h->member_cid_number, NULL, ovars, SOF_NONE, NULL); switch_safe_free(dialstr); + switch_safe_free(cid_name); switch_event_destroy(&ovars); /* UUID Standby Mode */ From 61d71c2240a2210f02e33823370256eaeb939974 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 17 Jan 2012 22:33:49 +0000 Subject: [PATCH 164/292] XML cleanup in conf/lang/ --- conf/lang/de/demo/demo.xml | 142 ++++++------- conf/lang/de/vm/sounds.xml | 315 ++++++++++++++--------------- conf/lang/de/vm/tts.xml | 69 ++++--- conf/lang/en/demo/demo-ivr.xml | 11 +- conf/lang/en/demo/demo.xml | 142 ++++++------- conf/lang/en/en.xml | 8 +- conf/lang/en/ivr/sounds.xml | 252 +++++++++++------------ conf/lang/en/vm/sounds.xml | 322 +++++++++++++++--------------- conf/lang/en/vm/tts.xml | 75 ++++--- conf/lang/en/vm/voicemail_ivr.xml | 280 +++++++++++++------------- conf/lang/fr/demo/demo.xml | 36 ++-- conf/lang/fr/dir/sounds.xml | 220 ++++++++++---------- conf/lang/fr/dir/tts.xml | 182 +++++++++-------- conf/lang/fr/fr.xml | 4 +- conf/lang/fr/vm/sounds.xml | 82 ++++---- conf/lang/he/demo/demo-ivr.xml | 10 +- conf/lang/he/demo/demo.xml | 142 ++++++------- conf/lang/he/dir/sounds.xml | 220 ++++++++++---------- conf/lang/he/vm/sounds.xml | 302 ++++++++++++++-------------- conf/lang/ru/demo/demo-ivr.xml | 10 +- conf/lang/ru/demo/demo.xml | 198 +++++++++--------- conf/lang/ru/dir/sounds.xml | 220 ++++++++++---------- conf/lang/ru/dir/tts.xml | 172 ++++++++-------- conf/lang/ru/ru.xml | 1 - conf/lang/ru/vm/sounds.xml | 218 ++++++++++---------- conf/lang/ru/vm/tts.xml | 73 +++---- 26 files changed, 1840 insertions(+), 1866 deletions(-) diff --git a/conf/lang/de/demo/demo.xml b/conf/lang/de/demo/demo.xml index 83ea0d2417..4786ac69c3 100644 --- a/conf/lang/de/demo/demo.xml +++ b/conf/lang/de/demo/demo.xml @@ -1,71 +1,71 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/lang/de/vm/sounds.xml b/conf/lang/de/vm/sounds.xml index ad9dc2e136..0ba3d79a85 100644 --- a/conf/lang/de/vm/sounds.xml +++ b/conf/lang/de/vm/sounds.xml @@ -1,9 +1,10 @@ - + + - - + + @@ -11,8 +12,8 @@ - - + + @@ -20,7 +21,7 @@ - + @@ -28,7 +29,7 @@ - + @@ -36,7 +37,7 @@ - + @@ -44,7 +45,7 @@ - + @@ -52,19 +53,19 @@ - - - - - + + + + + - - - - + + + + @@ -72,28 +73,25 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + @@ -101,34 +99,30 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + @@ -136,7 +130,7 @@ - + @@ -144,15 +138,15 @@ - - - - - - - - - + + + + + + + + + @@ -160,12 +154,12 @@ - - - - - - + + + + + + @@ -173,12 +167,12 @@ - - - - - - + + + + + + @@ -186,9 +180,9 @@ - - - + + + @@ -196,7 +190,7 @@ - + @@ -204,43 +198,43 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + @@ -248,7 +242,7 @@ - + @@ -256,7 +250,7 @@ - + @@ -264,7 +258,7 @@ - + @@ -272,7 +266,7 @@ - + @@ -280,9 +274,9 @@ - - - + + + @@ -290,9 +284,9 @@ - - - + + + @@ -300,7 +294,7 @@ - + @@ -308,10 +302,10 @@ - - - - + + + + @@ -319,7 +313,7 @@ - + @@ -327,39 +321,39 @@ - + - + - + - - + + - - + + - - + + - - + + @@ -367,17 +361,17 @@ - - + + - - - + + + @@ -404,4 +398,5 @@ - + + diff --git a/conf/lang/de/vm/tts.xml b/conf/lang/de/vm/tts.xml index 33367bb88e..5395d4adf0 100644 --- a/conf/lang/de/vm/tts.xml +++ b/conf/lang/de/vm/tts.xml @@ -1,8 +1,9 @@ - + + - + @@ -10,7 +11,7 @@ - + @@ -18,7 +19,7 @@ - + @@ -26,7 +27,7 @@ - + @@ -34,7 +35,7 @@ - + @@ -42,7 +43,7 @@ - + @@ -50,12 +51,12 @@ - + - + @@ -63,27 +64,25 @@ - + - - + - - + @@ -91,8 +90,8 @@ - + @@ -100,8 +99,8 @@ - + @@ -109,8 +108,8 @@ - + @@ -118,7 +117,7 @@ - + @@ -126,7 +125,7 @@ - + @@ -134,7 +133,7 @@ - + @@ -142,7 +141,7 @@ - + @@ -150,7 +149,7 @@ - + @@ -158,7 +157,7 @@ - + @@ -166,7 +165,7 @@ - + @@ -174,7 +173,7 @@ - + @@ -182,7 +181,7 @@ - + @@ -190,7 +189,7 @@ - + @@ -198,7 +197,7 @@ - + @@ -206,9 +205,9 @@ - + - + diff --git a/conf/lang/en/demo/demo-ivr.xml b/conf/lang/en/demo/demo-ivr.xml index ec7d7bccd2..99f4932f21 100644 --- a/conf/lang/en/demo/demo-ivr.xml +++ b/conf/lang/en/demo/demo-ivr.xml @@ -1,6 +1,4 @@ - - - + @@ -69,7 +67,7 @@ - + @@ -132,7 +130,7 @@ - + @@ -140,9 +138,8 @@ - - + diff --git a/conf/lang/en/demo/demo.xml b/conf/lang/en/demo/demo.xml index e3e6f02142..76139e5859 100644 --- a/conf/lang/en/demo/demo.xml +++ b/conf/lang/en/demo/demo.xml @@ -1,71 +1,71 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/lang/en/en.xml b/conf/lang/en/en.xml index 33c55197c2..3696dcca58 100644 --- a/conf/lang/en/en.xml +++ b/conf/lang/en/en.xml @@ -3,10 +3,10 @@ - - - - + + + + diff --git a/conf/lang/en/ivr/sounds.xml b/conf/lang/en/ivr/sounds.xml index d2b3e4686a..5a25fc1238 100644 --- a/conf/lang/en/ivr/sounds.xml +++ b/conf/lang/en/ivr/sounds.xml @@ -1,134 +1,134 @@ - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/lang/en/vm/sounds.xml b/conf/lang/en/vm/sounds.xml index 449ad55f2d..dd1e0b97f4 100644 --- a/conf/lang/en/vm/sounds.xml +++ b/conf/lang/en/vm/sounds.xml @@ -1,9 +1,10 @@ - + + - - + + @@ -11,8 +12,8 @@ - - + + @@ -20,7 +21,7 @@ - + @@ -28,7 +29,7 @@ - + @@ -36,7 +37,7 @@ - + @@ -44,7 +45,7 @@ - + @@ -52,7 +53,7 @@ - + @@ -60,7 +61,7 @@ - + @@ -68,18 +69,18 @@ - - - - + + + + - - - - + + + + @@ -87,28 +88,28 @@ - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + @@ -116,34 +117,34 @@ - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + @@ -151,7 +152,7 @@ - + @@ -159,15 +160,15 @@ - - - - - - - - - + + + + + + + + + @@ -175,12 +176,12 @@ - - - - - - + + + + + + @@ -188,12 +189,12 @@ - - - - - - + + + + + + @@ -201,9 +202,9 @@ - - - + + + @@ -211,7 +212,7 @@ - + @@ -219,43 +220,43 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + @@ -263,7 +264,7 @@ - + @@ -271,7 +272,7 @@ - + @@ -279,7 +280,7 @@ - + @@ -287,7 +288,7 @@ - + @@ -295,9 +296,9 @@ - - - + + + @@ -305,9 +306,9 @@ - - - + + + @@ -315,7 +316,7 @@ - + @@ -323,25 +324,25 @@ - - - + + + - - - - - + + + + + - - - - + + + + @@ -349,39 +350,39 @@ - + - + - + - - + + - - + + - - + + - - + + @@ -389,16 +390,16 @@ - + - - - + + + @@ -425,4 +426,5 @@ - + + diff --git a/conf/lang/en/vm/tts.xml b/conf/lang/en/vm/tts.xml index 1fc877d50e..9a8b6a0e35 100644 --- a/conf/lang/en/vm/tts.xml +++ b/conf/lang/en/vm/tts.xml @@ -1,8 +1,9 @@ - + + - + @@ -10,7 +11,7 @@ - + @@ -18,7 +19,7 @@ - + @@ -26,7 +27,7 @@ - + @@ -34,7 +35,7 @@ - + @@ -42,7 +43,7 @@ - + @@ -50,12 +51,12 @@ - + - + @@ -63,27 +64,25 @@ - + - - + - - + @@ -92,8 +91,8 @@ - + @@ -101,8 +100,8 @@ - + @@ -110,7 +109,7 @@ - + @@ -118,7 +117,7 @@ - + @@ -126,7 +125,7 @@ - + @@ -134,8 +133,8 @@ - + @@ -143,7 +142,7 @@ - + @@ -151,7 +150,7 @@ - + @@ -159,7 +158,7 @@ - + @@ -167,7 +166,7 @@ - + @@ -175,7 +174,7 @@ - + @@ -183,7 +182,7 @@ - + @@ -191,7 +190,7 @@ - + @@ -199,7 +198,7 @@ - + @@ -207,7 +206,7 @@ - + @@ -215,7 +214,7 @@ - + @@ -223,7 +222,7 @@ - + @@ -231,9 +230,9 @@ - + - + diff --git a/conf/lang/en/vm/voicemail_ivr.xml b/conf/lang/en/vm/voicemail_ivr.xml index de873078a4..2ff2034164 100644 --- a/conf/lang/en/vm/voicemail_ivr.xml +++ b/conf/lang/en/vm/voicemail_ivr.xml @@ -1,142 +1,142 @@ - - + + + - - - + + + - + - + - + - + - - + + - - + + - + - - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - - - - + + + + - - - - + + + + - - - - + + + + - + - - - - + + + + - + - - - - - + + + + + - + - + @@ -144,8 +144,8 @@ - - + + @@ -153,215 +153,214 @@ - - - - - - - - - - - - + + + + + + + + + + + + + - - - + + - + - - + + - + - - - + + + - + - + - + - - - - - - + + + + + + - + - - + + - + - + - + - + - + - + - + - + - + - - - + + + - + - - - + + + - + - + - + - - - + + + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - + - + - + @@ -369,7 +368,7 @@ - + @@ -377,7 +376,7 @@ - + @@ -385,13 +384,14 @@ - + - - - + + + - + + diff --git a/conf/lang/fr/demo/demo.xml b/conf/lang/fr/demo/demo.xml index 80660203a3..36ac98c06a 100644 --- a/conf/lang/fr/demo/demo.xml +++ b/conf/lang/fr/demo/demo.xml @@ -1,18 +1,18 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + diff --git a/conf/lang/fr/dir/sounds.xml b/conf/lang/fr/dir/sounds.xml index 02d6b3671f..37d2d0b048 100644 --- a/conf/lang/fr/dir/sounds.xml +++ b/conf/lang/fr/dir/sounds.xml @@ -1,121 +1,119 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + - - - - - - + + + + + + + + + + + + + - + + + + + + + - - - - - - + + + + + + + - + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - + diff --git a/conf/lang/fr/dir/tts.xml b/conf/lang/fr/dir/tts.xml index 1f5b0caa63..58668f00c0 100644 --- a/conf/lang/fr/dir/tts.xml +++ b/conf/lang/fr/dir/tts.xml @@ -1,101 +1,99 @@ - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + + + - + + + + + + + - - - - - - + + + + + + + - + + + + + + + - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/conf/lang/fr/fr.xml b/conf/lang/fr/fr.xml index eaf00f247e..acdf4f2591 100644 --- a/conf/lang/fr/fr.xml +++ b/conf/lang/fr/fr.xml @@ -3,9 +3,9 @@ - + - + diff --git a/conf/lang/fr/vm/sounds.xml b/conf/lang/fr/vm/sounds.xml index 55190a6bac..2d52b5ae44 100644 --- a/conf/lang/fr/vm/sounds.xml +++ b/conf/lang/fr/vm/sounds.xml @@ -1,9 +1,9 @@ - - + + - + @@ -11,7 +11,7 @@ - + @@ -19,7 +19,7 @@ - + @@ -27,7 +27,7 @@ - + @@ -35,7 +35,7 @@ - + @@ -43,7 +43,7 @@ - + @@ -51,17 +51,17 @@ - + - + - + @@ -69,27 +69,25 @@ - + - - + - - + @@ -98,8 +96,8 @@ - + @@ -107,8 +105,8 @@ - + @@ -116,8 +114,8 @@ - + @@ -125,7 +123,7 @@ - + @@ -133,7 +131,7 @@ - + @@ -141,7 +139,7 @@ - + @@ -149,7 +147,7 @@ - + @@ -157,7 +155,7 @@ - + @@ -165,7 +163,7 @@ - + @@ -173,7 +171,7 @@ - + @@ -181,12 +179,12 @@ - + - + @@ -194,7 +192,7 @@ - + @@ -202,7 +200,7 @@ - + @@ -210,27 +208,27 @@ - + - + - + - + - + @@ -238,9 +236,9 @@ - + - \ No newline at end of file + diff --git a/conf/lang/he/demo/demo-ivr.xml b/conf/lang/he/demo/demo-ivr.xml index ec7d7bccd2..b7b829dde0 100644 --- a/conf/lang/he/demo/demo-ivr.xml +++ b/conf/lang/he/demo/demo-ivr.xml @@ -1,6 +1,4 @@ - - - + @@ -69,7 +67,7 @@ - + @@ -132,7 +130,7 @@ - + @@ -145,4 +143,4 @@ - + diff --git a/conf/lang/he/demo/demo.xml b/conf/lang/he/demo/demo.xml index e3e6f02142..76139e5859 100644 --- a/conf/lang/he/demo/demo.xml +++ b/conf/lang/he/demo/demo.xml @@ -1,71 +1,71 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/lang/he/dir/sounds.xml b/conf/lang/he/dir/sounds.xml index 15ecec304a..4dc44d0054 100644 --- a/conf/lang/he/dir/sounds.xml +++ b/conf/lang/he/dir/sounds.xml @@ -1,121 +1,119 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + - - - - - - + + + + + + + + + + + + + - + + + + + + + - - - - - - + + + + + + + - + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - + diff --git a/conf/lang/he/vm/sounds.xml b/conf/lang/he/vm/sounds.xml index 5a090411d7..e52fa8691f 100644 --- a/conf/lang/he/vm/sounds.xml +++ b/conf/lang/he/vm/sounds.xml @@ -1,9 +1,10 @@ - + + - - + + @@ -11,8 +12,8 @@ - - + + @@ -20,7 +21,7 @@ - + @@ -28,7 +29,7 @@ - + @@ -36,7 +37,7 @@ - + @@ -44,7 +45,7 @@ - + @@ -52,18 +53,18 @@ - - - - + + + + - - - - + + + + @@ -71,28 +72,28 @@ - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + @@ -100,34 +101,34 @@ - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + @@ -135,7 +136,7 @@ - + @@ -143,15 +144,15 @@ - - - - - - - - - + + + + + + + + + @@ -159,12 +160,12 @@ - - - - - - + + + + + + @@ -172,12 +173,12 @@ - - - - - - + + + + + + @@ -185,9 +186,9 @@ - - - + + + @@ -195,7 +196,7 @@ - + @@ -203,43 +204,43 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + @@ -247,7 +248,7 @@ - + @@ -255,7 +256,7 @@ - + @@ -263,7 +264,7 @@ - + @@ -271,7 +272,7 @@ - + @@ -279,9 +280,9 @@ - - - + + + @@ -289,9 +290,9 @@ - - - + + + @@ -299,7 +300,7 @@ - + @@ -307,9 +308,9 @@ - - - + + + @@ -317,7 +318,7 @@ - + @@ -325,39 +326,39 @@ - + - + - + - - + + - - + + - - + + - - + + @@ -365,16 +366,16 @@ - + - - - + + + @@ -401,4 +402,5 @@ - + + diff --git a/conf/lang/ru/demo/demo-ivr.xml b/conf/lang/ru/demo/demo-ivr.xml index 8c6f3f8624..5aed33b9ec 100644 --- a/conf/lang/ru/demo/demo-ivr.xml +++ b/conf/lang/ru/demo/demo-ivr.xml @@ -1,6 +1,4 @@ - - - + @@ -66,7 +64,7 @@ - + @@ -129,7 +127,7 @@ - + @@ -142,4 +140,4 @@ - + diff --git a/conf/lang/ru/demo/demo.xml b/conf/lang/ru/demo/demo.xml index 7e450fbc83..dcc65761dd 100644 --- a/conf/lang/ru/demo/demo.xml +++ b/conf/lang/ru/demo/demo.xml @@ -1,100 +1,98 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/lang/ru/dir/sounds.xml b/conf/lang/ru/dir/sounds.xml index 02d6b3671f..37d2d0b048 100644 --- a/conf/lang/ru/dir/sounds.xml +++ b/conf/lang/ru/dir/sounds.xml @@ -1,121 +1,119 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + - - - - - - + + + + + + + + + + + + + - + + + + + + + - - - - - - + + + + + + + - + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - + diff --git a/conf/lang/ru/dir/tts.xml b/conf/lang/ru/dir/tts.xml index 67ae5ab265..ce41c8a0a7 100644 --- a/conf/lang/ru/dir/tts.xml +++ b/conf/lang/ru/dir/tts.xml @@ -1,96 +1,94 @@ - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + + + - + + + + + + + - - - - - - + + + + + + + - + + + + + + + - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/conf/lang/ru/ru.xml b/conf/lang/ru/ru.xml index 686e840860..a32d5d6058 100644 --- a/conf/lang/ru/ru.xml +++ b/conf/lang/ru/ru.xml @@ -1,4 +1,3 @@ - diff --git a/conf/lang/ru/vm/sounds.xml b/conf/lang/ru/vm/sounds.xml index ffd9ec5d8c..b5387dfeb1 100644 --- a/conf/lang/ru/vm/sounds.xml +++ b/conf/lang/ru/vm/sounds.xml @@ -1,10 +1,10 @@ - - + + - - + + @@ -12,8 +12,8 @@ - - + + @@ -21,7 +21,7 @@ - + @@ -29,7 +29,7 @@ - + @@ -37,7 +37,7 @@ - + @@ -45,7 +45,7 @@ - + @@ -53,30 +53,30 @@ - - - - - + + + + + - + - - - - - + + + + + - + - - - - - + + + + + @@ -84,50 +84,48 @@ - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + @@ -135,15 +133,15 @@ - - - - - - - - - + + + + + + + + + @@ -151,12 +149,12 @@ - - - - - - + + + + + + @@ -164,12 +162,12 @@ - - - - - - + + + + + + @@ -177,9 +175,9 @@ - - - + + + @@ -187,7 +185,7 @@ - + @@ -239,7 +237,7 @@ - + @@ -247,7 +245,7 @@ - + @@ -255,7 +253,7 @@ - + @@ -263,7 +261,7 @@ - + @@ -271,9 +269,9 @@ - - - + + + @@ -281,9 +279,9 @@ - - - + + + @@ -291,7 +289,7 @@ - + @@ -299,9 +297,9 @@ - - - + + + @@ -309,7 +307,7 @@ - + @@ -317,39 +315,39 @@ - + - + - + - - + + - - + + - - + + - - + + @@ -357,9 +355,9 @@ - + - + diff --git a/conf/lang/ru/vm/tts.xml b/conf/lang/ru/vm/tts.xml index 1fc877d50e..94b2fa287d 100644 --- a/conf/lang/ru/vm/tts.xml +++ b/conf/lang/ru/vm/tts.xml @@ -1,8 +1,9 @@ - + + - + @@ -10,7 +11,7 @@ - + @@ -18,7 +19,7 @@ - + @@ -26,7 +27,7 @@ - + @@ -34,7 +35,7 @@ - + @@ -42,7 +43,7 @@ - + @@ -50,12 +51,12 @@ - + - + @@ -63,8 +64,8 @@ - + @@ -73,8 +74,8 @@ - + @@ -83,7 +84,7 @@ - + @@ -92,8 +93,8 @@ - + @@ -101,8 +102,8 @@ - + @@ -110,7 +111,7 @@ - + @@ -118,7 +119,7 @@ - + @@ -126,7 +127,7 @@ - + @@ -134,8 +135,8 @@ - + @@ -143,7 +144,7 @@ - + @@ -151,7 +152,7 @@ - + @@ -159,7 +160,7 @@ - + @@ -167,7 +168,7 @@ - + @@ -175,7 +176,7 @@ - + @@ -183,7 +184,7 @@ - + @@ -191,7 +192,7 @@ - + @@ -199,7 +200,7 @@ - + @@ -207,7 +208,7 @@ - + @@ -215,7 +216,7 @@ - + @@ -223,7 +224,7 @@ - + @@ -231,9 +232,9 @@ - + - + From 491dd065180edcd5e5dd49d5da7753d59806f4e3 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 14 Mar 2012 05:34:57 +0000 Subject: [PATCH 165/292] add editor config for conf/lang/ XML files --- conf/lang/de/de.xml | 11 +++++++++++ conf/lang/de/demo/demo.xml | 11 +++++++++++ conf/lang/de/vm/sounds.xml | 11 +++++++++++ conf/lang/de/vm/tts.xml | 11 +++++++++++ conf/lang/en/demo/demo-ivr.xml | 11 +++++++++++ conf/lang/en/demo/demo.xml | 11 +++++++++++ conf/lang/en/dir/sounds.xml | 11 +++++++++++ conf/lang/en/dir/tts.xml | 11 +++++++++++ conf/lang/en/en.xml | 11 +++++++++++ conf/lang/en/ivr/sounds.xml | 11 +++++++++++ conf/lang/en/vm/sounds.xml | 11 +++++++++++ conf/lang/en/vm/tts.xml | 11 +++++++++++ conf/lang/en/vm/voicemail_ivr.xml | 11 +++++++++++ conf/lang/fr/demo/demo.xml | 11 +++++++++++ conf/lang/fr/dir/sounds.xml | 11 +++++++++++ conf/lang/fr/dir/tts.xml | 11 +++++++++++ conf/lang/fr/fr.xml | 11 +++++++++++ conf/lang/fr/vm/sounds.xml | 11 +++++++++++ conf/lang/he/demo/demo-ivr.xml | 11 +++++++++++ conf/lang/he/demo/demo.xml | 11 +++++++++++ conf/lang/he/dir/sounds.xml | 11 +++++++++++ conf/lang/he/he.xml | 11 +++++++++++ conf/lang/he/vm/sounds.xml | 11 +++++++++++ conf/lang/ru/demo/demo-ivr.xml | 11 +++++++++++ conf/lang/ru/demo/demo.xml | 11 +++++++++++ conf/lang/ru/dir/sounds.xml | 11 +++++++++++ conf/lang/ru/dir/tts.xml | 11 +++++++++++ conf/lang/ru/ru.xml | 11 +++++++++++ conf/lang/ru/vm/sounds.xml | 11 +++++++++++ conf/lang/ru/vm/tts.xml | 11 +++++++++++ 30 files changed, 330 insertions(+) diff --git a/conf/lang/de/de.xml b/conf/lang/de/de.xml index 1b44c9a1dd..a7dbab0c0c 100644 --- a/conf/lang/de/de.xml +++ b/conf/lang/de/de.xml @@ -9,3 +9,14 @@ + diff --git a/conf/lang/de/demo/demo.xml b/conf/lang/de/demo/demo.xml index 4786ac69c3..fa77948b65 100644 --- a/conf/lang/de/demo/demo.xml +++ b/conf/lang/de/demo/demo.xml @@ -69,3 +69,14 @@ + diff --git a/conf/lang/de/vm/sounds.xml b/conf/lang/de/vm/sounds.xml index 0ba3d79a85..657e611c20 100644 --- a/conf/lang/de/vm/sounds.xml +++ b/conf/lang/de/vm/sounds.xml @@ -400,3 +400,14 @@ + diff --git a/conf/lang/de/vm/tts.xml b/conf/lang/de/vm/tts.xml index 5395d4adf0..f91cae1b99 100644 --- a/conf/lang/de/vm/tts.xml +++ b/conf/lang/de/vm/tts.xml @@ -211,3 +211,14 @@ + diff --git a/conf/lang/en/demo/demo-ivr.xml b/conf/lang/en/demo/demo-ivr.xml index 99f4932f21..98f155a265 100644 --- a/conf/lang/en/demo/demo-ivr.xml +++ b/conf/lang/en/demo/demo-ivr.xml @@ -143,3 +143,14 @@ + diff --git a/conf/lang/en/demo/demo.xml b/conf/lang/en/demo/demo.xml index 76139e5859..bcfe6a8227 100644 --- a/conf/lang/en/demo/demo.xml +++ b/conf/lang/en/demo/demo.xml @@ -69,3 +69,14 @@ + diff --git a/conf/lang/en/dir/sounds.xml b/conf/lang/en/dir/sounds.xml index fc288ff622..b715a7f825 100644 --- a/conf/lang/en/dir/sounds.xml +++ b/conf/lang/en/dir/sounds.xml @@ -117,3 +117,14 @@ + diff --git a/conf/lang/en/dir/tts.xml b/conf/lang/en/dir/tts.xml index 84007b7d52..d5f112dcda 100644 --- a/conf/lang/en/dir/tts.xml +++ b/conf/lang/en/dir/tts.xml @@ -93,3 +93,14 @@ + diff --git a/conf/lang/en/en.xml b/conf/lang/en/en.xml index 3696dcca58..3d27bce17b 100644 --- a/conf/lang/en/en.xml +++ b/conf/lang/en/en.xml @@ -12,3 +12,14 @@ + diff --git a/conf/lang/en/ivr/sounds.xml b/conf/lang/en/ivr/sounds.xml index 5a25fc1238..5e8b2a1a05 100644 --- a/conf/lang/en/ivr/sounds.xml +++ b/conf/lang/en/ivr/sounds.xml @@ -132,3 +132,14 @@ + diff --git a/conf/lang/en/vm/sounds.xml b/conf/lang/en/vm/sounds.xml index dd1e0b97f4..ff8844ae97 100644 --- a/conf/lang/en/vm/sounds.xml +++ b/conf/lang/en/vm/sounds.xml @@ -428,3 +428,14 @@ + diff --git a/conf/lang/en/vm/tts.xml b/conf/lang/en/vm/tts.xml index 9a8b6a0e35..2de4b3781e 100644 --- a/conf/lang/en/vm/tts.xml +++ b/conf/lang/en/vm/tts.xml @@ -236,3 +236,14 @@ + diff --git a/conf/lang/en/vm/voicemail_ivr.xml b/conf/lang/en/vm/voicemail_ivr.xml index 2ff2034164..590026a29d 100644 --- a/conf/lang/en/vm/voicemail_ivr.xml +++ b/conf/lang/en/vm/voicemail_ivr.xml @@ -395,3 +395,14 @@ + diff --git a/conf/lang/fr/demo/demo.xml b/conf/lang/fr/demo/demo.xml index 36ac98c06a..0d0de592ac 100644 --- a/conf/lang/fr/demo/demo.xml +++ b/conf/lang/fr/demo/demo.xml @@ -16,3 +16,14 @@ + diff --git a/conf/lang/fr/dir/sounds.xml b/conf/lang/fr/dir/sounds.xml index 37d2d0b048..a0dcb2c0e9 100644 --- a/conf/lang/fr/dir/sounds.xml +++ b/conf/lang/fr/dir/sounds.xml @@ -117,3 +117,14 @@ + diff --git a/conf/lang/fr/dir/tts.xml b/conf/lang/fr/dir/tts.xml index 58668f00c0..7d3e5e3090 100644 --- a/conf/lang/fr/dir/tts.xml +++ b/conf/lang/fr/dir/tts.xml @@ -97,3 +97,14 @@ + diff --git a/conf/lang/fr/fr.xml b/conf/lang/fr/fr.xml index acdf4f2591..124ca02415 100644 --- a/conf/lang/fr/fr.xml +++ b/conf/lang/fr/fr.xml @@ -10,3 +10,14 @@ + diff --git a/conf/lang/fr/vm/sounds.xml b/conf/lang/fr/vm/sounds.xml index 2d52b5ae44..9cd209eab1 100644 --- a/conf/lang/fr/vm/sounds.xml +++ b/conf/lang/fr/vm/sounds.xml @@ -242,3 +242,14 @@ + diff --git a/conf/lang/he/demo/demo-ivr.xml b/conf/lang/he/demo/demo-ivr.xml index b7b829dde0..df8d24b751 100644 --- a/conf/lang/he/demo/demo-ivr.xml +++ b/conf/lang/he/demo/demo-ivr.xml @@ -144,3 +144,14 @@ + diff --git a/conf/lang/he/demo/demo.xml b/conf/lang/he/demo/demo.xml index 76139e5859..bcfe6a8227 100644 --- a/conf/lang/he/demo/demo.xml +++ b/conf/lang/he/demo/demo.xml @@ -69,3 +69,14 @@ + diff --git a/conf/lang/he/dir/sounds.xml b/conf/lang/he/dir/sounds.xml index 4dc44d0054..5fd13fffc5 100644 --- a/conf/lang/he/dir/sounds.xml +++ b/conf/lang/he/dir/sounds.xml @@ -117,3 +117,14 @@ + diff --git a/conf/lang/he/he.xml b/conf/lang/he/he.xml index fe7c5d8a01..7cca73c1e8 100644 --- a/conf/lang/he/he.xml +++ b/conf/lang/he/he.xml @@ -9,3 +9,14 @@ + diff --git a/conf/lang/he/vm/sounds.xml b/conf/lang/he/vm/sounds.xml index e52fa8691f..917c84b038 100644 --- a/conf/lang/he/vm/sounds.xml +++ b/conf/lang/he/vm/sounds.xml @@ -404,3 +404,14 @@ + diff --git a/conf/lang/ru/demo/demo-ivr.xml b/conf/lang/ru/demo/demo-ivr.xml index 5aed33b9ec..7de0d7fd0d 100644 --- a/conf/lang/ru/demo/demo-ivr.xml +++ b/conf/lang/ru/demo/demo-ivr.xml @@ -141,3 +141,14 @@ + diff --git a/conf/lang/ru/demo/demo.xml b/conf/lang/ru/demo/demo.xml index dcc65761dd..10c9dbc552 100644 --- a/conf/lang/ru/demo/demo.xml +++ b/conf/lang/ru/demo/demo.xml @@ -96,3 +96,14 @@ + diff --git a/conf/lang/ru/dir/sounds.xml b/conf/lang/ru/dir/sounds.xml index 37d2d0b048..a0dcb2c0e9 100644 --- a/conf/lang/ru/dir/sounds.xml +++ b/conf/lang/ru/dir/sounds.xml @@ -117,3 +117,14 @@ + diff --git a/conf/lang/ru/dir/tts.xml b/conf/lang/ru/dir/tts.xml index ce41c8a0a7..f0aafa267d 100644 --- a/conf/lang/ru/dir/tts.xml +++ b/conf/lang/ru/dir/tts.xml @@ -92,3 +92,14 @@ + diff --git a/conf/lang/ru/ru.xml b/conf/lang/ru/ru.xml index a32d5d6058..5f52e768a4 100644 --- a/conf/lang/ru/ru.xml +++ b/conf/lang/ru/ru.xml @@ -10,3 +10,14 @@ + diff --git a/conf/lang/ru/vm/sounds.xml b/conf/lang/ru/vm/sounds.xml index b5387dfeb1..2ee9e6ec58 100644 --- a/conf/lang/ru/vm/sounds.xml +++ b/conf/lang/ru/vm/sounds.xml @@ -361,3 +361,14 @@ + diff --git a/conf/lang/ru/vm/tts.xml b/conf/lang/ru/vm/tts.xml index 94b2fa287d..63dec3572c 100644 --- a/conf/lang/ru/vm/tts.xml +++ b/conf/lang/ru/vm/tts.xml @@ -238,3 +238,14 @@ + From 0da2a5f4480559b0c7e9ad3f382fabe3bd483a44 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 30 Mar 2010 19:16:19 +0000 Subject: [PATCH 166/292] drop legacy Subversion build support Nothing here would work as we no longer have a live subversion repository. --- Makefile.am | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/Makefile.am b/Makefile.am index a9193c99fa..9765a2fec5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -415,13 +415,6 @@ src/include/switch_version.h: src/include/switch_version.h.in .version $(libfree else \ version="git-$$version" ; \ fi ;\ - else \ - version=`svnversion . -n || echo hacked` ; \ - if [ "x$$version" = "xhacked" ] ; then \ - version="hacked-`date -u +%Y%m%dT%H%M%SZ`" ; \ - else \ - version="svn-$$version" ; \ - fi ;\ fi ; \ oldversion=`cat .version 2>/dev/null || echo "0"` ; \ if test "$$oldversion" != "$$version" || test $$force = 1 ; then \ @@ -497,7 +490,7 @@ samples-conf: samples-htdocs: test -d $(DESTDIR)$(htdocsdir) || $(mkinstalldirs) $(DESTDIR)$(htdocsdir) - for htdocsfile in `cd $(switch_srcdir)/htdocs && find . -type f -name \* | grep -v .svn | sed -e 's|^\.||' ` ; do \ + for htdocsfile in `cd $(switch_srcdir)/htdocs && find . -type f -name \* | sed -e 's|^\.||` ; do \ dir=`echo $$htdocsfile | sed -e 's|/[^/]*$$||'`; \ filename=`echo $$htdocsfile | sed -e 's|^.*/||'`; \ test -d $(DESTDIR)$(htdocsdir)$$dir || $(mkinstalldirs) $(DESTDIR)$(htdocsdir)$$dir ; \ @@ -518,29 +511,23 @@ install-data-local: test -d $(DESTDIR)$(htdocsdir) || $(MAKE) samples-htdocs is-scm: - @if [ ! -d .svn -a ! -d .git ] ; then \ + @if [ ! -d .git ] ; then \ echo ; echo ; \ echo "*****************************************************************************************************" ; \ - echo "You can not update a release tarball or without a git or svn working copy please clone our git tree: " ; \ - echo "git clone git://git.freeswitch.org/freeswitch.git " ; \ - echo "or check out our read only svn mirror: " ; \ - echo "svn checkout http://svn.freeswitch.org/svn/freeswitch/trunk " ; \ + echo "You cannot update a release tarball without a git tree. Please clone FreeSWITCH as so: " ; \ + echo " git clone git://git.freeswitch.org/freeswitch.git " ; \ echo "*****************************************************************************************************" ; \ echo ; echo ; \ exit 1; \ fi update: is-scm - @if test -d .svn ; then \ - test ! -f .version || rm -f .version ; \ - echo Updating... ; \ - svn update ; \ - elif test -d .git ; then \ + @if test -d .git ; then \ test ! -f .version || rm -f .version ; \ echo "Pulling updates..." ; \ git pull ; \ else \ - echo "This source directory is not a git tree or svn working copy" ; \ + echo "This source directory is not a git tree." ; \ fi .nodepends: From e8fbaa77a45bc0cf93b56d3f8bc7c5de0dc46119 Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Wed, 14 Mar 2012 09:26:32 -0500 Subject: [PATCH 167/292] FS-3997 --resolve --- libs/win32/Download FLITE.2010.vcxproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/win32/Download FLITE.2010.vcxproj b/libs/win32/Download FLITE.2010.vcxproj index bb63d1f00b..ca1f31338f 100644 --- a/libs/win32/Download FLITE.2010.vcxproj +++ b/libs/win32/Download FLITE.2010.vcxproj @@ -71,7 +71,7 @@ if exist "$(ProjectDir)..\flite-1.5.4-current" move "$(ProjectDir)..\flite-1.5.4 $(ProjectDir)..\flite-1.5.4;%(Outputs) Downloading Flite. - if not exist "$(ProjectDir)..\flite-1.5.4" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/flite-1.5.4-current.tar.bz2 "$(ProjectDir).." + if not exist "$(ProjectDir)..\flite-1.5.4" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/flite-1.5.4-current.tar.bz2 "$(ProjectDir).." if exist "$(ProjectDir)..\flite-1.5.4-current" move "$(ProjectDir)..\flite-1.5.4-current" "$(ProjectDir)..\flite-1.5.4" $(ProjectDir)..\flite-1.5.4;%(Outputs) From 8c794acbccda4d475170c1def6d3e0cd859b4699 Mon Sep 17 00:00:00 2001 From: Steven Ayre Date: Wed, 14 Mar 2012 15:05:03 +0000 Subject: [PATCH 168/292] FS-3999 --resolve mod_event_socket: add IPv6 support Signed-off-by: Travis Cross --- .../event_handlers/mod_event_socket/mod_event_socket.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c index edfd291501..e90d174966 100644 --- a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c +++ b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c @@ -428,7 +428,7 @@ SWITCH_STANDARD_APP(socket_function) return; } - if ((port_name = strchr(host, ':'))) { + if ((port_name = strrchr(host, ':'))) { *port_name++ = '\0'; port = (switch_port_t) atoi(port_name); } @@ -440,12 +440,12 @@ SWITCH_STANDARD_APP(socket_function) switch_channel_set_variable(channel, "socket_host", host); - if (switch_sockaddr_info_get(&sa, host, AF_INET, port, 0, switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) { + if (switch_sockaddr_info_get(&sa, host, SWITCH_UNSPEC, port, 0, switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Socket Error!\n"); return; } - if (switch_socket_create(&new_sock, AF_INET, SOCK_STREAM, SWITCH_PROTO_TCP, switch_core_session_get_pool(session)) + if (switch_socket_create(&new_sock, switch_sockaddr_get_family(sa), SOCK_STREAM, SWITCH_PROTO_TCP, switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Socket Error!\n"); return; @@ -2766,7 +2766,7 @@ SWITCH_MODULE_RUNTIME_FUNCTION(mod_event_socket_runtime) config(); while (!prefs.done) { - rv = switch_sockaddr_info_get(&sa, prefs.ip, SWITCH_INET, prefs.port, 0, pool); + rv = switch_sockaddr_info_get(&sa, prefs.ip, SWITCH_UNSPEC, prefs.port, 0, pool); if (rv) goto fail; rv = switch_socket_create(&listen_list.sock, switch_sockaddr_get_family(sa), SOCK_STREAM, SWITCH_PROTO_TCP, pool); From 427668018122b648476c32b48e26a24e04ba68b7 Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Wed, 14 Mar 2012 10:05:46 -0500 Subject: [PATCH 169/292] FS-3782 --resolve soft timer --- src/include/private/switch_core_pvt.h | 1 + .../applications/mod_commands/mod_commands.c | 15 +- src/switch_time.c | 185 ++++++++++++++---- 3 files changed, 151 insertions(+), 50 deletions(-) diff --git a/src/include/private/switch_core_pvt.h b/src/include/private/switch_core_pvt.h index ff0a6189b9..68376c273c 100644 --- a/src/include/private/switch_core_pvt.h +++ b/src/include/private/switch_core_pvt.h @@ -260,6 +260,7 @@ struct switch_runtime { uint32_t max_db_handles; uint32_t db_handle_timeout; int cpu_count; + uint32_t time_sync; }; extern struct switch_runtime runtime; diff --git a/src/mod/applications/mod_commands/mod_commands.c b/src/mod/applications/mod_commands/mod_commands.c index 41db0f191b..3e34f0a80d 100644 --- a/src/mod/applications/mod_commands/mod_commands.c +++ b/src/mod/applications/mod_commands/mod_commands.c @@ -546,24 +546,19 @@ SWITCH_STANDARD_API(timer_test_function) goto end; } - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Timer Test: samplecount after init: %d\n", timer.samplecount); + switch_core_timer_next(&timer); /* Step timer once before testing results below, to get first timestamp as accurate as possible */ - /* Step timer once before testing results below, to get first timestamp as accurate as possible */ - switch_core_timer_next(&timer); + start = then = switch_time_ref(); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Timer Test: samplecount after first step: %d\n", timer.samplecount); - - start = switch_time_ref(); for (x = 1; x <= max; x++) { - then = switch_time_ref(); switch_core_timer_next(&timer); now = switch_time_ref(); diff = (int) (now - then); - //stream->write_function(stream, "test %d sleep %ld %d\n", x, mss, diff); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Timer Test: %d sleep %d %d\n", x, mss, diff); total += diff; + then = now; + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Timer Test: %d sleep %d %d\n", x, mss, diff); } - end = switch_time_ref(); + end = then; switch_yield(250000); diff --git a/src/switch_time.c b/src/switch_time.c index 2f111efa26..7199edf9cc 100644 --- a/src/switch_time.c +++ b/src/switch_time.c @@ -59,9 +59,10 @@ #define MAX_ELEMENTS 3600 #define IDLE_SPEED 100 -/* In Windows, enable the montonic timer for better timer accuracy on Windows 2003 Server, XP and older */ -/* GetSystemTimeAsFileTime does not update on timeBeginPeriod on these OS. */ -/* Flag SCF_USE_WIN32_MONOTONIC must be enabled to activate it (start parameter -monotonic-clock) */ +/* In Windows, enable the montonic timer for better timer accuracy, + * GetSystemTimeAsFileTime does not update on timeBeginPeriod on these OS. + * Flag SCF_USE_WIN32_MONOTONIC must be enabled to activate it (start parameter -monotonic-clock). + */ #if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_MONOTONIC) static int MONO = 1; @@ -91,9 +92,12 @@ static int COND = 1; static int MATRIX = 1; #ifdef WIN32 +static CRITICAL_SECTION timer_section; static switch_time_t win32_tick_time_since_start = -1; static DWORD win32_last_get_time_tick = 0; -CRITICAL_SECTION timer_section; + +static uint8_t win32_use_qpc = 0; +static uint64_t win32_qpc_freq = 0; #endif static switch_memory_pool_t *module_pool = NULL; @@ -321,7 +325,7 @@ SWITCH_DECLARE(time_t) switch_epoch_time_now(time_t *t) SWITCH_DECLARE(void) switch_time_set_monotonic(switch_bool_t enable) { -#if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_MONOTONIC) +#if (defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_MONOTONIC)) || defined(WIN32) MONO = enable ? 1 : 0; switch_time_sync(); #else @@ -375,24 +379,32 @@ static switch_time_t time_now(int64_t offset) clock_gettime(CLOCK_MONOTONIC, &ts); now = ts.tv_sec * APR_USEC_PER_SEC + (ts.tv_nsec / 1000) + offset; #else - DWORD tick_now; - DWORD tick_diff; - - tick_now = timeGetTime(); - if (win32_tick_time_since_start != -1) { - EnterCriticalSection(&timer_section); - /* just add diff (to make it work more than 50 days). */ - tick_diff = tick_now - win32_last_get_time_tick; - win32_tick_time_since_start += tick_diff; - - win32_last_get_time_tick = tick_now; - now = (win32_tick_time_since_start * 1000) + offset; - LeaveCriticalSection(&timer_section); + if (win32_use_qpc) { + /* Use QueryPerformanceCounter */ + uint64_t count = 0; + QueryPerformanceCounter((LARGE_INTEGER*)&count); + now = ((count * 1000000) / win32_qpc_freq) + offset; } else { - /* If someone is calling us before timer is initialized, - * return the current tick + offset - */ - now = (tick_now * 1000) + offset; + /* Use good old timeGetTime() */ + DWORD tick_now; + DWORD tick_diff; + + tick_now = timeGetTime(); + if (win32_tick_time_since_start != -1) { + EnterCriticalSection(&timer_section); + /* just add diff (to make it work more than 50 days). */ + tick_diff = tick_now - win32_last_get_time_tick; + win32_tick_time_since_start += tick_diff; + + win32_last_get_time_tick = tick_now; + now = (win32_tick_time_since_start * 1000) + offset; + LeaveCriticalSection(&timer_section); + } else { + /* If someone is calling us before timer is initialized, + * return the current tick + offset + */ + now = (tick_now * 1000) + offset; + } } #endif } else { @@ -415,6 +427,8 @@ static switch_time_t last_time = 0; SWITCH_DECLARE(void) switch_time_sync(void) { + runtime.time_sync++; /* Indicate that we are syncing time right now */ + runtime.reference = switch_time_now(); runtime.offset = runtime.reference - time_now(0); @@ -423,6 +437,8 @@ SWITCH_DECLARE(void) switch_time_sync(void) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Clock synchronized to system time.\n"); } last_time = runtime.reference; + + runtime.time_sync++; /* Indicate that we are finished syncing time */ } SWITCH_DECLARE(void) switch_micro_sleep(switch_interval_time_t t) @@ -546,6 +562,7 @@ static switch_status_t timer_init(switch_timer_t *timer) #define check_roll() if (private_info->roll < TIMER_MATRIX[timer->interval].roll) { \ private_info->roll++; \ private_info->reference = private_info->start = TIMER_MATRIX[timer->interval].tick; \ + private_info->start--; /* Must have a diff */ \ } \ @@ -562,7 +579,7 @@ static switch_status_t timer_step(switch_timer_t *timer) samples = timer->samples * (private_info->reference - private_info->start); if (samples > UINT32_MAX) { - private_info->start = private_info->reference; + private_info->start = private_info->reference - 1; /* Must have a diff */ samples = timer->samples; } @@ -691,6 +708,55 @@ static switch_status_t timer_destroy(switch_timer_t *timer) return SWITCH_STATUS_SUCCESS; } +static void win32_init_timers(void) +{ +#ifdef WIN32 + OSVERSIONINFOEX version_info; /* Used to fetch current OS version from Windows */ + + EnterCriticalSection(&timer_section); + + ZeroMemory(&version_info, sizeof(OSVERSIONINFOEX)); + version_info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); + + /* Check if we should use timeGetTime() (pre-Vista) or QueryPerformanceCounter() (Vista and later) */ + + if (GetVersionEx((OSVERSIONINFO*) &version_info)) { + if (version_info.dwPlatformId == VER_PLATFORM_WIN32_NT && version_info.dwMajorVersion >= 6) { + if (QueryPerformanceFrequency((LARGE_INTEGER*)&win32_qpc_freq) && win32_qpc_freq > 0) { + /* At least Vista, and QueryPerformanceFrequency() suceeded, enable qpc */ + win32_use_qpc = 1; + } else { + /* At least Vista, but QueryPerformanceFrequency() failed, disable qpc */ + win32_use_qpc = 0; + } + } else { + /* Older then Vista, disable qpc */ + win32_use_qpc = 0; + } + } else { + /* Unknown version - we want at least Vista, disable qpc */ + win32_use_qpc = 0; + } + + if (win32_use_qpc) { + uint64_t count = 0; + + if (!QueryPerformanceCounter((LARGE_INTEGER*)&count) || count == 0) { + /* Call to QueryPerformanceCounter() failed, disable qpc again */ + win32_use_qpc = 0; + } + } + + if (!win32_use_qpc) { + /* This will enable timeGetTime() instead, qpc init failed */ + win32_last_get_time_tick = timeGetTime(); + win32_tick_time_since_start = win32_last_get_time_tick; + } + + LeaveCriticalSection(&timer_section); +#endif +} + SWITCH_MODULE_RUNTIME_FUNCTION(softtimer_runtime) { switch_time_t too_late = runtime.microseconds_per_tick * 1000; @@ -700,6 +766,7 @@ SWITCH_MODULE_RUNTIME_FUNCTION(softtimer_runtime) int fwd_errs = 0, rev_errs = 0; int profile_tick = 0; int tfd = -1; + uint32_t time_sync = runtime.time_sync; #ifdef HAVE_TIMERFD_CREATE int last_MICROSECONDS_PER_TICK = runtime.microseconds_per_tick; @@ -738,6 +805,7 @@ SWITCH_MODULE_RUNTIME_FUNCTION(softtimer_runtime) #endif switch_time_sync(); + time_sync = runtime.time_sync; globals.STARTED = globals.RUNNING = 1; switch_mutex_lock(runtime.throttle_mutex); @@ -775,6 +843,7 @@ SWITCH_MODULE_RUNTIME_FUNCTION(softtimer_runtime) switch_time_sync(); + time_sync = runtime.time_sync; globals.use_cond_yield = COND; globals.RUNNING = 1; @@ -795,8 +864,12 @@ SWITCH_MODULE_RUNTIME_FUNCTION(softtimer_runtime) while (((ts = time_now(runtime.offset)) + 100) < runtime.reference) { if (ts < last) { if (MONO) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Virtual Migration Detected! Syncing Clock\n"); - switch_time_sync(); + if (time_sync == runtime.time_sync) { /* Only resync if not in the middle of switch_time_sync() already */ + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Virtual Migration Detected! Syncing Clock\n"); + win32_init_timers(); /* Make sure to reinit timers on WIN32 */ + switch_time_sync(); + time_sync = runtime.time_sync; + } } else { int64_t diff = (int64_t) (ts - last); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Reverse Clock Skew Detected!\n"); @@ -807,9 +880,10 @@ SWITCH_MODULE_RUNTIME_FUNCTION(softtimer_runtime) rev_errs++; } - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, - "If you see this message many times try setting the param enable-clock-nanosleep to true in switch.conf.xml or consider a nicer machine to run me on. I AM *FREE* afterall.\n"); - + if (!MONO || time_sync == runtime.time_sync) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, + "If you see this message many times try setting the param enable-clock-nanosleep to true in switch.conf.xml or consider a nicer machine to run me on. I AM *FREE* afterall.\n"); + } } else { rev_errs = 0; } @@ -823,7 +897,19 @@ SWITCH_MODULE_RUNTIME_FUNCTION(softtimer_runtime) r = read(tfd, &exp, sizeof(exp)); r++; } else { - do_sleep(runtime.microseconds_per_tick); + switch_time_t timediff = runtime.reference - ts; + + if (runtime.microseconds_per_tick < timediff) { + /* Only sleep for runtime.microseconds_per_tick if this value is lower then the actual time diff we need to sleep */ + do_sleep(runtime.microseconds_per_tick); + } else { +#ifdef WIN32 + /* Windows only sleeps in ms precision, try to round the usec value as good as possible */ + do_sleep((switch_interval_time_t)floor((timediff / 1000.0) + 0.5) * 1000); +#else + do_sleep(timediff); +#endif + } } } @@ -832,13 +918,15 @@ SWITCH_MODULE_RUNTIME_FUNCTION(softtimer_runtime) if (ts > (runtime.reference + too_late)) { if (MONO) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Virtual Migration Detected! Syncing Clock\n"); - switch_time_sync(); + if (time_sync == runtime.time_sync) { /* Only resync if not in the middle of switch_time_sync() already */ + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Virtual Migration Detected! Syncing Clock\n"); + win32_init_timers(); /* Make sure to reinit timers on WIN32 */ + switch_time_sync(); + time_sync = runtime.time_sync; + } } else { switch_time_t diff = ts - runtime.reference - runtime.microseconds_per_tick; -#ifndef WIN32 switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Forward Clock Skew Detected!\n"); -#endif fwd_errs++; runtime.reference = switch_time_now(); current_ms = 0; @@ -852,6 +940,7 @@ SWITCH_MODULE_RUNTIME_FUNCTION(softtimer_runtime) if (fwd_errs > 9 || rev_errs > 9) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Auto Re-Syncing clock.\n"); switch_time_sync(); + time_sync = runtime.time_sync; fwd_errs = rev_errs = 0; } @@ -859,6 +948,10 @@ SWITCH_MODULE_RUNTIME_FUNCTION(softtimer_runtime) current_ms += (runtime.microseconds_per_tick / 1000); tick += (runtime.microseconds_per_tick / 1000); + if (time_sync < runtime.time_sync) { + time_sync++; /* Only step once for each loop, we want to make sure to keep this thread safe */ + } + if (tick >= (1000000 / runtime.microseconds_per_tick)) { if (++profile_tick == 1) { switch_get_system_idle_time(runtime.profile_timer, &runtime.profile_time); @@ -1117,11 +1210,12 @@ SWITCH_MODULE_LOAD_FUNCTION(softtimer_load) switch_timer_interface_t *timer_interface; module_pool = pool; -#if defined(WIN32) +#ifdef WIN32 timeBeginPeriod(1); + InitializeCriticalSection(&timer_section); - win32_last_get_time_tick = timeGetTime(); - win32_tick_time_since_start = win32_last_get_time_tick; + + win32_init_timers(); /* Init timers for Windows, if we should use timeGetTime() or QueryPerformanceCounters() */ #endif memset(&globals, 0, sizeof(globals)); @@ -1155,6 +1249,21 @@ SWITCH_MODULE_LOAD_FUNCTION(softtimer_load) switch_clear_flag((&runtime), SCF_CALIBRATE_CLOCK); } +#ifdef WIN32 + if (switch_test_flag((&runtime), SCF_USE_WIN32_MONOTONIC)) { + MONO = 1; + + if (win32_use_qpc) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Enabled Windows monotonic clock, using QueryPerformanceCounter()\n"); + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Enabled Windows monotonic clock, using timeGetTime()\n"); + } + } + + /* No need to calibrate clock in Win32, we will only sleep ms anyway, it's just not accurate enough */ + switch_clear_flag((&runtime), SCF_CALIBRATE_CLOCK); +#endif + if (switch_test_flag((&runtime), SCF_CALIBRATE_CLOCK)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Calibrating timer, please wait...\n"); switch_time_calibrate_clock(); @@ -1162,10 +1271,6 @@ SWITCH_MODULE_LOAD_FUNCTION(softtimer_load) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Clock calibration disabled.\n"); } - if (switch_test_flag((&runtime), SCF_USE_WIN32_MONOTONIC)) { - MONO = 1; - } - /* indicate that the module should continue to be loaded */ return SWITCH_STATUS_SUCCESS; } From d8d4d2086e3798da2e0a3704b9625f4fe86f6973 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 14 Mar 2012 19:00:26 +0000 Subject: [PATCH 170/292] whitespace cleanup --- docs/phrase/phrase_en.xml | 75 +++++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 35 deletions(-) diff --git a/docs/phrase/phrase_en.xml b/docs/phrase/phrase_en.xml index 589a218549..f9b2a3e221 100644 --- a/docs/phrase/phrase_en.xml +++ b/docs/phrase/phrase_en.xml @@ -241,13 +241,13 @@ - - - - - - - + + + + + + + @@ -303,10 +303,10 @@ - - - - + + + + @@ -505,28 +505,28 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + @@ -547,8 +547,8 @@ - - + + @@ -1084,8 +1084,13 @@ From b186944049ed66a7cc3cbb1b76f56a75d8fa133f Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 14 Mar 2012 20:31:34 +0000 Subject: [PATCH 171/292] FS-4004 --resolve Thanks to Kyle A. King for pointing this out and to William King for collaboration. --- src/switch_loadable_module.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/switch_loadable_module.c b/src/switch_loadable_module.c index 36cc24b282..9474fee9b0 100644 --- a/src/switch_loadable_module.c +++ b/src/switch_loadable_module.c @@ -1270,6 +1270,11 @@ static switch_status_t switch_loadable_module_load_file(char *path, char *filena break; } + if (!module_interface) { + err = "Module failed to initialize its module_interface. Is this a valid module?"; + break; + } + if ((module = switch_core_alloc(pool, sizeof(switch_loadable_module_t))) == 0) { err = "Could not allocate memory\n"; abort(); From badd59bc37b7d899430ef92ec7691d24c184b2fa Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 14 Mar 2012 21:40:37 +0000 Subject: [PATCH 172/292] FS-3990 --resolve rework file type checking in getlib routine Luke Weber reports that OS X's sed utility is broken. --- build/getlib.sh.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/getlib.sh.in b/build/getlib.sh.in index a123483a5a..bbfe696f79 100755 --- a/build/getlib.sh.in +++ b/build/getlib.sh.in @@ -23,7 +23,7 @@ fi uncompressed=`echo $tarfile | sed 's/\(\(\.tar\.gz\|\.tar\.bz2\|\.tar\.xz\)\|\(\.tgz\|\.tbz2\)\)$//'` -case `echo $tarfile | sed 's/.*\.\([^.]\+\)$/\1/'` in +case `echo $tarfile | sed 's/^.*\.//'` in bz2|tbz2) UNZIPPER=$BZIP ;; xz) UNZIPPER=$XZ ;; gz|tgz|*) UNZIPPER=$ZCAT ;; From 842203f78fe0b8af26f7a6b3a81e9281f4bb3fad Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Wed, 14 Mar 2012 22:44:56 -0500 Subject: [PATCH 173/292] FS-3987 --resolve --- src/mod/applications/mod_easyroute/mod_easyroute.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mod/applications/mod_easyroute/mod_easyroute.c b/src/mod/applications/mod_easyroute/mod_easyroute.c index cc6d6121f8..c4a017d3db 100644 --- a/src/mod/applications/mod_easyroute/mod_easyroute.c +++ b/src/mod/applications/mod_easyroute/mod_easyroute.c @@ -43,7 +43,7 @@ typedef struct easyroute_results { char dialstring[256]; char group[16]; char acctcode[17]; - char translated[17]; + char translated[61]; } easyroute_results_t; @@ -53,7 +53,7 @@ typedef struct route_callback { char techprofile[129]; char limit[129]; char acctcode[129]; - char translated[17]; + char translated[61]; } route_callback_t; static struct { @@ -88,7 +88,7 @@ static int route_callback(void *pArg, int argc, char **argv, char **columnNames) switch_copy_string(cbt->limit, argv[2], 128); switch_copy_string(cbt->techprofile, argv[3], 128); switch_copy_string(cbt->acctcode, argv[4], 128); - switch_copy_string(cbt->translated, argv[5], 16); + switch_copy_string(cbt->translated, argv[5], 60); return 0; } From 9bf2726e1b9e4996d8d10186b27081091e61bd9a Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Wed, 14 Mar 2012 23:26:09 -0500 Subject: [PATCH 174/292] FS-3950 --resolve nibblebill changes! --- .../mod_nibblebill/mod_nibblebill.c | 115 +++++++++++------- 1 file changed, 73 insertions(+), 42 deletions(-) diff --git a/src/mod/applications/mod_nibblebill/mod_nibblebill.c b/src/mod/applications/mod_nibblebill/mod_nibblebill.c index cb9942e985..eca9f621c9 100755 --- a/src/mod/applications/mod_nibblebill/mod_nibblebill.c +++ b/src/mod/applications/mod_nibblebill/mod_nibblebill.c @@ -52,19 +52,20 @@ typedef struct { switch_time_t lastts; /* Last time we did any billing */ - float total; /* Total amount billed so far */ + double total; /* Total amount billed so far */ switch_time_t pausets; /* Timestamp of when a pause action started. 0 if not paused */ - float bill_adjustments; /* Adjustments to make to the next billing, based on pause/resume events */ + double bill_adjustments; /* Adjustments to make to the next billing, based on pause/resume events */ + int lowbal_action_executed; /* Set to 1 once lowbal_action has been executed */ } nibble_data_t; typedef struct nibblebill_results { - float balance; + double balance; - float percall_max; /* Overrides global on a per-user level */ - float lowbal_amt; /* ditto */ + double percall_max; /* Overrides global on a per-user level */ + double lowbal_amt; /* ditto */ } nibblebill_results_t; @@ -80,11 +81,11 @@ static struct { switch_mutex_t *mutex; /* Global billing config options */ - float percall_max_amt; /* Per-call billing limit (safety check, for fraud) */ + double percall_max_amt; /* Per-call billing limit (safety check, for fraud) */ char *percall_action; /* Exceeded length of per-call action */ - float lowbal_amt; /* When we warn them they are near depletion */ + double lowbal_amt; /* When we warn them they are near depletion */ char *lowbal_action; /* Low balance action */ - float nobal_amt; /* Minimum amount that must remain in the account */ + double nobal_amt; /* Minimum amount that must remain in the account */ char *nobal_action; /* Drop action */ /* Other options */ @@ -136,7 +137,7 @@ static int nibblebill_callback(void *pArg, int argc, char **argv, char **columnN for (i = 0; i < argc; i++) { if (!strcasecmp(columnNames[i], "nibble_balance")) { - cbt->balance = (float) atof(argv[0]); + cbt->balance = atof(argv[0]); } } @@ -179,15 +180,15 @@ static switch_status_t load_config(void) } else if (!strcasecmp(var, "percall_action")) { set_global_percall_action(val); } else if (!strcasecmp(var, "percall_max_amt")) { - globals.percall_max_amt = (float) atof(val); + globals.percall_max_amt = atof(val); } else if (!strcasecmp(var, "lowbal_action")) { set_global_lowbal_action(val); } else if (!strcasecmp(var, "lowbal_amt")) { - globals.lowbal_amt = (float) atof(val); + globals.lowbal_amt = atof(val); } else if (!strcasecmp(var, "nobal_action")) { set_global_nobal_action(val); } else if (!strcasecmp(var, "nobal_amt")) { - globals.nobal_amt = (float) atof(val); + globals.nobal_amt = atof(val); } else if (!strcasecmp(var, "global_heartbeat")) { globals.global_heartbeat = atoi(val); } @@ -252,6 +253,23 @@ void debug_event_handler(switch_event_t *event) } } +static switch_status_t exec_app(switch_core_session_t *session, const char *app_string) +{ + switch_status_t status; + char *strings[2] = { 0 }; + char *dup; + + if (!app_string) { + return SWITCH_STATUS_FALSE; + } + + dup = strdup(app_string); + switch_assert(dup); + switch_separate_string(dup, ' ', strings, sizeof(strings) / sizeof(strings[0])); + status = switch_core_session_execute_application(session, strings[0], strings[1]); + free(dup); + return status; +} static void transfer_call(switch_core_session_t *session, char *destination) { @@ -292,9 +310,8 @@ static void transfer_call(switch_core_session_t *session, char *destination) free(mydup); } - /* At this time, billing never succeeds if you don't have a database. */ -static switch_status_t bill_event(float billamount, const char *billaccount, switch_channel_t *channel) +static switch_status_t bill_event(double billamount, const char *billaccount, switch_channel_t *channel) { char *sql = NULL, *dsql = NULL; switch_odbc_statement_handle_t stmt = NULL; @@ -306,7 +323,7 @@ static switch_status_t bill_event(float billamount, const char *billaccount, swi if (globals.custom_sql_save) { if (switch_string_var_check_const(globals.custom_sql_save) || switch_string_has_escaped_data(globals.custom_sql_save)) { - switch_channel_set_variable_printf(channel, "nibble_increment", "%f", billamount, SWITCH_FALSE); + switch_channel_set_variable_printf(channel, "nibble_bill", "%f", billamount, SWITCH_FALSE); sql = switch_channel_expand_variables(channel, globals.custom_sql_save); if (sql != globals.custom_sql_save) dsql = sql; } else { @@ -339,14 +356,14 @@ static switch_status_t bill_event(float billamount, const char *billaccount, swi } -static float get_balance(const char *billaccount, switch_channel_t *channel) +static double get_balance(const char *billaccount, switch_channel_t *channel) { char *dsql = NULL, *sql = NULL; nibblebill_results_t pdata; - float balance = 0.00f; + double balance = 0.0; if (!switch_odbc_available()) { - return -1.00f; + return -1.0; } memset(&pdata, 0, sizeof(pdata)); @@ -369,7 +386,7 @@ static float get_balance(const char *billaccount, switch_channel_t *channel) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error running this query: [%s]\n", sql); /* Return -1 for safety */ - balance = -1.00f; + balance = -1.0; } else { /* Successfully retrieved! */ balance = pdata.balance; @@ -391,7 +408,7 @@ static switch_status_t do_billing(switch_core_session_t *session) /* Local vars */ nibble_data_t *nibble_data; switch_time_t ts = switch_micro_time_now(); - float billamount; + double billamount; char date[80] = ""; char *uuid; switch_size_t retsize; @@ -399,9 +416,9 @@ static switch_status_t do_billing(switch_core_session_t *session) const char *billrate; const char *billincrement; const char *billaccount; - float nobal_amt = globals.nobal_amt; - //float lowbal_amt = globals.lowbal_amt; - float balance; + double nobal_amt = globals.nobal_amt; + double lowbal_amt = globals.lowbal_amt; + double balance; if (!session) { /* Why are we here? */ @@ -421,13 +438,13 @@ static switch_status_t do_billing(switch_core_session_t *session) billaccount = switch_channel_get_variable(channel, "nibble_account"); if (!zstr(switch_channel_get_variable(channel, "nobal_amt"))) { - nobal_amt = (float)atof(switch_channel_get_variable(channel, "nobal_amt")); + nobal_amt = atof(switch_channel_get_variable(channel, "nobal_amt")); } - /* + if (!zstr(switch_channel_get_variable(channel, "lowbal_amt"))) { - lowbal_amt = (float)atof(switch_channel_get_variable(channel, "lowbal_amt")); + lowbal_amt = atof(switch_channel_get_variable(channel, "lowbal_amt")); } - */ + /* Return if there's no billing information on this session */ if (!billrate || !billaccount) { return SWITCH_STATUS_SUCCESS; @@ -497,11 +514,15 @@ static switch_status_t do_billing(switch_core_session_t *session) if ((ts - nibble_data->lastts) >= 0) { /* If billincrement is set we bill by it and not by time elapsed */ if (!(switch_strlen_zero(billincrement))) { - float chargedunits = ((int)((ts - nibble_data->lastts) / 1000000) <= (int)atof(billincrement)) ? ((float)atof(billincrement) * 1000000) : ceil((ts - nibble_data->lastts) / ((float)atof(billincrement) * 1000000)) * ((float)atof(billincrement) * 1000000); - billamount = ((float) atof(billrate) / 1000000 / 60) * chargedunits - nibble_data->bill_adjustments; + switch_time_t chargedunits = (ts - nibble_data->lastts) / 1000000 <= atol(billincrement) ? atol(billincrement) * 1000000 : (switch_time_t)(ceil((ts - nibble_data->lastts) / (atol(billincrement) * 1000000.0))) * atol(billincrement) * 1000000; + billamount = (atof(billrate) / 1000000 / 60) * chargedunits - nibble_data->bill_adjustments; + /* Account for the prepaid amount */ + nibble_data->lastts += chargedunits; } else { /* Convert billrate into microseconds and multiply by # of microseconds that have passed since last *successful* bill */ - billamount = ((float) atof(billrate) / 1000000 / 60) * ((ts - nibble_data->lastts)) - nibble_data->bill_adjustments; + billamount = (atof(billrate) / 1000000 / 60) * ((ts - nibble_data->lastts)) - nibble_data->bill_adjustments; + /* Update the last time we billed */ + nibble_data->lastts = ts; } switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Billing $%f to %s (Call: %s / %f so far)\n", billamount, billaccount, @@ -521,21 +542,31 @@ static switch_status_t do_billing(switch_core_session_t *session) switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_CRIT, "Failed to log to database!\n"); } } else { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "Just tried to bill %s negative minutes! That should be impossible.\n", - uuid); + if (switch_strlen_zero(billincrement)) + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "Just tried to bill %s negative minutes! That should be impossible.\n", uuid); } - /* Update the last time we billed */ - nibble_data->lastts = ts; - /* Save this location */ if (channel) { switch_channel_set_private(channel, "_nibble_data_", nibble_data); /* don't verify balance and transfer to nobal if we're done with call */ if (switch_channel_get_state(channel) != CS_REPORTING && switch_channel_get_state(channel) != CS_HANGUP) { - /* See if this person has enough money left to continue the call */ + balance = get_balance(billaccount, channel); + + /* See if we've achieved low balance */ + if (!nibble_data->lowbal_action_executed && balance <= lowbal_amt) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Balance of %f fell below low balance amount of %f! (Account %s)\n", + balance, lowbal_amt, billaccount); + + if (exec_app(session, globals.lowbal_action) != SWITCH_STATUS_SUCCESS) + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Low balance action didn't execute\n"); + else + nibble_data->lowbal_action_executed = 1; + } + + /* See if this person has enough money left to continue the call */ if (balance <= nobal_amt) { /* Not enough money - reroute call to nobal location */ switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_CRIT, "Balance of %f fell below allowed amount of %f! (Account %s)\n", @@ -665,7 +696,7 @@ static void nibblebill_resume(switch_core_session_t *session) billrate = switch_channel_get_variable(channel, "nibble_rate"); /* Calculate how much was "lost" to billings during pause - we do this here because you never know when the billrate may change during a call */ - nibble_data->bill_adjustments += ((float) atof(billrate) / 1000000 / 60) * ((ts - nibble_data->pausets)); + nibble_data->bill_adjustments += (atof(billrate) / 1000000 / 60) * ((ts - nibble_data->pausets)); switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "Resumed billing! Subtracted %f from this billing cycle.\n", (atof(billrate) / 1000000 / 60) * ((ts - nibble_data->pausets))); @@ -711,11 +742,11 @@ static void nibblebill_reset(switch_core_session_t *session) } } -static float nibblebill_check(switch_core_session_t *session) +static double nibblebill_check(switch_core_session_t *session) { switch_channel_t *channel = switch_core_session_get_channel(session); nibble_data_t *nibble_data; - float amount = 0; + double amount = 0; if (!channel) { return -99999; @@ -744,7 +775,7 @@ static float nibblebill_check(switch_core_session_t *session) return amount; } -static void nibblebill_adjust(switch_core_session_t *session, float amount) +static void nibblebill_adjust(switch_core_session_t *session, double amount) { switch_channel_t *channel = switch_core_session_get_channel(session); const char *billaccount; @@ -780,7 +811,7 @@ SWITCH_STANDARD_APP(nibblebill_app_function) if (!zstr(data) && (lbuf = strdup(data)) && (argc = switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) { if (!strcasecmp(argv[0], "adjust") && argc == 2) { - nibblebill_adjust(session, (float) atof(argv[1])); + nibblebill_adjust(session, atof(argv[1])); } else if (!strcasecmp(argv[0], "flush")) { do_billing(session); } else if (!strcasecmp(argv[0], "pause")) { @@ -812,7 +843,7 @@ SWITCH_STANDARD_API(nibblebill_api_function) char *uuid = argv[0]; if ((psession = switch_core_session_locate(uuid))) { if (!strcasecmp(argv[1], "adjust") && argc == 3) { - nibblebill_adjust(psession, (float) atof(argv[2])); + nibblebill_adjust(psession, atof(argv[2])); } else if (!strcasecmp(argv[1], "flush")) { do_billing(psession); } else if (!strcasecmp(argv[1], "pause")) { From fcab3de02eeb18d19e35ba124bc19fc33e7c0bd5 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 15 Mar 2012 18:57:19 +0000 Subject: [PATCH 175/292] fix samples-htdocs target --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 9765a2fec5..0261b709b0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -490,7 +490,7 @@ samples-conf: samples-htdocs: test -d $(DESTDIR)$(htdocsdir) || $(mkinstalldirs) $(DESTDIR)$(htdocsdir) - for htdocsfile in `cd $(switch_srcdir)/htdocs && find . -type f -name \* | sed -e 's|^\.||` ; do \ + for htdocsfile in `cd $(switch_srcdir)/htdocs && find . -type f -name \* | sed -e 's|^\.||'` ; do \ dir=`echo $$htdocsfile | sed -e 's|/[^/]*$$||'`; \ filename=`echo $$htdocsfile | sed -e 's|^.*/||'`; \ test -d $(DESTDIR)$(htdocsdir)$$dir || $(mkinstalldirs) $(DESTDIR)$(htdocsdir)$$dir ; \ From 967c7f5431318d6e8e2d7f66de3546ec7e009dfc Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 16 Mar 2012 04:13:50 +0000 Subject: [PATCH 176/292] whitespace --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 35f80b285b..8dbf78d4fa 100644 --- a/.gitignore +++ b/.gitignore @@ -197,4 +197,4 @@ src/mod/formats/mod_shout/*/*/mod_shout.log /src/mod/languages/mod_managed/Win32/Release_CLR/TZRES.DLL.bi /src/mod/languages/mod_managed/x64/Release_CLR/FREESWITCH.MANAGED.DLL.metagen /src/mod/languages/mod_managed/x64/Release_CLR/RSAENH.DLL.bi -/src/mod/languages/mod_managed/x64/Release_CLR/TZRES.DLL.bi \ No newline at end of file +/src/mod/languages/mod_managed/x64/Release_CLR/TZRES.DLL.bi From f4f59e18cccf281997d58fa62334b9053210e05d Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 16 Mar 2012 04:14:21 +0000 Subject: [PATCH 177/292] gitignore *.swp --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 8dbf78d4fa..55e1e9856b 100644 --- a/.gitignore +++ b/.gitignore @@ -35,6 +35,7 @@ *.xz *.bz2 *.tbz2 +*.swp aclocal.m4 autom4te.cache config.cache From 3e89c807bf31d9482de2a588002b558943e4ac37 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 16 Mar 2012 04:21:06 +0000 Subject: [PATCH 178/292] update gitignore exclusion for binary in tree Is this really needed? --- src/mod/endpoints/mod_gsmopen/.gitignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/.gitignore b/src/mod/endpoints/mod_gsmopen/.gitignore index fe8dc68bd5..e2769c8969 100644 --- a/src/mod/endpoints/mod_gsmopen/.gitignore +++ b/src/mod/endpoints/mod_gsmopen/.gitignore @@ -1,4 +1,3 @@ !/gsmlib/gsmlib-*/aclocal.m4 !/gsmlib/gsmlib-*/configure -!/gsmlib/gsmlib-1.10.tar.gz -!/gsmlib/gsmlib_1.10-12ubuntu1.diff.gz +!/gsmlib/gsmlib_1.10.orig.tar.gz From 4a9348250a9799dbf98b4145a30765d486b04202 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 16 Mar 2012 05:21:10 +0000 Subject: [PATCH 179/292] whitespace --- conf/lang/ru/vm/tts.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/conf/lang/ru/vm/tts.xml b/conf/lang/ru/vm/tts.xml index 63dec3572c..2de4b3781e 100644 --- a/conf/lang/ru/vm/tts.xml +++ b/conf/lang/ru/vm/tts.xml @@ -70,7 +70,6 @@ - @@ -80,7 +79,6 @@ - From 914f6cb18cf9953f0f0e0d7a778cbc84f2170fa2 Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Fri, 16 Mar 2012 12:33:42 -0500 Subject: [PATCH 180/292] fix flite to use the correct voice --- src/mod/asr_tts/mod_flite/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/asr_tts/mod_flite/Makefile b/src/mod/asr_tts/mod_flite/Makefile index 4352a5ba69..6947eb2f96 100644 --- a/src/mod/asr_tts/mod_flite/Makefile +++ b/src/mod/asr_tts/mod_flite/Makefile @@ -5,7 +5,7 @@ FLITE_BUILDDIR=$(switch_builddir)/libs/$(FLITE)-current FLITE_LIBDIR=$(FLITE_BUILDDIR)/build/libs FLITE_A=$(FLITE_LIBDIR)/libflite_cmu_us_awb.a \ - $(FLITE_LIBDIR)/libflite_cmu_us_kal.a \ + $(FLITE_LIBDIR)/libflite_cmu_us_kal16.a \ $(FLITE_LIBDIR)/libflite_cmu_us_rms.a \ $(FLITE_LIBDIR)/libflite_cmu_us_slt.a \ $(FLITE_LIBDIR)/libflite_cmulex.a $(FLITE_LIBDIR)/libflite_usenglish.a $(FLITE_LIBDIR)/libflite.a -lm From bf652b567f00c1ffb63ddf4f82306436d98fdc57 Mon Sep 17 00:00:00 2001 From: Moises Silva Date: Sun, 18 Mar 2012 18:54:54 -0400 Subject: [PATCH 181/292] freetdm: ftmod_zt - Print which DAHDI event number is failing to be processed --- libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c b/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c index 0282b222c8..62bdf29425 100644 --- a/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c +++ b/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c @@ -1176,7 +1176,7 @@ FIO_CHANNEL_NEXT_EVENT_FUNCTION(zt_channel_next_event) /* the core already locked the channel for us, so it's safe to call zt_channel_process_event() here */ if ((zt_channel_process_event(ftdmchan, &event_id, zt_event_id)) != FTDM_SUCCESS) { - ftdm_log_chan_msg(ftdmchan, FTDM_LOG_ERROR, "Failed to process event from channel\n"); + ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "Failed to process DAHDI event %d from channel\n", zt_event_id); return FTDM_FAIL; } @@ -1210,7 +1210,7 @@ FIO_SPAN_NEXT_EVENT_FUNCTION(zt_next_event) ftdm_channel_lock(fchan); if ((zt_channel_process_event(fchan, &event_id, zt_event_id)) != FTDM_SUCCESS) { - ftdm_log_chan_msg(fchan, FTDM_LOG_ERROR, "Failed to process event from channel\n"); + ftdm_log_chan(fchan, FTDM_LOG_ERROR, "Failed to process DAHDI event %d from channel\n", zt_event_id); ftdm_channel_unlock(fchan); return FTDM_FAIL; } From 681f582b200207d403c3c61928b5adbe8f7a9451 Mon Sep 17 00:00:00 2001 From: Moises Silva Date: Mon, 19 Mar 2012 09:20:44 -0400 Subject: [PATCH 182/292] freetdm: Try to resolve OPENZAP-173 The token count needs to be updated after the master session token is cleared and before checking for other tokens --- libs/freetdm/mod_freetdm/mod_freetdm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libs/freetdm/mod_freetdm/mod_freetdm.c b/libs/freetdm/mod_freetdm/mod_freetdm.c index 7789446616..1c41ed3b74 100755 --- a/libs/freetdm/mod_freetdm/mod_freetdm.c +++ b/libs/freetdm/mod_freetdm/mod_freetdm.c @@ -586,6 +586,7 @@ static switch_status_t channel_on_hangup(switch_core_session_t *session) break; case FTDM_CHAN_TYPE_FXS: { + tokencnt = ftdm_channel_get_token_count(tech_pvt->ftdmchan); if (!ftdm_channel_call_check_busy(tech_pvt->ftdmchan) && !ftdm_channel_call_check_done(tech_pvt->ftdmchan)) { if (tokencnt) { cycle_foreground(tech_pvt->ftdmchan, 0, NULL); From 57b022c2d457c0aeb2badaf5721845deb3a3084f Mon Sep 17 00:00:00 2001 From: Moises Silva Date: Mon, 19 Mar 2012 09:27:29 -0400 Subject: [PATCH 183/292] freetdm: Do not report error for DAHDI RINGER ON/OFF events, they are no-ops at the moment --- libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c b/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c index 62bdf29425..f531d2b375 100644 --- a/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c +++ b/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c @@ -1052,12 +1052,14 @@ static __inline__ ftdm_status_t zt_channel_process_event(ftdm_channel_t *fchan, switch(zt_event_id) { case ZT_EVENT_RINGEROFF: { - return FTDM_FAIL; + ftdm_log_chan_msg(fchan, FTDM_LOG_DEBUG, "ZT RINGER OFF\n"); + *event_id = FTDM_OOB_NOOP; } break; case ZT_EVENT_RINGERON: { - return FTDM_FAIL; + ftdm_log_chan_msg(fchan, FTDM_LOG_DEBUG, "ZT RINGER ON\n"); + *event_id = FTDM_OOB_NOOP; } break; case ZT_EVENT_RINGBEGIN: From 935b4aefbdd70396220b60052191314f17d37a65 Mon Sep 17 00:00:00 2001 From: Daniel Swarbrick Date: Mon, 19 Mar 2012 18:05:44 +0100 Subject: [PATCH 184/292] whitespace, cruft --- debian/freeswitch.init | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/debian/freeswitch.init b/debian/freeswitch.init index c09e7128d1..6cae11ba39 100755 --- a/debian/freeswitch.init +++ b/debian/freeswitch.init @@ -28,7 +28,7 @@ WORKDIR=/opt/$NAME CALLEDSCRIPT=`basename $0` -if [ -r /etc/default/$NAME ]; then . /etc/default/$NAME; fi +if [ -r /etc/default/$NAME ]; then . /etc/default/$NAME; fi if [ "$FREESWITCH_ENABLED" != "true" ]; then echo "$DESC not enabled yet. Edit /etc/default/$NAME first." @@ -180,5 +180,3 @@ case "$1" in exit 3 ;; esac - -: From 9d3401e30f3953159505033cf789478b8c22338b Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Mon, 19 Mar 2012 20:06:36 -0500 Subject: [PATCH 185/292] FS-4022 --- src/mod/asr_tts/mod_flite/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mod/asr_tts/mod_flite/Makefile b/src/mod/asr_tts/mod_flite/Makefile index 6947eb2f96..c93b48c1ca 100644 --- a/src/mod/asr_tts/mod_flite/Makefile +++ b/src/mod/asr_tts/mod_flite/Makefile @@ -5,6 +5,7 @@ FLITE_BUILDDIR=$(switch_builddir)/libs/$(FLITE)-current FLITE_LIBDIR=$(FLITE_BUILDDIR)/build/libs FLITE_A=$(FLITE_LIBDIR)/libflite_cmu_us_awb.a \ + $(FLITE_LIBDIR)/libflite_cmu_us_kal.a \ $(FLITE_LIBDIR)/libflite_cmu_us_kal16.a \ $(FLITE_LIBDIR)/libflite_cmu_us_rms.a \ $(FLITE_LIBDIR)/libflite_cmu_us_slt.a \ From 888bf8132df5c17d73d11e5c4233651486a77a72 Mon Sep 17 00:00:00 2001 From: Michal Bielicki - cypromis Date: Wed, 21 Mar 2012 17:12:00 +0100 Subject: [PATCH 186/292] added httapi.conf.xml file to crpm build --- freeswitch.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/freeswitch.spec b/freeswitch.spec index b99f1c68d5..77f1f07688 100644 --- a/freeswitch.spec +++ b/freeswitch.spec @@ -781,6 +781,7 @@ fi %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/fax.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/fifo.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/hash.conf.xml +%config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/httapi.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/http_cache.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/ivr.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/java.conf.xml From 6b762123243fdf5d07e9048e27b2a0d1f315e297 Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Thu, 22 Mar 2012 23:55:47 +0100 Subject: [PATCH 187/292] ftmod_misdn: Decode hfcsusb MPH_INFORMATION_IND state and flags. For diagnostic / debugging purposes. Signed-off-by: Stefan Knoblich --- .../src/ftmod/ftmod_misdn/ftmod_misdn.c | 101 +++++++++++++++++- 1 file changed, 99 insertions(+), 2 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c index d74c54934b..0b07447dd7 100644 --- a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c +++ b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c @@ -633,6 +633,99 @@ static int misdn_handle_ph_control_ind(ftdm_channel_t *chan, const struct mISDNh return FTDM_SUCCESS; } +/* + * TE/NT state names + * taken from linux-3.2.1/drivers/isdn/hardware/mISDN/hfcsusb.h + */ +static const char *misdn_layer1_te_states[] = { + "TE F0 - Reset", + "TE F1 - Reset", + "TE F2 - Sensing", + "TE F3 - Deactivated", + "TE F4 - Awaiting signal", + "TE F5 - Identifying input", + "TE F6 - Synchronized", + "TE F7 - Activated", + "TE F8 - Lost framing", +}; + +static const char *misdn_layer1_nt_states[] = { + "NT G0 - Reset", + "NT G1 - Deactive", + "NT G2 - Pending activation", + "NT G3 - Active", + "NT G4 - Pending deactivation", +}; + +static const char *misdn_hw_state_name(const int proto, const int id) +{ + if (IS_ISDN_P_TE(proto)) { + if (id < 0 || id >= ftdm_array_len(misdn_layer1_te_states)) + return NULL; + return misdn_layer1_te_states[id]; + } + else if (IS_ISDN_P_NT(proto)) { + if (id < 0 || id >= ftdm_array_len(misdn_layer1_nt_states)) + return NULL; + return misdn_layer1_nt_states[id]; + } + return NULL; +} + + +static const struct misdn_hw_flag { + const unsigned int flag; + const char *name; +} misdn_hw_flags[] = { +#define MISDN_HW_FLAG(v,n) { v, #n } + MISDN_HW_FLAG(0, FLG_TX_BUSY), + MISDN_HW_FLAG(1, FLG_TX_NEXT), + MISDN_HW_FLAG(2, FLG_L1_BUSY), + MISDN_HW_FLAG(3, FLG_L2_ACTIVATED), + MISDN_HW_FLAG(5, FLG_OPEN), + MISDN_HW_FLAG(6, FLG_ACTIVE), + MISDN_HW_FLAG(7, FLG_BUSY_TIMER), + MISDN_HW_FLAG(8, FLG_DCHANNEL), + MISDN_HW_FLAG(9, FLG_BCHANNEL), + MISDN_HW_FLAG(10, FLG_ECHANNEL), + MISDN_HW_FLAG(12, FLG_TRANSPARENT), + MISDN_HW_FLAG(13, FLG_HDLC), + MISDN_HW_FLAG(14, FLG_L2DATA), + MISDN_HW_FLAG(15, FLG_ORIGIN), + MISDN_HW_FLAG(16, FLG_FILLEMPTY), + MISDN_HW_FLAG(17, FLG_ARCOFI_TIMER), + MISDN_HW_FLAG(18, FLG_ARCOFI_ERROR), + MISDN_HW_FLAG(17, FLG_INITIALIZED), + MISDN_HW_FLAG(18, FLG_DLEETX), + MISDN_HW_FLAG(19, FLG_LASTDLE), + MISDN_HW_FLAG(20, FLG_FIRST), + MISDN_HW_FLAG(21, FLG_LASTDATA), + MISDN_HW_FLAG(22, FLG_NMD_DATA), + MISDN_HW_FLAG(23, FLG_FTI_RUN), + MISDN_HW_FLAG(24, FLG_LL_OK), + MISDN_HW_FLAG(25, FLG_LL_CONN), + MISDN_HW_FLAG(26, FLG_DTMFSEND), + MISDN_HW_FLAG(30, FLG_RECVQUEUE), + MISDN_HW_FLAG(31, FLG_PHCHANGE), +#undef MISDN_HW_FLAG +}; + +static const char *misdn_hw_print_flags(unsigned int flags, char *buf, int buflen) +{ + int i; + + buf[0] = '\0'; + for (i = 0; i < ftdm_array_len(misdn_hw_flags); i++) { + if ((1 << misdn_hw_flags[i].flag) & flags) { + strncat(buf, misdn_hw_flags[i].name, buflen); + flags &= ~(1 << misdn_hw_flags[i].flag); + if (!flags) break; + strncat(buf, ",", buflen); + } + } + return buf; +} + static int misdn_handle_mph_information_ind(ftdm_channel_t *chan, const struct mISDNhead *hh, const void *data, const int data_len) { struct misdn_chan_private *priv = ftdm_chan_io_private(chan); @@ -653,6 +746,7 @@ static int misdn_handle_mph_information_ind(ftdm_channel_t *chan, const struct m /* complete port status, hfcsusb sends this */ struct ph_info *info = (struct ph_info *)data; struct ph_info_ch *bch_info = NULL; + char tmp[1024] = { 0 }; if (data_len < (sizeof(*info) + info->dch.num_bch * sizeof(*bch_info))) { ftdm_log_chan_msg(chan, FTDM_LOG_ERROR, "mISDN MPH_INFORMATION_IND message is too short\n"); @@ -660,8 +754,11 @@ static int misdn_handle_mph_information_ind(ftdm_channel_t *chan, const struct m } bch_info = &info->bch[0]; - ftdm_log_chan(chan, FTDM_LOG_DEBUG, "mISDN port state:\n\tD-Chan state:\t%hu\n\tD-Chan flags:\t%#lx\n\tD-Chan proto:\t%hu\n\tD-Chan active:\t%s\n", - info->dch.state, info->dch.ch.Flags, info->dch.ch.protocol, (info->dch.ch.Flags & (1 << 6)) ? "yes" : "no"); + ftdm_log_chan(chan, FTDM_LOG_DEBUG, "mISDN port state:\n\tD-Chan proto:\t%hu\n\tD-Chan state:\t%s (%hu)\n\tD-Chan flags:\t%#lx\n\t\t\t%-70s\n", + info->dch.ch.protocol, + misdn_hw_state_name(info->dch.ch.protocol, info->dch.state), info->dch.state, + info->dch.ch.Flags, + misdn_hw_print_flags(info->dch.ch.Flags, tmp, sizeof(tmp) - 1)); /* TODO: try to translate this to a usable set of alarm flags */ From 28ed1b507603fab8781108bc9a956a465d6547dc Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Fri, 23 Mar 2012 00:32:24 +0100 Subject: [PATCH 188/292] ftmod_misdn: Move misdn_handle_incoming() up. Only used by misdn_read(), so move it right in front of that one. Signed-off-by: Stefan Knoblich --- .../src/ftmod/ftmod_misdn/ftmod_misdn.c | 140 ++++++++++-------- 1 file changed, 75 insertions(+), 65 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c index 0b07447dd7..a023d83aec 100644 --- a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c +++ b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c @@ -1079,6 +1079,81 @@ static FIO_WAIT_FUNCTION(misdn_wait) return FTDM_SUCCESS; } + +/** + * Handle incoming mISDN message on d-channel + * @param[in] ftdmchan + * @param[in] msg_buf + * @param[in] msg_len + * @internal + */ +static ftdm_status_t misdn_handle_incoming(ftdm_channel_t *ftdmchan, const char *msg_buf, const int msg_len) +{ + struct misdn_chan_private *priv = ftdm_chan_io_private(ftdmchan); + struct mISDNhead *hh = (struct mISDNhead *)msg_buf; + const char *data = msg_buf + sizeof(*hh); + int data_len = msg_len - sizeof(*hh); + + assert(msg_buf); + assert(priv); + + if (msg_len < sizeof(*hh)) { + ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "mISDN message to small (%d < %d bytes)\n", + msg_len, sizeof(*hh)); + return FTDM_FAIL; + } + +#ifdef MISDN_DEBUG_EVENTS + ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "mISDN %c-channel received '%s' message (id: 0x%x, additional data: %d bytes)\n", + ftdm_channel_get_type(ftdmchan) == FTDM_CHAN_TYPE_B ? 'B' : 'D', misdn_event2str(hh->prim), hh->id, data_len); +#endif + + switch (hh->prim) { + /* data events */ + case PH_DATA_CNF: /* TX: ack */ + priv->tx_ack_cnt++; + break; + case PH_DATA_REQ: /* TX: request echo (ignore) */ + break; + case PH_DATA_E_IND: /* RX: e-channel data received (monitoring?) */ + break; + + /* control requests */ + case PH_CONTROL_IND: + return misdn_handle_ph_control_ind(ftdmchan, hh, data, data_len); + case PH_CONTROL_REQ: + case PH_CONTROL_CNF: + break; + + /* information */ + case MPH_INFORMATION_IND: + return misdn_handle_mph_information_ind(ftdmchan, hh, data, data_len); + + /* channel de-/activation */ + case PH_ACTIVATE_REQ: /* Echoed requests, ignore */ + case PH_DEACTIVATE_REQ: + break; + case PH_ACTIVATE_IND: + case PH_DEACTIVATE_IND: { + /* other events, enqueue and let misdn_event_next handle it */ + struct misdn_span_private *span_priv = ftdm_span_io_private(ftdmchan->span); + struct misdn_event evt = { 0 }; + evt.id = hh->prim; + + misdn_event_queue_push(priv->events, &evt); + + /* wake possible readers */ + pthread_cond_signal(&span_priv->event_cond); + break; + } + default: /* error? */ + ftdm_log(FTDM_LOG_DEBUG, "mISDN channel %d:%d received unknown event %d\n", + ftdm_channel_get_span_id(ftdmchan), ftdm_channel_get_id(ftdmchan), hh->prim); + break; + } + return FTDM_SUCCESS; +} + /** * \brief Read data * \param ftdmchan FreeTDM channel @@ -1755,71 +1830,6 @@ static FIO_SPAN_DESTROY_FUNCTION(misdn_span_destroy) } -static ftdm_status_t misdn_handle_incoming(ftdm_channel_t *ftdmchan, const char *rbuf, const int size) -{ - struct mISDNhead *hh = (struct mISDNhead *)rbuf; - struct misdn_chan_private *priv = ftdm_chan_io_private(ftdmchan); - const char *data = rbuf + sizeof(*hh); - int data_len = size - sizeof(*hh); - - assert(priv); - -#ifdef MISDN_DEBUG_EVENTS - ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "mISDN channel received '%s' message (additional data: %d bytes)\n", - misdn_event2str(hh->prim), data_len); -#endif - - switch (hh->prim) { - /* data events */ - case PH_DATA_CNF: /* TX ack */ - priv->tx_ack_cnt++; - break; - case PH_DATA_REQ: /* request echo? */ - break; - case PH_DATA_E_IND: /* TX/RX ERR(?) */ - break; - - /* control events */ - case PH_ACTIVATE_REQ: - case PH_DEACTIVATE_REQ: - /* - * Echoed(?) L2->L1 requests, ignore... - * (something broken in mISDN or the way we setup the channel?) - */ - break; - case PH_CONTROL_IND: - return misdn_handle_ph_control_ind(ftdmchan, hh, data, data_len); - case PH_CONTROL_REQ: - case PH_CONTROL_CNF: - break; - - case MPH_INFORMATION_IND: - return misdn_handle_mph_information_ind(ftdmchan, hh, data, data_len); - - case PH_ACTIVATE_IND: - case PH_DEACTIVATE_IND: - { - /* other events, enqueue and let misdn_event_next handle it */ - struct misdn_span_private *span_priv = ftdm_span_io_private(ftdmchan->span); - struct misdn_event evt = { 0 }; - evt.id = hh->prim; - - misdn_event_queue_push(priv->events, &evt); - - /* wake possible readers */ - pthread_cond_signal(&span_priv->event_cond); - } - break; - - default: /* error? */ - ftdm_log(FTDM_LOG_DEBUG, "mISDN channel %d:%d received unknown event %d\n", - ftdm_channel_get_span_id(ftdmchan), ftdm_channel_get_id(ftdmchan), hh->prim); - break; - } - return FTDM_SUCCESS; -} - - /** * \brief ftmod_misdn interface */ From c85271aaf5c571bf30c4b01453677a524313d567 Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Fri, 23 Mar 2012 00:46:46 +0100 Subject: [PATCH 189/292] ftmod_misdn: Improve debug log messages. Signed-off-by: Stefan Knoblich --- .../src/ftmod/ftmod_misdn/ftmod_misdn.c | 42 ++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c index a023d83aec..40c329be13 100644 --- a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c +++ b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c @@ -458,8 +458,9 @@ static ftdm_status_t misdn_activate_channel(ftdm_channel_t *chan, int activate) return FTDM_FAIL; } //#ifdef MISDN_DEBUG_EVENTS - ftdm_log_chan(chan, FTDM_LOG_DEBUG, "mISDN got event '%s (%#x)' while waiting for %s confirmation\n", - misdn_event2str(hh->prim), hh->prim, (activate) ? "activation" : "deactivation"); + ftdm_log_chan(chan, FTDM_LOG_DEBUG, "mISDN got event '%s (%#x)', id %#x, while waiting for %s confirmation on %c-channel\n", + misdn_event2str(hh->prim), hh->prim, hh->id, (activate) ? "activation" : "deactivation", + ftdm_channel_get_type(chan) == FTDM_CHAN_TYPE_B ? 'B' : 'D'); //#endif switch (hh->prim) { case PH_ACTIVATE_IND: /* success (or not): save last response, */ @@ -478,13 +479,11 @@ static ftdm_status_t misdn_activate_channel(ftdm_channel_t *chan, int activate) misdn_event2str(hh->prim), (activate) ? "activation" : "deactivation", hh->id); break; case MPH_INFORMATION_IND: - ftdm_log_chan(chan, FTDM_LOG_DEBUG, "mISDN ignoring event '%s (%#x)' while waiting for %s confirmation\n", - misdn_event2str(hh->prim), hh->prim, (activate) ? "activation" : "deactivation"); misdn_handle_mph_information_ind(chan, hh, MISDN_MSG_DATA(buf), retval - MISDN_HEADER_LEN); break; default: /* other messages, ignore */ - ftdm_log_chan(chan, FTDM_LOG_DEBUG, "mISDN ignoring event '%s (%#x)' while waiting for %s confirmation\n", - misdn_event2str(hh->prim), hh->prim, (activate) ? "activation" : "deactivation"); + ftdm_log_chan(chan, FTDM_LOG_DEBUG, "mISDN ignoring event '%s (%#x)', id %#x, while waiting for %s confirmation\n", + misdn_event2str(hh->prim), hh->prim, hh->id, (activate) ? "activation" : "deactivation"); break; } } @@ -911,6 +910,9 @@ static FIO_CLOSE_FUNCTION(misdn_close) assert(chan_priv); + ftdm_log_chan(ftdmchan, FTDM_LOG_NOTICE, "mISDN trying to close %c-channel\n", + ftdm_channel_get_type(ftdmchan) == FTDM_CHAN_TYPE_B ? 'B' : 'D'); + /* deactivate b-channels on close */ if (ftdm_channel_get_type(ftdmchan) == FTDM_CHAN_TYPE_B) { /* @@ -926,11 +928,13 @@ static FIO_CLOSE_FUNCTION(misdn_close) */ ret = misdn_activate_channel(ftdmchan, 0); if (ret != FTDM_SUCCESS) { - ftdm_log_chan_msg(ftdmchan, FTDM_LOG_ERROR, "Failed to deactivate channel\n"); + ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "Failed to deactivate %c-channel\n", + ftdm_channel_get_type(ftdmchan) == FTDM_CHAN_TYPE_B ? 'B' : 'D'); return FTDM_FAIL; } - ftdm_log_chan_msg(ftdmchan, FTDM_LOG_INFO, "mISDN channel deactivated\n"); + ftdm_log_chan(ftdmchan, FTDM_LOG_INFO, "mISDN %c-channel deactivated\n", + ftdm_channel_get_type(ftdmchan) == FTDM_CHAN_TYPE_B ? 'B' : 'D'); chan_priv->state = MISDN_CHAN_STATE_CLOSED; } @@ -989,8 +993,8 @@ static FIO_COMMAND_FUNCTION(misdn_command) case FTDM_COMMAND_GET_INTERVAL: FTDM_COMMAND_OBJ_INT = ftdm_channel_get_io_interval(ftdmchan); - ftdm_log(FTDM_LOG_NOTICE, "Interval %d ms [%d:%d]\n", - ftdm_channel_get_io_interval(ftdmchan), ftdm_channel_get_span_id(ftdmchan), ftdm_channel_get_id(ftdmchan)); + ftdm_log_chan(ftdmchan, FTDM_LOG_NOTICE, "Interval %d ms\n", + ftdm_channel_get_io_interval(ftdmchan)); break; default: @@ -1169,6 +1173,7 @@ static FIO_READ_FUNCTION(misdn_read) int retval; if (priv->state == MISDN_CHAN_STATE_CLOSED) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "mISDN ignoring read on closed channel\n"); /* ignore */ *datalen = 0; return FTDM_SUCCESS; @@ -1200,7 +1205,7 @@ static FIO_READ_FUNCTION(misdn_read) if (*datalen > 0) { char hbuf[MAX_DATA_MEM] = { 0 }; print_hex_bytes(data, *datalen, hbuf, sizeof(hbuf)); - ftdm_log(FTDM_LOG_DEBUG, "mISDN read data: %s\n", hbuf); + ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "mISDN read data: %s\n", hbuf); } #endif return FTDM_SUCCESS; @@ -1210,6 +1215,10 @@ static FIO_READ_FUNCTION(misdn_read) misdn_handle_incoming(ftdmchan, rbuf, retval); } } +#ifdef MISDN_DEBUG_IO + ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "mISDN nothing received on %c-channel\n", + ftdm_channel_get_type(ftdmchan) == FTDM_CHAN_TYPE_B ? 'B' : 'D'); +#endif return FTDM_SUCCESS; } @@ -1250,21 +1259,16 @@ static FIO_WRITE_FUNCTION(misdn_write) size += MISDN_HEADER_LEN; #ifdef MISDN_DEBUG_IO - ftdm_log(FTDM_LOG_DEBUG, "mISDN writing %d bytes to channel %d:%d socket %d\n", - size, ftdm_channel_get_span_id(ftdmchan), ftdm_channel_get_id(ftdmchan), ftdmchan->sockfd); + ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "mISDN writing %d bytes to channel socket %d [dev.ch: %d.%d]\n", + size, ftdmchan->sockfd, priv->addr.dev, priv->addr.channel); #endif if ((retval = sendto(ftdmchan->sockfd, wbuf, size, 0, NULL, 0)) != size) { - ftdm_log(FTDM_LOG_ERROR, "mISDN channel %d:%d socket write error: %s\n", - ftdm_channel_get_span_id(ftdmchan), ftdm_channel_get_id(ftdmchan), + ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "mISDN channel socket write error: %s\n", strerror(errno)); return FTDM_FAIL; } *datalen = retval; -// if (priv->debugfd >= 0) { -// write(priv->debugfd, wbuf + MISDN_HEADER_LEN, size - MISDN_HEADER_LEN); -// } - priv->tx_cnt++; return FTDM_SUCCESS; } From fc1e1a91f20572f3f26b84e24ea8d9ce13bd0a3c Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Fri, 23 Mar 2012 00:50:47 +0100 Subject: [PATCH 190/292] ftmod_misdn: Stop using timerfd for b-channel write polling. Use POLLIN on the socket instead, the b-channel should be able to write when there is something to read. Several other projects handle it this way, e.g. libosmo-abis. Signed-off-by: Stefan Knoblich --- .../src/ftmod/ftmod_misdn/ftmod_misdn.c | 32 +++++++++++++++++-- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c index 40c329be13..3080de52f2 100644 --- a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c +++ b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c @@ -861,6 +861,7 @@ static FIO_OPEN_FUNCTION(misdn_open) switch (ftdmchan->type) { case FTDM_CHAN_TYPE_B: { +#if 0 struct itimerspec its = { .it_interval = { 0, 0 }, .it_value = { 0, 0 }, @@ -887,6 +888,7 @@ static FIO_OPEN_FUNCTION(misdn_open) ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "mISDN created tx interval (%d ms) timer\n", ftdmchan->effective_interval); +#endif } case FTDM_CHAN_TYPE_DQ921: chan_priv->state = MISDN_CHAN_STATE_OPEN; @@ -915,6 +917,7 @@ static FIO_CLOSE_FUNCTION(misdn_close) /* deactivate b-channels on close */ if (ftdm_channel_get_type(ftdmchan) == FTDM_CHAN_TYPE_B) { +#if 0 /* * Stop tx timerfd */ @@ -922,7 +925,7 @@ static FIO_CLOSE_FUNCTION(misdn_close) close(chan_priv->timerfd); chan_priv->timerfd = -1; } - +#endif /* * Send deactivation request (don't wait for answer) */ @@ -1012,7 +1015,7 @@ static FIO_COMMAND_FUNCTION(misdn_command) */ static FIO_WAIT_FUNCTION(misdn_wait) { - struct misdn_chan_private *chan_priv = ftdm_chan_io_private(ftdmchan); +// struct misdn_chan_private *chan_priv = ftdm_chan_io_private(ftdmchan); struct pollfd pfds[2]; int nr_fds = 0; int retval; @@ -1021,6 +1024,15 @@ static FIO_WAIT_FUNCTION(misdn_wait) switch (ftdm_channel_get_type(ftdmchan)) { case FTDM_CHAN_TYPE_B: + if (*flags & FTDM_READ) + pfds[0].events |= POLLIN; + if (*flags & FTDM_WRITE) + pfds[0].events |= /*POLLOUT |*/ POLLIN; /* NOTE: no write-poll support on mISDN b-channels */ + if (*flags & FTDM_EVENTS) + pfds[0].events |= POLLPRI; + pfds[0].fd = ftdmchan->sockfd; + nr_fds++; +#if 0 if (*flags & FTDM_WRITE) { pfds[nr_fds].fd = chan_priv->timerfd; pfds[nr_fds].events = POLLIN; @@ -1032,6 +1044,7 @@ static FIO_WAIT_FUNCTION(misdn_wait) pfds[nr_fds].events |= (*flags & FTDM_EVENTS) ? POLLPRI : 0; nr_fds++; } +#endif break; default: if (*flags & FTDM_READ) @@ -1047,8 +1060,12 @@ static FIO_WAIT_FUNCTION(misdn_wait) *flags = FTDM_NO_FLAGS; - if (!(pfds[0].events || pfds[1].events)) +// if (!(pfds[0].events || pfds[1].events)) + if (!pfds[0].events) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_NOTICE, "mISDN poll(): no flags set!\n"); return FTDM_SUCCESS; + } + if ((retval = poll(pfds, nr_fds, to)) < 0) { ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "mISDN poll() failed: %s\n", strerror(errno)); @@ -1059,6 +1076,14 @@ static FIO_WAIT_FUNCTION(misdn_wait) switch (ftdm_channel_get_type(ftdmchan)) { case FTDM_CHAN_TYPE_B: + if (pfds[0].revents & POLLIN) + *flags |= FTDM_READ | FTDM_WRITE; /* NOTE: */ + if (pfds[0].revents & POLLOUT) + *flags |= FTDM_WRITE; + if (pfds[0].revents & POLLPRI) + *flags |= FTDM_EVENTS; + break; +#if 0 if (pfds[0].fd == chan_priv->timerfd) { if (pfds[0].revents & POLLIN) { uint64_t tmp = 0; /* clear pending events on timerfd */ @@ -1071,6 +1096,7 @@ static FIO_WAIT_FUNCTION(misdn_wait) *flags |= FTDM_EVENTS; break; } +#endif default: if (pfds[0].revents & POLLIN) *flags |= FTDM_READ; From f2841e028044241c8a9c1e1cba047175329f42d0 Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Fri, 23 Mar 2012 01:00:26 +0100 Subject: [PATCH 191/292] ftmod_misdn: misdn_write() workaround for signalling drivers that do not use write polling. Wait till the channel is actually ready to send data. Signed-off-by: Stefan Knoblich --- libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c index 3080de52f2..410722fd53 100644 --- a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c +++ b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c @@ -1261,6 +1261,7 @@ static FIO_WRITE_FUNCTION(misdn_write) struct mISDNhead *hh = (struct mISDNhead *)wbuf; int size = *datalen; int retval = 0; + ftdm_wait_flag_t wflags; assert(priv); @@ -1284,6 +1285,15 @@ static FIO_WRITE_FUNCTION(misdn_write) memcpy(wbuf + MISDN_HEADER_LEN, data, size); size += MISDN_HEADER_LEN; + /* wait for channel to get ready */ + wflags = FTDM_WRITE; + retval = misdn_wait(ftdmchan, &wflags, 20); + if (retval) { + /* timeout, io error */ + *datalen = 0; + return FTDM_FAIL; + } + #ifdef MISDN_DEBUG_IO ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "mISDN writing %d bytes to channel socket %d [dev.ch: %d.%d]\n", size, ftdmchan->sockfd, priv->addr.dev, priv->addr.channel); From a2f3ef7460b5df7443c9df77750b23f3b3806dc0 Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Fri, 23 Mar 2012 01:04:11 +0100 Subject: [PATCH 192/292] ftmod_misdn: Reserve some space for the mISDN message header in misdn_write(). Signed-off-by: Stefan Knoblich --- libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c index 410722fd53..947333a14a 100644 --- a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c +++ b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c @@ -1280,7 +1280,7 @@ static FIO_WRITE_FUNCTION(misdn_write) hh->id = MISDN_ID_ANY; /* avoid buffer overflow */ - size = MIN(size, MAX_DATA_MEM); + size = MIN(size, MAX_DATA_MEM - MISDN_HEADER_LEN); memcpy(wbuf + MISDN_HEADER_LEN, data, size); size += MISDN_HEADER_LEN; From ff4b395956a3741a06284879637dee710d1cb3ff Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Fri, 23 Mar 2012 01:09:30 +0100 Subject: [PATCH 193/292] ftmod_misdn: Rework channel de-/activation and activate d-channel early. The former fixes a strange "bug" with hfcsusb, where a b-channel deactivation on a inactive channel (caused by a reset cycle) would cause the port to lock up and stop processing events. NOTE: this still needs to be investigated further, but this workaround will at least prevent it from breaking completely. We'll now keep track of the channel activation state and not send any PH_ACTIVATE_REQ / PH_DEACTIVATE_REQ requests, if the channel already has the desired state. Signed-off-by: Stefan Knoblich --- .../src/ftmod/ftmod_misdn/ftmod_misdn.c | 33 +++++++++++++------ 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c index 947333a14a..326d00a9d9 100644 --- a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c +++ b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c @@ -191,6 +191,7 @@ struct misdn_chan_private { int state; int debugfd; int timerfd; + int active; /* hw addr of channel */ struct sockaddr_mISDN addr; @@ -404,12 +405,17 @@ static inline int ts_before(struct timespec *a, struct timespec *b) static ftdm_status_t misdn_activate_channel(ftdm_channel_t *chan, int activate) { + struct misdn_chan_private *priv = ftdm_chan_io_private(chan); char buf[MAX_DATA_MEM] = { 0 }; struct mISDNhead *hh = (struct mISDNhead *) buf; struct timespec abstimeout; int req = 0, resp = 0, ms_left = MISDN_PH_ACTIVATE_TIMEOUT_MS; int retval; + /* NOTE: sending PH_DEACTIVATE_REQ to closed b-channels kills the d-channel (hfcsusb)... */ + if ((activate && priv->active) || (!activate && !priv->active)) + return FTDM_SUCCESS; + ftdm_log_chan(chan, FTDM_LOG_DEBUG, "mISDN sending %s request\n", (activate) ? "activation" : "deactivation"); @@ -433,7 +439,7 @@ static ftdm_status_t misdn_activate_channel(ftdm_channel_t *chan, int activate) struct pollfd pfd; pfd.fd = chan->sockfd; - pfd.events = POLLIN /* | POLLPRI */; + pfd.events = POLLIN | POLLPRI; pfd.revents = 0; switch ((retval = poll(&pfd, 1, ms_left))) { @@ -463,15 +469,17 @@ static ftdm_status_t misdn_activate_channel(ftdm_channel_t *chan, int activate) ftdm_channel_get_type(chan) == FTDM_CHAN_TYPE_B ? 'B' : 'D'); //#endif switch (hh->prim) { - case PH_ACTIVATE_IND: /* success (or not): save last response, */ - case PH_DEACTIVATE_IND: /* stop looping if it's the one we've been waiting for */ - resp = hh->prim; - if (hh->prim == (activate) ? PH_ACTIVATE_IND : PH_DEACTIVATE_IND) goto out; - break; + case PH_ACTIVATE_IND: case PH_ACTIVATE_CNF: - case PH_DEACTIVATE_CNF: resp = hh->prim; - if (hh->prim == (activate) ? PH_ACTIVATE_CNF : PH_DEACTIVATE_CNF) goto out; + priv->active = 1; + if (activate) goto out; + break; + case PH_DEACTIVATE_CNF: + case PH_DEACTIVATE_IND: + resp = hh->prim; + priv->active = 0; + if (!activate) goto out; break; case PH_ACTIVATE_REQ: /* REQ echo, ignore */ case PH_DEACTIVATE_REQ: @@ -481,6 +489,9 @@ static ftdm_status_t misdn_activate_channel(ftdm_channel_t *chan, int activate) case MPH_INFORMATION_IND: misdn_handle_mph_information_ind(chan, hh, MISDN_MSG_DATA(buf), retval - MISDN_HEADER_LEN); break; + case PH_DATA_IND: /* ignore */ + case PH_DATA_CNF: /* ignore */ + break; default: /* other messages, ignore */ ftdm_log_chan(chan, FTDM_LOG_DEBUG, "mISDN ignoring event '%s (%#x)', id %#x, while waiting for %s confirmation\n", misdn_event2str(hh->prim), hh->prim, hh->id, (activate) ? "activation" : "deactivation"); @@ -500,8 +511,8 @@ out: (activate) ? "activation" : "deactivation"); return FTDM_TIMEOUT; } - if ((req == PH_ACTIVATE_IND && !(resp == PH_ACTIVATE_CNF || resp == PH_ACTIVATE_IND)) || - (req == PH_DEACTIVATE_IND && !(resp == PH_DEACTIVATE_CNF || resp == PH_DEACTIVATE_CNF))) { + if ((req == PH_ACTIVATE_REQ && !(resp == PH_ACTIVATE_CNF || resp == PH_ACTIVATE_IND)) || + (req == PH_DEACTIVATE_REQ && !(resp == PH_DEACTIVATE_CNF || resp == PH_DEACTIVATE_IND))) { ftdm_log_chan(chan, FTDM_LOG_ERROR, "mISDN received '%s' while waiting for %s\n", misdn_event2str(resp), (activate) ? "activation" : "deactivation"); return FTDM_FAIL; @@ -1436,6 +1447,8 @@ static ftdm_status_t misdn_open_range(ftdm_span_t *span, ftdm_chan_type_t type, ftdm_channel_set_feature(ftdmchan, FTDM_CHANNEL_FEATURE_INTERVAL); } else { + /* early activate D-Channel */ + misdn_activate_channel(ftdmchan, 1); ftdmchan->native_codec = ftdmchan->effective_codec = FTDM_CODEC_NONE; } num_configured++; From e3698c206727b93b3590bbdc083b3b2faf4eed70 Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Fri, 23 Mar 2012 01:18:06 +0100 Subject: [PATCH 194/292] ftmod_misdn: Make sure misdn_read() doesn't loop forever and improve logging etc. Signed-off-by: Stefan Knoblich --- .../src/ftmod/ftmod_misdn/ftmod_misdn.c | 32 ++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c index 326d00a9d9..efde390f8a 100644 --- a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c +++ b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c @@ -76,6 +76,15 @@ #define MIN(x,y) (((x) < (y)) ? (x) : (y)) #endif +#ifndef MAX +#define MAX(x,y) (((x) > (y)) ? (x) : (y)) +#endif + +#ifndef CLAMP +#define CLAMP(val,min,max) (MIN(max,MAX(min,val))) +#endif + + typedef enum { MISDN_CAPS_NONE = 0, @@ -1208,6 +1217,7 @@ static FIO_READ_FUNCTION(misdn_read) struct mISDNhead *hh = (struct mISDNhead *)rbuf; int bytes = *datalen; int retval; + int maxretry = 10; if (priv->state == MISDN_CHAN_STATE_CLOSED) { ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "mISDN ignoring read on closed channel\n"); @@ -1216,15 +1226,20 @@ static FIO_READ_FUNCTION(misdn_read) return FTDM_SUCCESS; } + /* nothing read yet */ + *datalen = 0; + /* * try to read all messages, as long as we haven't received a PH_DATA_IND one * we'll get a lot of "mISDN_send: error -12" message in dmesg otherwise * (= b-channel receive queue overflowing) */ - while (1) { - if ((retval = recvfrom(ftdmchan->sockfd, rbuf, sizeof(rbuf), 0, NULL, NULL)) < 0) { - if (errno == EWOULDBLOCK) break; - if (errno == EAGAIN) continue; + while (maxretry--) { + struct sockaddr_mISDN addr; + socklen_t addrlen = sizeof(addr); + + if ((retval = recvfrom(ftdmchan->sockfd, rbuf, sizeof(rbuf), 0, (struct sockaddr *)&addr, &addrlen)) < 0) { + if (errno == EWOULDBLOCK || errno == EAGAIN) break; ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "mISDN failed to receive incoming message: %s\n", strerror(errno)); return FTDM_FAIL; @@ -1236,9 +1251,12 @@ static FIO_READ_FUNCTION(misdn_read) } if (hh->prim == PH_DATA_IND) { - *datalen = MIN(bytes, retval - MISDN_HEADER_LEN); + *datalen = CLAMP(retval - MISDN_HEADER_LEN, 0, bytes); memcpy(data, rbuf + MISDN_HEADER_LEN, *datalen); #ifdef MISDN_DEBUG_IO + ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "misdn_read() received '%s', id: %#x, with %d bytes from channel socket %d [dev.ch: %d.%d]\n", + misdn_event2str(hh->prim), hh->id, retval - MISDN_HEADER_LEN, ftdmchan->sockfd, addr.dev, addr.channel); + if (*datalen > 0) { char hbuf[MAX_DATA_MEM] = { 0 }; print_hex_bytes(data, *datalen, hbuf, sizeof(hbuf)); @@ -1248,6 +1266,10 @@ static FIO_READ_FUNCTION(misdn_read) return FTDM_SUCCESS; } else { *datalen = 0; +#ifdef MISDN_DEBUG_IO + ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "misdn_read() received '%s', id: %#x, with %d bytes from channel socket %d [dev.ch: %d.%d]\n", + misdn_event2str(hh->prim), hh->id, retval - MISDN_HEADER_LEN, ftdmchan->sockfd, addr.dev, addr.channel); +#endif /* event */ misdn_handle_incoming(ftdmchan, rbuf, retval); } From 59afd961289940c7b8fdaefbf51e337493055946 Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Fri, 23 Mar 2012 08:47:48 -0500 Subject: [PATCH 195/292] FS-3403 --resolve --- src/mod/applications/mod_commands/mod_commands.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/applications/mod_commands/mod_commands.c b/src/mod/applications/mod_commands/mod_commands.c index 3e34f0a80d..287afa6d95 100644 --- a/src/mod/applications/mod_commands/mod_commands.c +++ b/src/mod/applications/mod_commands/mod_commands.c @@ -2374,7 +2374,7 @@ SWITCH_STANDARD_API(dual_transfer_function) } } - if ((dp2 = strstr(dest1, "/inline")) && *(dp2 + 7) == '\0') { + if ((dp2 = strstr(dest2, "/inline")) && *(dp2 + 7) == '\0') { *dp2++ = '\0'; } else { if ((dp2 = strchr(dest2, '/'))) { From 061d6c9cdae86d81ea491df11b7f9b44fd35d089 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 23 Mar 2012 19:03:06 -0500 Subject: [PATCH 196/292] FS-4012 oh no are we in the 4xxx range for bug numbers now --- src/mod/endpoints/mod_sofia/sofia.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 2cab2095e7..fbb767adee 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -87,16 +87,16 @@ void sofia_handle_sip_r_notify(switch_core_session_t *session, int status, nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sofia_private_t *sofia_private, sip_t const *sip, sofia_dispatch_event_t *de, tagi_t tags[]) { - - if (status >= 300 && sip && sip->sip_call_id && (!sofia_private || !sofia_private->is_call)) { +#if 0 + if (status >= 300 && sip && !sip->sip_retry_after && sip->sip_call_id && (!sofia_private || !sofia_private->is_call)) { char *sql; - + sql = switch_mprintf("delete from sip_subscriptions where call_id='%q'", sip->sip_call_id->i_id); switch_assert(sql != NULL); sofia_glue_execute_sql(profile, &sql, SWITCH_TRUE); nua_handle_destroy(nh); } - +#endif } #define url_set_chanvars(session, url, varprefix) _url_set_chanvars(session, url, #varprefix "_user", #varprefix "_host", #varprefix "_port", #varprefix "_uri", #varprefix "_params") From d5ad86706f94783a6c58ff74829b7628ccd89a3d Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 23 Mar 2012 19:05:20 -0500 Subject: [PATCH 197/292] FS-4023 --resolve makes sense thx --- src/switch_ivr_async.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/switch_ivr_async.c b/src/switch_ivr_async.c index 6e3385ff23..17aac4a63f 100644 --- a/src/switch_ivr_async.c +++ b/src/switch_ivr_async.c @@ -2621,8 +2621,7 @@ static switch_bool_t tone_detect_callback(switch_media_bug_t *bug, void *user_da case SWITCH_ABC_TYPE_READ_REPLACE: case SWITCH_ABC_TYPE_WRITE_REPLACE: { - int skip = 0; - + if (type == SWITCH_ABC_TYPE_READ_REPLACE) { frame = switch_core_media_bug_get_read_replace_frame(bug); } else { @@ -2630,6 +2629,7 @@ static switch_bool_t tone_detect_callback(switch_media_bug_t *bug, void *user_da } for (i = 0; i < cont->index; i++) { + int skip = 0; if (cont->list[i].sleep) { cont->list[i].sleep--; @@ -2651,7 +2651,7 @@ static switch_bool_t tone_detect_callback(switch_media_bug_t *bug, void *user_da skip = 1; if (skip) - return SWITCH_TRUE; + continue; if (teletone_multi_tone_detect(&cont->list[i].mt, frame->data, frame->samples)) { switch_event_t *event; From ee71daa1f66b458f868d7e3d36dcf8b3aaa056df Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Mon, 9 Jan 2012 15:13:57 -0500 Subject: [PATCH 198/292] conf: mv conf/* -> conf/vanilla/* --- Makefile.am | 15 +++++++++------ conf/{ => vanilla}/README_IMPORTANT.txt | 0 .../autoload_configs/abstraction.conf.xml | 0 conf/{ => vanilla}/autoload_configs/acl.conf.xml | 0 conf/{ => vanilla}/autoload_configs/alsa.conf.xml | 0 .../autoload_configs/blacklist.conf.xml | 0 .../autoload_configs/callcenter.conf.xml | 0 .../autoload_configs/cdr_csv.conf.xml | 0 .../autoload_configs/cdr_mongodb.conf.xml | 0 .../autoload_configs/cdr_pg_csv.conf.xml | 0 .../autoload_configs/cdr_sqlite.conf.xml | 0 .../autoload_configs/cepstral.conf.xml | 0 .../autoload_configs/cidlookup.conf.xml | 0 .../autoload_configs/conference.conf.xml | 0 .../autoload_configs/console.conf.xml | 0 conf/{ => vanilla}/autoload_configs/db.conf.xml | 0 .../autoload_configs/dialplan_directory.conf.xml | 0 .../autoload_configs/dingaling.conf.xml | 0 .../autoload_configs/directory.conf.xml | 0 .../autoload_configs/distributor.conf.xml | 0 .../autoload_configs/easyroute.conf.xml | 0 conf/{ => vanilla}/autoload_configs/enum.conf.xml | 0 .../autoload_configs/erlang_event.conf.xml | 0 .../autoload_configs/event_multicast.conf.xml | 0 .../autoload_configs/event_socket.conf.xml | 0 conf/{ => vanilla}/autoload_configs/fax.conf.xml | 0 conf/{ => vanilla}/autoload_configs/fifo.conf.xml | 0 conf/{ => vanilla}/autoload_configs/hash.conf.xml | 0 .../autoload_configs/httapi.conf.xml | 0 .../autoload_configs/http_cache.conf.xml | 0 conf/{ => vanilla}/autoload_configs/ivr.conf.xml | 0 conf/{ => vanilla}/autoload_configs/java.conf.xml | 0 conf/{ => vanilla}/autoload_configs/lcr.conf.xml | 0 .../autoload_configs/local_stream.conf.xml | 0 .../autoload_configs/logfile.conf.xml | 0 conf/{ => vanilla}/autoload_configs/lua.conf.xml | 0 .../autoload_configs/memcache.conf.xml | 0 .../autoload_configs/modules.conf.xml | 0 .../{ => vanilla}/autoload_configs/mongo.conf.xml | 0 .../autoload_configs/nibblebill.conf.xml | 0 conf/{ => vanilla}/autoload_configs/opal.conf.xml | 0 conf/{ => vanilla}/autoload_configs/osp.conf.xml | 0 conf/{ => vanilla}/autoload_configs/perl.conf.xml | 0 .../autoload_configs/pocketsphinx.conf.xml | 0 .../autoload_configs/portaudio.conf.xml | 0 .../autoload_configs/post_load_modules.conf.xml | 0 .../autoload_configs/presence_map.conf.xml | 0 .../autoload_configs/python.conf.xml | 0 .../{ => vanilla}/autoload_configs/redis.conf.xml | 0 conf/{ => vanilla}/autoload_configs/rss.conf.xml | 0 conf/{ => vanilla}/autoload_configs/rtmp.conf.xml | 0 .../autoload_configs/sangoma_codec.conf.xml | 0 .../{ => vanilla}/autoload_configs/shout.conf.xml | 0 .../autoload_configs/skinny.conf.xml | 0 .../{ => vanilla}/autoload_configs/sofia.conf.xml | 0 .../autoload_configs/spandsp.conf.xml | 0 .../autoload_configs/spidermonkey.conf.xml | 0 .../autoload_configs/switch.conf.xml | 0 .../autoload_configs/syslog.conf.xml | 0 .../autoload_configs/timezones.conf.xml | 0 .../autoload_configs/tts_commandline.conf.xml | 0 .../autoload_configs/unicall.conf.xml | 0 .../autoload_configs/unimrcp.conf.xml | 0 .../autoload_configs/voicemail.conf.xml | 0 .../autoload_configs/voicemail_ivr.conf.xml | 0 .../autoload_configs/xml_cdr.conf.xml | 0 .../autoload_configs/xml_curl.conf.xml | 0 .../autoload_configs/xml_rpc.conf.xml | 0 .../autoload_configs/zeroconf.conf.xml | 0 conf/{ => vanilla}/chatplan/default.xml | 0 conf/{ => vanilla}/config.FS0 | 0 conf/{ => vanilla}/dialplan/default.xml | 0 conf/{ => vanilla}/dialplan/default/00_ladspa.xml | 0 .../dialplan/default/00_pizza_demo.xml | 0 .../dialplan/default/01_Talking_Clock.xml | 0 .../dialplan/default/01_example.com.xml | 0 .../dialplan/default/ideasip.com.noload | 0 .../dialplan/default/pulver.com.noload | 0 .../dialplan/default/sipbroker.com.noload | 0 .../dialplan/default/sipphone.com.noload | 0 .../dialplan/default/tollfreegateway.com.noload | 0 conf/{ => vanilla}/dialplan/features.xml | 0 conf/{ => vanilla}/dialplan/public.xml | 0 .../dialplan/public/00_inbound_did.xml | 0 conf/{ => vanilla}/dialplan/skinny-patterns.xml | 0 .../dialplan/skinny-patterns/20-Demo.xml | 0 .../skinny-patterns/20-Local_extension.xml | 0 .../dialplan/skinny-patterns/90-External.xml | 0 .../dialplan/skinny-patterns/99-Default_Drop.xml | 0 conf/{ => vanilla}/directory/default.xml | 0 conf/{ => vanilla}/directory/default/1000.xml | 0 conf/{ => vanilla}/directory/default/1001.xml | 0 conf/{ => vanilla}/directory/default/1002.xml | 0 conf/{ => vanilla}/directory/default/1003.xml | 0 conf/{ => vanilla}/directory/default/1004.xml | 0 conf/{ => vanilla}/directory/default/1005.xml | 0 conf/{ => vanilla}/directory/default/1006.xml | 0 conf/{ => vanilla}/directory/default/1007.xml | 0 conf/{ => vanilla}/directory/default/1008.xml | 0 conf/{ => vanilla}/directory/default/1009.xml | 0 conf/{ => vanilla}/directory/default/1010.xml | 0 conf/{ => vanilla}/directory/default/1011.xml | 0 conf/{ => vanilla}/directory/default/1012.xml | 0 conf/{ => vanilla}/directory/default/1013.xml | 0 conf/{ => vanilla}/directory/default/1014.xml | 0 conf/{ => vanilla}/directory/default/1015.xml | 0 conf/{ => vanilla}/directory/default/1016.xml | 0 conf/{ => vanilla}/directory/default/1017.xml | 0 conf/{ => vanilla}/directory/default/1018.xml | 0 conf/{ => vanilla}/directory/default/1019.xml | 0 conf/{ => vanilla}/directory/default/brian.xml | 0 conf/{ => vanilla}/directory/default/default.xml | 0 .../directory/default/example.com.xml | 0 .../directory/default/skinny-example.xml | 0 conf/{ => vanilla}/extensions.conf | 0 conf/{ => vanilla}/freeswitch.xml | 0 conf/{ => vanilla}/fur_elise.ttml | 0 conf/{ => vanilla}/ivr_menus/demo_ivr.xml | 0 conf/{ => vanilla}/jingle_profiles/client.xml | 0 conf/{ => vanilla}/jingle_profiles/server.xml | 0 conf/{ => vanilla}/lang/de/de.xml | 0 conf/{ => vanilla}/lang/de/demo/demo.xml | 0 conf/{ => vanilla}/lang/de/vm/sounds.xml | 0 conf/{ => vanilla}/lang/de/vm/tts.xml | 0 conf/{ => vanilla}/lang/en/demo/demo-ivr.xml | 0 conf/{ => vanilla}/lang/en/demo/demo.xml | 0 conf/{ => vanilla}/lang/en/dir/sounds.xml | 0 conf/{ => vanilla}/lang/en/dir/tts.xml | 0 conf/{ => vanilla}/lang/en/en.xml | 0 conf/{ => vanilla}/lang/en/ivr/sounds.xml | 0 conf/{ => vanilla}/lang/en/vm/sounds.xml | 0 conf/{ => vanilla}/lang/en/vm/tts.xml | 0 conf/{ => vanilla}/lang/en/vm/voicemail_ivr.xml | 0 conf/{ => vanilla}/lang/fr/demo/demo.xml | 0 conf/{ => vanilla}/lang/fr/dir/sounds.xml | 0 conf/{ => vanilla}/lang/fr/dir/tts.xml | 0 conf/{ => vanilla}/lang/fr/fr.xml | 0 conf/{ => vanilla}/lang/fr/vm/sounds.xml | 0 conf/{ => vanilla}/lang/he/demo/demo-ivr.xml | 0 conf/{ => vanilla}/lang/he/demo/demo.xml | 0 conf/{ => vanilla}/lang/he/dir/sounds.xml | 0 conf/{ => vanilla}/lang/he/he.xml | 0 conf/{ => vanilla}/lang/he/vm/sounds.xml | 0 conf/{ => vanilla}/lang/ru/demo/demo-ivr.xml | 0 conf/{ => vanilla}/lang/ru/demo/demo.xml | 0 conf/{ => vanilla}/lang/ru/dir/sounds.xml | 0 conf/{ => vanilla}/lang/ru/dir/tts.xml | 0 conf/{ => vanilla}/lang/ru/ru.xml | 0 conf/{ => vanilla}/lang/ru/vm/sounds.xml | 0 conf/{ => vanilla}/lang/ru/vm/tts.xml | 0 conf/{ => vanilla}/mime.types | 0 .../mrcp_profiles/loquendo-7-mrcp-v2.xml | 0 .../mrcp_profiles/nuance-1.0.0-mrcp-v1.xml | 0 .../mrcp_profiles/nuance-5.0-mrcp-v1.xml | 0 .../mrcp_profiles/nuance-5.0-mrcp-v2.xml | 0 .../mrcp_profiles/unimrcpserver-mrcp-v1.xml | 0 .../mrcp_profiles/voxeo-prophecy-8.0-mrcp-v1.xml | 0 conf/{ => vanilla}/notify-voicemail.tpl | 0 conf/{ => vanilla}/sip_profiles/external.xml | 0 .../sip_profiles/external/example.xml | 0 conf/{ => vanilla}/sip_profiles/internal-ipv6.xml | 0 conf/{ => vanilla}/sip_profiles/internal.xml | 0 .../sip_profiles/internal/example.xml | 0 conf/{ => vanilla}/skinny_profiles/internal.xml | 0 conf/{ => vanilla}/tetris.ttml | 0 conf/{ => vanilla}/vars.xml | 0 conf/{ => vanilla}/voicemail.tpl | 0 conf/{ => vanilla}/web-vm.tpl | 0 conf/{ => vanilla}/yaml/extensions.yaml | 0 conf/{ => vanilla}/yaml/mod_yaml.yaml | 0 170 files changed, 9 insertions(+), 6 deletions(-) rename conf/{ => vanilla}/README_IMPORTANT.txt (100%) rename conf/{ => vanilla}/autoload_configs/abstraction.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/acl.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/alsa.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/blacklist.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/callcenter.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/cdr_csv.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/cdr_mongodb.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/cdr_pg_csv.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/cdr_sqlite.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/cepstral.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/cidlookup.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/conference.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/console.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/db.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/dialplan_directory.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/dingaling.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/directory.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/distributor.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/easyroute.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/enum.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/erlang_event.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/event_multicast.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/event_socket.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/fax.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/fifo.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/hash.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/httapi.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/http_cache.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/ivr.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/java.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/lcr.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/local_stream.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/logfile.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/lua.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/memcache.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/modules.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/mongo.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/nibblebill.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/opal.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/osp.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/perl.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/pocketsphinx.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/portaudio.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/post_load_modules.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/presence_map.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/python.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/redis.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/rss.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/rtmp.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/sangoma_codec.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/shout.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/skinny.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/sofia.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/spandsp.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/spidermonkey.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/switch.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/syslog.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/timezones.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/tts_commandline.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/unicall.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/unimrcp.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/voicemail.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/voicemail_ivr.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/xml_cdr.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/xml_curl.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/xml_rpc.conf.xml (100%) rename conf/{ => vanilla}/autoload_configs/zeroconf.conf.xml (100%) rename conf/{ => vanilla}/chatplan/default.xml (100%) rename conf/{ => vanilla}/config.FS0 (100%) rename conf/{ => vanilla}/dialplan/default.xml (100%) rename conf/{ => vanilla}/dialplan/default/00_ladspa.xml (100%) rename conf/{ => vanilla}/dialplan/default/00_pizza_demo.xml (100%) rename conf/{ => vanilla}/dialplan/default/01_Talking_Clock.xml (100%) rename conf/{ => vanilla}/dialplan/default/01_example.com.xml (100%) rename conf/{ => vanilla}/dialplan/default/ideasip.com.noload (100%) rename conf/{ => vanilla}/dialplan/default/pulver.com.noload (100%) rename conf/{ => vanilla}/dialplan/default/sipbroker.com.noload (100%) rename conf/{ => vanilla}/dialplan/default/sipphone.com.noload (100%) rename conf/{ => vanilla}/dialplan/default/tollfreegateway.com.noload (100%) rename conf/{ => vanilla}/dialplan/features.xml (100%) rename conf/{ => vanilla}/dialplan/public.xml (100%) rename conf/{ => vanilla}/dialplan/public/00_inbound_did.xml (100%) rename conf/{ => vanilla}/dialplan/skinny-patterns.xml (100%) rename conf/{ => vanilla}/dialplan/skinny-patterns/20-Demo.xml (100%) rename conf/{ => vanilla}/dialplan/skinny-patterns/20-Local_extension.xml (100%) rename conf/{ => vanilla}/dialplan/skinny-patterns/90-External.xml (100%) rename conf/{ => vanilla}/dialplan/skinny-patterns/99-Default_Drop.xml (100%) rename conf/{ => vanilla}/directory/default.xml (100%) rename conf/{ => vanilla}/directory/default/1000.xml (100%) rename conf/{ => vanilla}/directory/default/1001.xml (100%) rename conf/{ => vanilla}/directory/default/1002.xml (100%) rename conf/{ => vanilla}/directory/default/1003.xml (100%) rename conf/{ => vanilla}/directory/default/1004.xml (100%) rename conf/{ => vanilla}/directory/default/1005.xml (100%) rename conf/{ => vanilla}/directory/default/1006.xml (100%) rename conf/{ => vanilla}/directory/default/1007.xml (100%) rename conf/{ => vanilla}/directory/default/1008.xml (100%) rename conf/{ => vanilla}/directory/default/1009.xml (100%) rename conf/{ => vanilla}/directory/default/1010.xml (100%) rename conf/{ => vanilla}/directory/default/1011.xml (100%) rename conf/{ => vanilla}/directory/default/1012.xml (100%) rename conf/{ => vanilla}/directory/default/1013.xml (100%) rename conf/{ => vanilla}/directory/default/1014.xml (100%) rename conf/{ => vanilla}/directory/default/1015.xml (100%) rename conf/{ => vanilla}/directory/default/1016.xml (100%) rename conf/{ => vanilla}/directory/default/1017.xml (100%) rename conf/{ => vanilla}/directory/default/1018.xml (100%) rename conf/{ => vanilla}/directory/default/1019.xml (100%) rename conf/{ => vanilla}/directory/default/brian.xml (100%) rename conf/{ => vanilla}/directory/default/default.xml (100%) rename conf/{ => vanilla}/directory/default/example.com.xml (100%) rename conf/{ => vanilla}/directory/default/skinny-example.xml (100%) rename conf/{ => vanilla}/extensions.conf (100%) rename conf/{ => vanilla}/freeswitch.xml (100%) rename conf/{ => vanilla}/fur_elise.ttml (100%) rename conf/{ => vanilla}/ivr_menus/demo_ivr.xml (100%) rename conf/{ => vanilla}/jingle_profiles/client.xml (100%) rename conf/{ => vanilla}/jingle_profiles/server.xml (100%) rename conf/{ => vanilla}/lang/de/de.xml (100%) rename conf/{ => vanilla}/lang/de/demo/demo.xml (100%) rename conf/{ => vanilla}/lang/de/vm/sounds.xml (100%) rename conf/{ => vanilla}/lang/de/vm/tts.xml (100%) rename conf/{ => vanilla}/lang/en/demo/demo-ivr.xml (100%) rename conf/{ => vanilla}/lang/en/demo/demo.xml (100%) rename conf/{ => vanilla}/lang/en/dir/sounds.xml (100%) rename conf/{ => vanilla}/lang/en/dir/tts.xml (100%) rename conf/{ => vanilla}/lang/en/en.xml (100%) rename conf/{ => vanilla}/lang/en/ivr/sounds.xml (100%) rename conf/{ => vanilla}/lang/en/vm/sounds.xml (100%) rename conf/{ => vanilla}/lang/en/vm/tts.xml (100%) rename conf/{ => vanilla}/lang/en/vm/voicemail_ivr.xml (100%) rename conf/{ => vanilla}/lang/fr/demo/demo.xml (100%) rename conf/{ => vanilla}/lang/fr/dir/sounds.xml (100%) rename conf/{ => vanilla}/lang/fr/dir/tts.xml (100%) rename conf/{ => vanilla}/lang/fr/fr.xml (100%) rename conf/{ => vanilla}/lang/fr/vm/sounds.xml (100%) rename conf/{ => vanilla}/lang/he/demo/demo-ivr.xml (100%) rename conf/{ => vanilla}/lang/he/demo/demo.xml (100%) rename conf/{ => vanilla}/lang/he/dir/sounds.xml (100%) rename conf/{ => vanilla}/lang/he/he.xml (100%) rename conf/{ => vanilla}/lang/he/vm/sounds.xml (100%) rename conf/{ => vanilla}/lang/ru/demo/demo-ivr.xml (100%) rename conf/{ => vanilla}/lang/ru/demo/demo.xml (100%) rename conf/{ => vanilla}/lang/ru/dir/sounds.xml (100%) rename conf/{ => vanilla}/lang/ru/dir/tts.xml (100%) rename conf/{ => vanilla}/lang/ru/ru.xml (100%) rename conf/{ => vanilla}/lang/ru/vm/sounds.xml (100%) rename conf/{ => vanilla}/lang/ru/vm/tts.xml (100%) rename conf/{ => vanilla}/mime.types (100%) rename conf/{ => vanilla}/mrcp_profiles/loquendo-7-mrcp-v2.xml (100%) rename conf/{ => vanilla}/mrcp_profiles/nuance-1.0.0-mrcp-v1.xml (100%) rename conf/{ => vanilla}/mrcp_profiles/nuance-5.0-mrcp-v1.xml (100%) rename conf/{ => vanilla}/mrcp_profiles/nuance-5.0-mrcp-v2.xml (100%) rename conf/{ => vanilla}/mrcp_profiles/unimrcpserver-mrcp-v1.xml (100%) rename conf/{ => vanilla}/mrcp_profiles/voxeo-prophecy-8.0-mrcp-v1.xml (100%) rename conf/{ => vanilla}/notify-voicemail.tpl (100%) rename conf/{ => vanilla}/sip_profiles/external.xml (100%) rename conf/{ => vanilla}/sip_profiles/external/example.xml (100%) rename conf/{ => vanilla}/sip_profiles/internal-ipv6.xml (100%) rename conf/{ => vanilla}/sip_profiles/internal.xml (100%) rename conf/{ => vanilla}/sip_profiles/internal/example.xml (100%) rename conf/{ => vanilla}/skinny_profiles/internal.xml (100%) rename conf/{ => vanilla}/tetris.ttml (100%) rename conf/{ => vanilla}/vars.xml (100%) rename conf/{ => vanilla}/voicemail.tpl (100%) rename conf/{ => vanilla}/web-vm.tpl (100%) rename conf/{ => vanilla}/yaml/extensions.yaml (100%) rename conf/{ => vanilla}/yaml/mod_yaml.yaml (100%) diff --git a/Makefile.am b/Makefile.am index 0261b709b0..dfe8197bb1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -466,7 +466,7 @@ libs/srtp/libsrtp.la: libs/srtp libs/srtp/.update ## yaml-files: @echo `mkdir $(DESTDIR)$(sysconfdir)/yaml 2>/dev/null` - $(INSTALL) -m 644 $(switch_srcdir)/conf/yaml/*.yaml $(DESTDIR)$(sysconfdir)/yaml + $(INSTALL) -m 644 $(switch_srcdir)/conf/default/yaml/*.yaml $(DESTDIR)$(sysconfdir)/yaml vm-sync: test -d $(DESTDIR)$(sysconfdir) || $(mkinstalldirs) $(DESTDIR)$(sysconfdir) @@ -474,20 +474,22 @@ vm-sync: test -d $(DESTDIR)$(sysconfdir)/lang/en || $(mkinstalldirs) $(DESTDIR)$(sysconfdir)/lang/en test -d $(DESTDIR)$(sysconfdir)/lang/en/demo || $(mkinstalldirs) $(DESTDIR)$(sysconfdir)/lang/en/demo test -d $(DESTDIR)$(sysconfdir)/lang/en/vm || $(mkinstalldirs) $(DESTDIR)$(sysconfdir)/lang/en/vm - $(INSTALL) -m 644 $(switch_srcdir)/conf/lang/en/vm/* $(DESTDIR)$(sysconfdir)/lang/en/vm - $(INSTALL) -m 644 $(switch_srcdir)/conf/lang/en/demo/* $(DESTDIR)$(sysconfdir)/lang/en/demo + $(INSTALL) -m 644 $(switch_srcdir)/conf/default/lang/en/vm/* $(DESTDIR)$(sysconfdir)/lang/en/vm + $(INSTALL) -m 644 $(switch_srcdir)/conf/default/lang/en/demo/* $(DESTDIR)$(sysconfdir)/lang/en/demo -samples-conf: +config-%: test -d $(DESTDIR)$(sysconfdir) || $(mkinstalldirs) $(DESTDIR)$(sysconfdir) - for conffile in `cd $(switch_srcdir)/conf && find . -name \*.xml && find . -name \*.conf && find . -name \*.tpl && find . -name \*.ttml && find . -name mime.types` ; do \ + for conffile in `cd $(switch_srcdir)/conf/$* && find . -name \*.xml && find . -name \*.conf && find . -name \*.tpl && find . -name \*.ttml && find . -name mime.types` ; do \ dir=`echo $$conffile | sed -e 's|^\.||' | sed -e 's|/[^/]*$$||'`; \ filename=`echo $$conffile | sed -e 's|^\.||' | sed -e 's|^.*/||'`; \ test -d $(DESTDIR)$(sysconfdir)$$dir || $(mkinstalldirs) $(DESTDIR)$(sysconfdir)$$dir ; \ test -f $(DESTDIR)$(sysconfdir)$$dir/$$filename || \ test -f $(DESTDIR)$(sysconfdir)$$dir/$$filename.noload || \ - $(INSTALL) -m 644 $(switch_srcdir)/conf/$$dir/$$filename $(DESTDIR)$(sysconfdir)$$dir; \ + $(INSTALL) -m 644 $(switch_srcdir)/conf/$*/$$dir/$$filename $(DESTDIR)$(sysconfdir)$$dir; \ done +samples-conf: config-vanilla + samples-htdocs: test -d $(DESTDIR)$(htdocsdir) || $(mkinstalldirs) $(DESTDIR)$(htdocsdir) for htdocsfile in `cd $(switch_srcdir)/htdocs && find . -type f -name \* | sed -e 's|^\.||'` ; do \ @@ -497,6 +499,7 @@ samples-htdocs: test -f $(DESTDIR)$(htdocsdir)$$dir/$$filename || $(INSTALL) -m 644 $(switch_srcdir)/htdocs/$$dir/$$filename $(DESTDIR)$(htdocsdir)$$dir 2>/dev/null; \ done + samples: samples-conf samples-htdocs install-exec-local: diff --git a/conf/README_IMPORTANT.txt b/conf/vanilla/README_IMPORTANT.txt similarity index 100% rename from conf/README_IMPORTANT.txt rename to conf/vanilla/README_IMPORTANT.txt diff --git a/conf/autoload_configs/abstraction.conf.xml b/conf/vanilla/autoload_configs/abstraction.conf.xml similarity index 100% rename from conf/autoload_configs/abstraction.conf.xml rename to conf/vanilla/autoload_configs/abstraction.conf.xml diff --git a/conf/autoload_configs/acl.conf.xml b/conf/vanilla/autoload_configs/acl.conf.xml similarity index 100% rename from conf/autoload_configs/acl.conf.xml rename to conf/vanilla/autoload_configs/acl.conf.xml diff --git a/conf/autoload_configs/alsa.conf.xml b/conf/vanilla/autoload_configs/alsa.conf.xml similarity index 100% rename from conf/autoload_configs/alsa.conf.xml rename to conf/vanilla/autoload_configs/alsa.conf.xml diff --git a/conf/autoload_configs/blacklist.conf.xml b/conf/vanilla/autoload_configs/blacklist.conf.xml similarity index 100% rename from conf/autoload_configs/blacklist.conf.xml rename to conf/vanilla/autoload_configs/blacklist.conf.xml diff --git a/conf/autoload_configs/callcenter.conf.xml b/conf/vanilla/autoload_configs/callcenter.conf.xml similarity index 100% rename from conf/autoload_configs/callcenter.conf.xml rename to conf/vanilla/autoload_configs/callcenter.conf.xml diff --git a/conf/autoload_configs/cdr_csv.conf.xml b/conf/vanilla/autoload_configs/cdr_csv.conf.xml similarity index 100% rename from conf/autoload_configs/cdr_csv.conf.xml rename to conf/vanilla/autoload_configs/cdr_csv.conf.xml diff --git a/conf/autoload_configs/cdr_mongodb.conf.xml b/conf/vanilla/autoload_configs/cdr_mongodb.conf.xml similarity index 100% rename from conf/autoload_configs/cdr_mongodb.conf.xml rename to conf/vanilla/autoload_configs/cdr_mongodb.conf.xml diff --git a/conf/autoload_configs/cdr_pg_csv.conf.xml b/conf/vanilla/autoload_configs/cdr_pg_csv.conf.xml similarity index 100% rename from conf/autoload_configs/cdr_pg_csv.conf.xml rename to conf/vanilla/autoload_configs/cdr_pg_csv.conf.xml diff --git a/conf/autoload_configs/cdr_sqlite.conf.xml b/conf/vanilla/autoload_configs/cdr_sqlite.conf.xml similarity index 100% rename from conf/autoload_configs/cdr_sqlite.conf.xml rename to conf/vanilla/autoload_configs/cdr_sqlite.conf.xml diff --git a/conf/autoload_configs/cepstral.conf.xml b/conf/vanilla/autoload_configs/cepstral.conf.xml similarity index 100% rename from conf/autoload_configs/cepstral.conf.xml rename to conf/vanilla/autoload_configs/cepstral.conf.xml diff --git a/conf/autoload_configs/cidlookup.conf.xml b/conf/vanilla/autoload_configs/cidlookup.conf.xml similarity index 100% rename from conf/autoload_configs/cidlookup.conf.xml rename to conf/vanilla/autoload_configs/cidlookup.conf.xml diff --git a/conf/autoload_configs/conference.conf.xml b/conf/vanilla/autoload_configs/conference.conf.xml similarity index 100% rename from conf/autoload_configs/conference.conf.xml rename to conf/vanilla/autoload_configs/conference.conf.xml diff --git a/conf/autoload_configs/console.conf.xml b/conf/vanilla/autoload_configs/console.conf.xml similarity index 100% rename from conf/autoload_configs/console.conf.xml rename to conf/vanilla/autoload_configs/console.conf.xml diff --git a/conf/autoload_configs/db.conf.xml b/conf/vanilla/autoload_configs/db.conf.xml similarity index 100% rename from conf/autoload_configs/db.conf.xml rename to conf/vanilla/autoload_configs/db.conf.xml diff --git a/conf/autoload_configs/dialplan_directory.conf.xml b/conf/vanilla/autoload_configs/dialplan_directory.conf.xml similarity index 100% rename from conf/autoload_configs/dialplan_directory.conf.xml rename to conf/vanilla/autoload_configs/dialplan_directory.conf.xml diff --git a/conf/autoload_configs/dingaling.conf.xml b/conf/vanilla/autoload_configs/dingaling.conf.xml similarity index 100% rename from conf/autoload_configs/dingaling.conf.xml rename to conf/vanilla/autoload_configs/dingaling.conf.xml diff --git a/conf/autoload_configs/directory.conf.xml b/conf/vanilla/autoload_configs/directory.conf.xml similarity index 100% rename from conf/autoload_configs/directory.conf.xml rename to conf/vanilla/autoload_configs/directory.conf.xml diff --git a/conf/autoload_configs/distributor.conf.xml b/conf/vanilla/autoload_configs/distributor.conf.xml similarity index 100% rename from conf/autoload_configs/distributor.conf.xml rename to conf/vanilla/autoload_configs/distributor.conf.xml diff --git a/conf/autoload_configs/easyroute.conf.xml b/conf/vanilla/autoload_configs/easyroute.conf.xml similarity index 100% rename from conf/autoload_configs/easyroute.conf.xml rename to conf/vanilla/autoload_configs/easyroute.conf.xml diff --git a/conf/autoload_configs/enum.conf.xml b/conf/vanilla/autoload_configs/enum.conf.xml similarity index 100% rename from conf/autoload_configs/enum.conf.xml rename to conf/vanilla/autoload_configs/enum.conf.xml diff --git a/conf/autoload_configs/erlang_event.conf.xml b/conf/vanilla/autoload_configs/erlang_event.conf.xml similarity index 100% rename from conf/autoload_configs/erlang_event.conf.xml rename to conf/vanilla/autoload_configs/erlang_event.conf.xml diff --git a/conf/autoload_configs/event_multicast.conf.xml b/conf/vanilla/autoload_configs/event_multicast.conf.xml similarity index 100% rename from conf/autoload_configs/event_multicast.conf.xml rename to conf/vanilla/autoload_configs/event_multicast.conf.xml diff --git a/conf/autoload_configs/event_socket.conf.xml b/conf/vanilla/autoload_configs/event_socket.conf.xml similarity index 100% rename from conf/autoload_configs/event_socket.conf.xml rename to conf/vanilla/autoload_configs/event_socket.conf.xml diff --git a/conf/autoload_configs/fax.conf.xml b/conf/vanilla/autoload_configs/fax.conf.xml similarity index 100% rename from conf/autoload_configs/fax.conf.xml rename to conf/vanilla/autoload_configs/fax.conf.xml diff --git a/conf/autoload_configs/fifo.conf.xml b/conf/vanilla/autoload_configs/fifo.conf.xml similarity index 100% rename from conf/autoload_configs/fifo.conf.xml rename to conf/vanilla/autoload_configs/fifo.conf.xml diff --git a/conf/autoload_configs/hash.conf.xml b/conf/vanilla/autoload_configs/hash.conf.xml similarity index 100% rename from conf/autoload_configs/hash.conf.xml rename to conf/vanilla/autoload_configs/hash.conf.xml diff --git a/conf/autoload_configs/httapi.conf.xml b/conf/vanilla/autoload_configs/httapi.conf.xml similarity index 100% rename from conf/autoload_configs/httapi.conf.xml rename to conf/vanilla/autoload_configs/httapi.conf.xml diff --git a/conf/autoload_configs/http_cache.conf.xml b/conf/vanilla/autoload_configs/http_cache.conf.xml similarity index 100% rename from conf/autoload_configs/http_cache.conf.xml rename to conf/vanilla/autoload_configs/http_cache.conf.xml diff --git a/conf/autoload_configs/ivr.conf.xml b/conf/vanilla/autoload_configs/ivr.conf.xml similarity index 100% rename from conf/autoload_configs/ivr.conf.xml rename to conf/vanilla/autoload_configs/ivr.conf.xml diff --git a/conf/autoload_configs/java.conf.xml b/conf/vanilla/autoload_configs/java.conf.xml similarity index 100% rename from conf/autoload_configs/java.conf.xml rename to conf/vanilla/autoload_configs/java.conf.xml diff --git a/conf/autoload_configs/lcr.conf.xml b/conf/vanilla/autoload_configs/lcr.conf.xml similarity index 100% rename from conf/autoload_configs/lcr.conf.xml rename to conf/vanilla/autoload_configs/lcr.conf.xml diff --git a/conf/autoload_configs/local_stream.conf.xml b/conf/vanilla/autoload_configs/local_stream.conf.xml similarity index 100% rename from conf/autoload_configs/local_stream.conf.xml rename to conf/vanilla/autoload_configs/local_stream.conf.xml diff --git a/conf/autoload_configs/logfile.conf.xml b/conf/vanilla/autoload_configs/logfile.conf.xml similarity index 100% rename from conf/autoload_configs/logfile.conf.xml rename to conf/vanilla/autoload_configs/logfile.conf.xml diff --git a/conf/autoload_configs/lua.conf.xml b/conf/vanilla/autoload_configs/lua.conf.xml similarity index 100% rename from conf/autoload_configs/lua.conf.xml rename to conf/vanilla/autoload_configs/lua.conf.xml diff --git a/conf/autoload_configs/memcache.conf.xml b/conf/vanilla/autoload_configs/memcache.conf.xml similarity index 100% rename from conf/autoload_configs/memcache.conf.xml rename to conf/vanilla/autoload_configs/memcache.conf.xml diff --git a/conf/autoload_configs/modules.conf.xml b/conf/vanilla/autoload_configs/modules.conf.xml similarity index 100% rename from conf/autoload_configs/modules.conf.xml rename to conf/vanilla/autoload_configs/modules.conf.xml diff --git a/conf/autoload_configs/mongo.conf.xml b/conf/vanilla/autoload_configs/mongo.conf.xml similarity index 100% rename from conf/autoload_configs/mongo.conf.xml rename to conf/vanilla/autoload_configs/mongo.conf.xml diff --git a/conf/autoload_configs/nibblebill.conf.xml b/conf/vanilla/autoload_configs/nibblebill.conf.xml similarity index 100% rename from conf/autoload_configs/nibblebill.conf.xml rename to conf/vanilla/autoload_configs/nibblebill.conf.xml diff --git a/conf/autoload_configs/opal.conf.xml b/conf/vanilla/autoload_configs/opal.conf.xml similarity index 100% rename from conf/autoload_configs/opal.conf.xml rename to conf/vanilla/autoload_configs/opal.conf.xml diff --git a/conf/autoload_configs/osp.conf.xml b/conf/vanilla/autoload_configs/osp.conf.xml similarity index 100% rename from conf/autoload_configs/osp.conf.xml rename to conf/vanilla/autoload_configs/osp.conf.xml diff --git a/conf/autoload_configs/perl.conf.xml b/conf/vanilla/autoload_configs/perl.conf.xml similarity index 100% rename from conf/autoload_configs/perl.conf.xml rename to conf/vanilla/autoload_configs/perl.conf.xml diff --git a/conf/autoload_configs/pocketsphinx.conf.xml b/conf/vanilla/autoload_configs/pocketsphinx.conf.xml similarity index 100% rename from conf/autoload_configs/pocketsphinx.conf.xml rename to conf/vanilla/autoload_configs/pocketsphinx.conf.xml diff --git a/conf/autoload_configs/portaudio.conf.xml b/conf/vanilla/autoload_configs/portaudio.conf.xml similarity index 100% rename from conf/autoload_configs/portaudio.conf.xml rename to conf/vanilla/autoload_configs/portaudio.conf.xml diff --git a/conf/autoload_configs/post_load_modules.conf.xml b/conf/vanilla/autoload_configs/post_load_modules.conf.xml similarity index 100% rename from conf/autoload_configs/post_load_modules.conf.xml rename to conf/vanilla/autoload_configs/post_load_modules.conf.xml diff --git a/conf/autoload_configs/presence_map.conf.xml b/conf/vanilla/autoload_configs/presence_map.conf.xml similarity index 100% rename from conf/autoload_configs/presence_map.conf.xml rename to conf/vanilla/autoload_configs/presence_map.conf.xml diff --git a/conf/autoload_configs/python.conf.xml b/conf/vanilla/autoload_configs/python.conf.xml similarity index 100% rename from conf/autoload_configs/python.conf.xml rename to conf/vanilla/autoload_configs/python.conf.xml diff --git a/conf/autoload_configs/redis.conf.xml b/conf/vanilla/autoload_configs/redis.conf.xml similarity index 100% rename from conf/autoload_configs/redis.conf.xml rename to conf/vanilla/autoload_configs/redis.conf.xml diff --git a/conf/autoload_configs/rss.conf.xml b/conf/vanilla/autoload_configs/rss.conf.xml similarity index 100% rename from conf/autoload_configs/rss.conf.xml rename to conf/vanilla/autoload_configs/rss.conf.xml diff --git a/conf/autoload_configs/rtmp.conf.xml b/conf/vanilla/autoload_configs/rtmp.conf.xml similarity index 100% rename from conf/autoload_configs/rtmp.conf.xml rename to conf/vanilla/autoload_configs/rtmp.conf.xml diff --git a/conf/autoload_configs/sangoma_codec.conf.xml b/conf/vanilla/autoload_configs/sangoma_codec.conf.xml similarity index 100% rename from conf/autoload_configs/sangoma_codec.conf.xml rename to conf/vanilla/autoload_configs/sangoma_codec.conf.xml diff --git a/conf/autoload_configs/shout.conf.xml b/conf/vanilla/autoload_configs/shout.conf.xml similarity index 100% rename from conf/autoload_configs/shout.conf.xml rename to conf/vanilla/autoload_configs/shout.conf.xml diff --git a/conf/autoload_configs/skinny.conf.xml b/conf/vanilla/autoload_configs/skinny.conf.xml similarity index 100% rename from conf/autoload_configs/skinny.conf.xml rename to conf/vanilla/autoload_configs/skinny.conf.xml diff --git a/conf/autoload_configs/sofia.conf.xml b/conf/vanilla/autoload_configs/sofia.conf.xml similarity index 100% rename from conf/autoload_configs/sofia.conf.xml rename to conf/vanilla/autoload_configs/sofia.conf.xml diff --git a/conf/autoload_configs/spandsp.conf.xml b/conf/vanilla/autoload_configs/spandsp.conf.xml similarity index 100% rename from conf/autoload_configs/spandsp.conf.xml rename to conf/vanilla/autoload_configs/spandsp.conf.xml diff --git a/conf/autoload_configs/spidermonkey.conf.xml b/conf/vanilla/autoload_configs/spidermonkey.conf.xml similarity index 100% rename from conf/autoload_configs/spidermonkey.conf.xml rename to conf/vanilla/autoload_configs/spidermonkey.conf.xml diff --git a/conf/autoload_configs/switch.conf.xml b/conf/vanilla/autoload_configs/switch.conf.xml similarity index 100% rename from conf/autoload_configs/switch.conf.xml rename to conf/vanilla/autoload_configs/switch.conf.xml diff --git a/conf/autoload_configs/syslog.conf.xml b/conf/vanilla/autoload_configs/syslog.conf.xml similarity index 100% rename from conf/autoload_configs/syslog.conf.xml rename to conf/vanilla/autoload_configs/syslog.conf.xml diff --git a/conf/autoload_configs/timezones.conf.xml b/conf/vanilla/autoload_configs/timezones.conf.xml similarity index 100% rename from conf/autoload_configs/timezones.conf.xml rename to conf/vanilla/autoload_configs/timezones.conf.xml diff --git a/conf/autoload_configs/tts_commandline.conf.xml b/conf/vanilla/autoload_configs/tts_commandline.conf.xml similarity index 100% rename from conf/autoload_configs/tts_commandline.conf.xml rename to conf/vanilla/autoload_configs/tts_commandline.conf.xml diff --git a/conf/autoload_configs/unicall.conf.xml b/conf/vanilla/autoload_configs/unicall.conf.xml similarity index 100% rename from conf/autoload_configs/unicall.conf.xml rename to conf/vanilla/autoload_configs/unicall.conf.xml diff --git a/conf/autoload_configs/unimrcp.conf.xml b/conf/vanilla/autoload_configs/unimrcp.conf.xml similarity index 100% rename from conf/autoload_configs/unimrcp.conf.xml rename to conf/vanilla/autoload_configs/unimrcp.conf.xml diff --git a/conf/autoload_configs/voicemail.conf.xml b/conf/vanilla/autoload_configs/voicemail.conf.xml similarity index 100% rename from conf/autoload_configs/voicemail.conf.xml rename to conf/vanilla/autoload_configs/voicemail.conf.xml diff --git a/conf/autoload_configs/voicemail_ivr.conf.xml b/conf/vanilla/autoload_configs/voicemail_ivr.conf.xml similarity index 100% rename from conf/autoload_configs/voicemail_ivr.conf.xml rename to conf/vanilla/autoload_configs/voicemail_ivr.conf.xml diff --git a/conf/autoload_configs/xml_cdr.conf.xml b/conf/vanilla/autoload_configs/xml_cdr.conf.xml similarity index 100% rename from conf/autoload_configs/xml_cdr.conf.xml rename to conf/vanilla/autoload_configs/xml_cdr.conf.xml diff --git a/conf/autoload_configs/xml_curl.conf.xml b/conf/vanilla/autoload_configs/xml_curl.conf.xml similarity index 100% rename from conf/autoload_configs/xml_curl.conf.xml rename to conf/vanilla/autoload_configs/xml_curl.conf.xml diff --git a/conf/autoload_configs/xml_rpc.conf.xml b/conf/vanilla/autoload_configs/xml_rpc.conf.xml similarity index 100% rename from conf/autoload_configs/xml_rpc.conf.xml rename to conf/vanilla/autoload_configs/xml_rpc.conf.xml diff --git a/conf/autoload_configs/zeroconf.conf.xml b/conf/vanilla/autoload_configs/zeroconf.conf.xml similarity index 100% rename from conf/autoload_configs/zeroconf.conf.xml rename to conf/vanilla/autoload_configs/zeroconf.conf.xml diff --git a/conf/chatplan/default.xml b/conf/vanilla/chatplan/default.xml similarity index 100% rename from conf/chatplan/default.xml rename to conf/vanilla/chatplan/default.xml diff --git a/conf/config.FS0 b/conf/vanilla/config.FS0 similarity index 100% rename from conf/config.FS0 rename to conf/vanilla/config.FS0 diff --git a/conf/dialplan/default.xml b/conf/vanilla/dialplan/default.xml similarity index 100% rename from conf/dialplan/default.xml rename to conf/vanilla/dialplan/default.xml diff --git a/conf/dialplan/default/00_ladspa.xml b/conf/vanilla/dialplan/default/00_ladspa.xml similarity index 100% rename from conf/dialplan/default/00_ladspa.xml rename to conf/vanilla/dialplan/default/00_ladspa.xml diff --git a/conf/dialplan/default/00_pizza_demo.xml b/conf/vanilla/dialplan/default/00_pizza_demo.xml similarity index 100% rename from conf/dialplan/default/00_pizza_demo.xml rename to conf/vanilla/dialplan/default/00_pizza_demo.xml diff --git a/conf/dialplan/default/01_Talking_Clock.xml b/conf/vanilla/dialplan/default/01_Talking_Clock.xml similarity index 100% rename from conf/dialplan/default/01_Talking_Clock.xml rename to conf/vanilla/dialplan/default/01_Talking_Clock.xml diff --git a/conf/dialplan/default/01_example.com.xml b/conf/vanilla/dialplan/default/01_example.com.xml similarity index 100% rename from conf/dialplan/default/01_example.com.xml rename to conf/vanilla/dialplan/default/01_example.com.xml diff --git a/conf/dialplan/default/ideasip.com.noload b/conf/vanilla/dialplan/default/ideasip.com.noload similarity index 100% rename from conf/dialplan/default/ideasip.com.noload rename to conf/vanilla/dialplan/default/ideasip.com.noload diff --git a/conf/dialplan/default/pulver.com.noload b/conf/vanilla/dialplan/default/pulver.com.noload similarity index 100% rename from conf/dialplan/default/pulver.com.noload rename to conf/vanilla/dialplan/default/pulver.com.noload diff --git a/conf/dialplan/default/sipbroker.com.noload b/conf/vanilla/dialplan/default/sipbroker.com.noload similarity index 100% rename from conf/dialplan/default/sipbroker.com.noload rename to conf/vanilla/dialplan/default/sipbroker.com.noload diff --git a/conf/dialplan/default/sipphone.com.noload b/conf/vanilla/dialplan/default/sipphone.com.noload similarity index 100% rename from conf/dialplan/default/sipphone.com.noload rename to conf/vanilla/dialplan/default/sipphone.com.noload diff --git a/conf/dialplan/default/tollfreegateway.com.noload b/conf/vanilla/dialplan/default/tollfreegateway.com.noload similarity index 100% rename from conf/dialplan/default/tollfreegateway.com.noload rename to conf/vanilla/dialplan/default/tollfreegateway.com.noload diff --git a/conf/dialplan/features.xml b/conf/vanilla/dialplan/features.xml similarity index 100% rename from conf/dialplan/features.xml rename to conf/vanilla/dialplan/features.xml diff --git a/conf/dialplan/public.xml b/conf/vanilla/dialplan/public.xml similarity index 100% rename from conf/dialplan/public.xml rename to conf/vanilla/dialplan/public.xml diff --git a/conf/dialplan/public/00_inbound_did.xml b/conf/vanilla/dialplan/public/00_inbound_did.xml similarity index 100% rename from conf/dialplan/public/00_inbound_did.xml rename to conf/vanilla/dialplan/public/00_inbound_did.xml diff --git a/conf/dialplan/skinny-patterns.xml b/conf/vanilla/dialplan/skinny-patterns.xml similarity index 100% rename from conf/dialplan/skinny-patterns.xml rename to conf/vanilla/dialplan/skinny-patterns.xml diff --git a/conf/dialplan/skinny-patterns/20-Demo.xml b/conf/vanilla/dialplan/skinny-patterns/20-Demo.xml similarity index 100% rename from conf/dialplan/skinny-patterns/20-Demo.xml rename to conf/vanilla/dialplan/skinny-patterns/20-Demo.xml diff --git a/conf/dialplan/skinny-patterns/20-Local_extension.xml b/conf/vanilla/dialplan/skinny-patterns/20-Local_extension.xml similarity index 100% rename from conf/dialplan/skinny-patterns/20-Local_extension.xml rename to conf/vanilla/dialplan/skinny-patterns/20-Local_extension.xml diff --git a/conf/dialplan/skinny-patterns/90-External.xml b/conf/vanilla/dialplan/skinny-patterns/90-External.xml similarity index 100% rename from conf/dialplan/skinny-patterns/90-External.xml rename to conf/vanilla/dialplan/skinny-patterns/90-External.xml diff --git a/conf/dialplan/skinny-patterns/99-Default_Drop.xml b/conf/vanilla/dialplan/skinny-patterns/99-Default_Drop.xml similarity index 100% rename from conf/dialplan/skinny-patterns/99-Default_Drop.xml rename to conf/vanilla/dialplan/skinny-patterns/99-Default_Drop.xml diff --git a/conf/directory/default.xml b/conf/vanilla/directory/default.xml similarity index 100% rename from conf/directory/default.xml rename to conf/vanilla/directory/default.xml diff --git a/conf/directory/default/1000.xml b/conf/vanilla/directory/default/1000.xml similarity index 100% rename from conf/directory/default/1000.xml rename to conf/vanilla/directory/default/1000.xml diff --git a/conf/directory/default/1001.xml b/conf/vanilla/directory/default/1001.xml similarity index 100% rename from conf/directory/default/1001.xml rename to conf/vanilla/directory/default/1001.xml diff --git a/conf/directory/default/1002.xml b/conf/vanilla/directory/default/1002.xml similarity index 100% rename from conf/directory/default/1002.xml rename to conf/vanilla/directory/default/1002.xml diff --git a/conf/directory/default/1003.xml b/conf/vanilla/directory/default/1003.xml similarity index 100% rename from conf/directory/default/1003.xml rename to conf/vanilla/directory/default/1003.xml diff --git a/conf/directory/default/1004.xml b/conf/vanilla/directory/default/1004.xml similarity index 100% rename from conf/directory/default/1004.xml rename to conf/vanilla/directory/default/1004.xml diff --git a/conf/directory/default/1005.xml b/conf/vanilla/directory/default/1005.xml similarity index 100% rename from conf/directory/default/1005.xml rename to conf/vanilla/directory/default/1005.xml diff --git a/conf/directory/default/1006.xml b/conf/vanilla/directory/default/1006.xml similarity index 100% rename from conf/directory/default/1006.xml rename to conf/vanilla/directory/default/1006.xml diff --git a/conf/directory/default/1007.xml b/conf/vanilla/directory/default/1007.xml similarity index 100% rename from conf/directory/default/1007.xml rename to conf/vanilla/directory/default/1007.xml diff --git a/conf/directory/default/1008.xml b/conf/vanilla/directory/default/1008.xml similarity index 100% rename from conf/directory/default/1008.xml rename to conf/vanilla/directory/default/1008.xml diff --git a/conf/directory/default/1009.xml b/conf/vanilla/directory/default/1009.xml similarity index 100% rename from conf/directory/default/1009.xml rename to conf/vanilla/directory/default/1009.xml diff --git a/conf/directory/default/1010.xml b/conf/vanilla/directory/default/1010.xml similarity index 100% rename from conf/directory/default/1010.xml rename to conf/vanilla/directory/default/1010.xml diff --git a/conf/directory/default/1011.xml b/conf/vanilla/directory/default/1011.xml similarity index 100% rename from conf/directory/default/1011.xml rename to conf/vanilla/directory/default/1011.xml diff --git a/conf/directory/default/1012.xml b/conf/vanilla/directory/default/1012.xml similarity index 100% rename from conf/directory/default/1012.xml rename to conf/vanilla/directory/default/1012.xml diff --git a/conf/directory/default/1013.xml b/conf/vanilla/directory/default/1013.xml similarity index 100% rename from conf/directory/default/1013.xml rename to conf/vanilla/directory/default/1013.xml diff --git a/conf/directory/default/1014.xml b/conf/vanilla/directory/default/1014.xml similarity index 100% rename from conf/directory/default/1014.xml rename to conf/vanilla/directory/default/1014.xml diff --git a/conf/directory/default/1015.xml b/conf/vanilla/directory/default/1015.xml similarity index 100% rename from conf/directory/default/1015.xml rename to conf/vanilla/directory/default/1015.xml diff --git a/conf/directory/default/1016.xml b/conf/vanilla/directory/default/1016.xml similarity index 100% rename from conf/directory/default/1016.xml rename to conf/vanilla/directory/default/1016.xml diff --git a/conf/directory/default/1017.xml b/conf/vanilla/directory/default/1017.xml similarity index 100% rename from conf/directory/default/1017.xml rename to conf/vanilla/directory/default/1017.xml diff --git a/conf/directory/default/1018.xml b/conf/vanilla/directory/default/1018.xml similarity index 100% rename from conf/directory/default/1018.xml rename to conf/vanilla/directory/default/1018.xml diff --git a/conf/directory/default/1019.xml b/conf/vanilla/directory/default/1019.xml similarity index 100% rename from conf/directory/default/1019.xml rename to conf/vanilla/directory/default/1019.xml diff --git a/conf/directory/default/brian.xml b/conf/vanilla/directory/default/brian.xml similarity index 100% rename from conf/directory/default/brian.xml rename to conf/vanilla/directory/default/brian.xml diff --git a/conf/directory/default/default.xml b/conf/vanilla/directory/default/default.xml similarity index 100% rename from conf/directory/default/default.xml rename to conf/vanilla/directory/default/default.xml diff --git a/conf/directory/default/example.com.xml b/conf/vanilla/directory/default/example.com.xml similarity index 100% rename from conf/directory/default/example.com.xml rename to conf/vanilla/directory/default/example.com.xml diff --git a/conf/directory/default/skinny-example.xml b/conf/vanilla/directory/default/skinny-example.xml similarity index 100% rename from conf/directory/default/skinny-example.xml rename to conf/vanilla/directory/default/skinny-example.xml diff --git a/conf/extensions.conf b/conf/vanilla/extensions.conf similarity index 100% rename from conf/extensions.conf rename to conf/vanilla/extensions.conf diff --git a/conf/freeswitch.xml b/conf/vanilla/freeswitch.xml similarity index 100% rename from conf/freeswitch.xml rename to conf/vanilla/freeswitch.xml diff --git a/conf/fur_elise.ttml b/conf/vanilla/fur_elise.ttml similarity index 100% rename from conf/fur_elise.ttml rename to conf/vanilla/fur_elise.ttml diff --git a/conf/ivr_menus/demo_ivr.xml b/conf/vanilla/ivr_menus/demo_ivr.xml similarity index 100% rename from conf/ivr_menus/demo_ivr.xml rename to conf/vanilla/ivr_menus/demo_ivr.xml diff --git a/conf/jingle_profiles/client.xml b/conf/vanilla/jingle_profiles/client.xml similarity index 100% rename from conf/jingle_profiles/client.xml rename to conf/vanilla/jingle_profiles/client.xml diff --git a/conf/jingle_profiles/server.xml b/conf/vanilla/jingle_profiles/server.xml similarity index 100% rename from conf/jingle_profiles/server.xml rename to conf/vanilla/jingle_profiles/server.xml diff --git a/conf/lang/de/de.xml b/conf/vanilla/lang/de/de.xml similarity index 100% rename from conf/lang/de/de.xml rename to conf/vanilla/lang/de/de.xml diff --git a/conf/lang/de/demo/demo.xml b/conf/vanilla/lang/de/demo/demo.xml similarity index 100% rename from conf/lang/de/demo/demo.xml rename to conf/vanilla/lang/de/demo/demo.xml diff --git a/conf/lang/de/vm/sounds.xml b/conf/vanilla/lang/de/vm/sounds.xml similarity index 100% rename from conf/lang/de/vm/sounds.xml rename to conf/vanilla/lang/de/vm/sounds.xml diff --git a/conf/lang/de/vm/tts.xml b/conf/vanilla/lang/de/vm/tts.xml similarity index 100% rename from conf/lang/de/vm/tts.xml rename to conf/vanilla/lang/de/vm/tts.xml diff --git a/conf/lang/en/demo/demo-ivr.xml b/conf/vanilla/lang/en/demo/demo-ivr.xml similarity index 100% rename from conf/lang/en/demo/demo-ivr.xml rename to conf/vanilla/lang/en/demo/demo-ivr.xml diff --git a/conf/lang/en/demo/demo.xml b/conf/vanilla/lang/en/demo/demo.xml similarity index 100% rename from conf/lang/en/demo/demo.xml rename to conf/vanilla/lang/en/demo/demo.xml diff --git a/conf/lang/en/dir/sounds.xml b/conf/vanilla/lang/en/dir/sounds.xml similarity index 100% rename from conf/lang/en/dir/sounds.xml rename to conf/vanilla/lang/en/dir/sounds.xml diff --git a/conf/lang/en/dir/tts.xml b/conf/vanilla/lang/en/dir/tts.xml similarity index 100% rename from conf/lang/en/dir/tts.xml rename to conf/vanilla/lang/en/dir/tts.xml diff --git a/conf/lang/en/en.xml b/conf/vanilla/lang/en/en.xml similarity index 100% rename from conf/lang/en/en.xml rename to conf/vanilla/lang/en/en.xml diff --git a/conf/lang/en/ivr/sounds.xml b/conf/vanilla/lang/en/ivr/sounds.xml similarity index 100% rename from conf/lang/en/ivr/sounds.xml rename to conf/vanilla/lang/en/ivr/sounds.xml diff --git a/conf/lang/en/vm/sounds.xml b/conf/vanilla/lang/en/vm/sounds.xml similarity index 100% rename from conf/lang/en/vm/sounds.xml rename to conf/vanilla/lang/en/vm/sounds.xml diff --git a/conf/lang/en/vm/tts.xml b/conf/vanilla/lang/en/vm/tts.xml similarity index 100% rename from conf/lang/en/vm/tts.xml rename to conf/vanilla/lang/en/vm/tts.xml diff --git a/conf/lang/en/vm/voicemail_ivr.xml b/conf/vanilla/lang/en/vm/voicemail_ivr.xml similarity index 100% rename from conf/lang/en/vm/voicemail_ivr.xml rename to conf/vanilla/lang/en/vm/voicemail_ivr.xml diff --git a/conf/lang/fr/demo/demo.xml b/conf/vanilla/lang/fr/demo/demo.xml similarity index 100% rename from conf/lang/fr/demo/demo.xml rename to conf/vanilla/lang/fr/demo/demo.xml diff --git a/conf/lang/fr/dir/sounds.xml b/conf/vanilla/lang/fr/dir/sounds.xml similarity index 100% rename from conf/lang/fr/dir/sounds.xml rename to conf/vanilla/lang/fr/dir/sounds.xml diff --git a/conf/lang/fr/dir/tts.xml b/conf/vanilla/lang/fr/dir/tts.xml similarity index 100% rename from conf/lang/fr/dir/tts.xml rename to conf/vanilla/lang/fr/dir/tts.xml diff --git a/conf/lang/fr/fr.xml b/conf/vanilla/lang/fr/fr.xml similarity index 100% rename from conf/lang/fr/fr.xml rename to conf/vanilla/lang/fr/fr.xml diff --git a/conf/lang/fr/vm/sounds.xml b/conf/vanilla/lang/fr/vm/sounds.xml similarity index 100% rename from conf/lang/fr/vm/sounds.xml rename to conf/vanilla/lang/fr/vm/sounds.xml diff --git a/conf/lang/he/demo/demo-ivr.xml b/conf/vanilla/lang/he/demo/demo-ivr.xml similarity index 100% rename from conf/lang/he/demo/demo-ivr.xml rename to conf/vanilla/lang/he/demo/demo-ivr.xml diff --git a/conf/lang/he/demo/demo.xml b/conf/vanilla/lang/he/demo/demo.xml similarity index 100% rename from conf/lang/he/demo/demo.xml rename to conf/vanilla/lang/he/demo/demo.xml diff --git a/conf/lang/he/dir/sounds.xml b/conf/vanilla/lang/he/dir/sounds.xml similarity index 100% rename from conf/lang/he/dir/sounds.xml rename to conf/vanilla/lang/he/dir/sounds.xml diff --git a/conf/lang/he/he.xml b/conf/vanilla/lang/he/he.xml similarity index 100% rename from conf/lang/he/he.xml rename to conf/vanilla/lang/he/he.xml diff --git a/conf/lang/he/vm/sounds.xml b/conf/vanilla/lang/he/vm/sounds.xml similarity index 100% rename from conf/lang/he/vm/sounds.xml rename to conf/vanilla/lang/he/vm/sounds.xml diff --git a/conf/lang/ru/demo/demo-ivr.xml b/conf/vanilla/lang/ru/demo/demo-ivr.xml similarity index 100% rename from conf/lang/ru/demo/demo-ivr.xml rename to conf/vanilla/lang/ru/demo/demo-ivr.xml diff --git a/conf/lang/ru/demo/demo.xml b/conf/vanilla/lang/ru/demo/demo.xml similarity index 100% rename from conf/lang/ru/demo/demo.xml rename to conf/vanilla/lang/ru/demo/demo.xml diff --git a/conf/lang/ru/dir/sounds.xml b/conf/vanilla/lang/ru/dir/sounds.xml similarity index 100% rename from conf/lang/ru/dir/sounds.xml rename to conf/vanilla/lang/ru/dir/sounds.xml diff --git a/conf/lang/ru/dir/tts.xml b/conf/vanilla/lang/ru/dir/tts.xml similarity index 100% rename from conf/lang/ru/dir/tts.xml rename to conf/vanilla/lang/ru/dir/tts.xml diff --git a/conf/lang/ru/ru.xml b/conf/vanilla/lang/ru/ru.xml similarity index 100% rename from conf/lang/ru/ru.xml rename to conf/vanilla/lang/ru/ru.xml diff --git a/conf/lang/ru/vm/sounds.xml b/conf/vanilla/lang/ru/vm/sounds.xml similarity index 100% rename from conf/lang/ru/vm/sounds.xml rename to conf/vanilla/lang/ru/vm/sounds.xml diff --git a/conf/lang/ru/vm/tts.xml b/conf/vanilla/lang/ru/vm/tts.xml similarity index 100% rename from conf/lang/ru/vm/tts.xml rename to conf/vanilla/lang/ru/vm/tts.xml diff --git a/conf/mime.types b/conf/vanilla/mime.types similarity index 100% rename from conf/mime.types rename to conf/vanilla/mime.types diff --git a/conf/mrcp_profiles/loquendo-7-mrcp-v2.xml b/conf/vanilla/mrcp_profiles/loquendo-7-mrcp-v2.xml similarity index 100% rename from conf/mrcp_profiles/loquendo-7-mrcp-v2.xml rename to conf/vanilla/mrcp_profiles/loquendo-7-mrcp-v2.xml diff --git a/conf/mrcp_profiles/nuance-1.0.0-mrcp-v1.xml b/conf/vanilla/mrcp_profiles/nuance-1.0.0-mrcp-v1.xml similarity index 100% rename from conf/mrcp_profiles/nuance-1.0.0-mrcp-v1.xml rename to conf/vanilla/mrcp_profiles/nuance-1.0.0-mrcp-v1.xml diff --git a/conf/mrcp_profiles/nuance-5.0-mrcp-v1.xml b/conf/vanilla/mrcp_profiles/nuance-5.0-mrcp-v1.xml similarity index 100% rename from conf/mrcp_profiles/nuance-5.0-mrcp-v1.xml rename to conf/vanilla/mrcp_profiles/nuance-5.0-mrcp-v1.xml diff --git a/conf/mrcp_profiles/nuance-5.0-mrcp-v2.xml b/conf/vanilla/mrcp_profiles/nuance-5.0-mrcp-v2.xml similarity index 100% rename from conf/mrcp_profiles/nuance-5.0-mrcp-v2.xml rename to conf/vanilla/mrcp_profiles/nuance-5.0-mrcp-v2.xml diff --git a/conf/mrcp_profiles/unimrcpserver-mrcp-v1.xml b/conf/vanilla/mrcp_profiles/unimrcpserver-mrcp-v1.xml similarity index 100% rename from conf/mrcp_profiles/unimrcpserver-mrcp-v1.xml rename to conf/vanilla/mrcp_profiles/unimrcpserver-mrcp-v1.xml diff --git a/conf/mrcp_profiles/voxeo-prophecy-8.0-mrcp-v1.xml b/conf/vanilla/mrcp_profiles/voxeo-prophecy-8.0-mrcp-v1.xml similarity index 100% rename from conf/mrcp_profiles/voxeo-prophecy-8.0-mrcp-v1.xml rename to conf/vanilla/mrcp_profiles/voxeo-prophecy-8.0-mrcp-v1.xml diff --git a/conf/notify-voicemail.tpl b/conf/vanilla/notify-voicemail.tpl similarity index 100% rename from conf/notify-voicemail.tpl rename to conf/vanilla/notify-voicemail.tpl diff --git a/conf/sip_profiles/external.xml b/conf/vanilla/sip_profiles/external.xml similarity index 100% rename from conf/sip_profiles/external.xml rename to conf/vanilla/sip_profiles/external.xml diff --git a/conf/sip_profiles/external/example.xml b/conf/vanilla/sip_profiles/external/example.xml similarity index 100% rename from conf/sip_profiles/external/example.xml rename to conf/vanilla/sip_profiles/external/example.xml diff --git a/conf/sip_profiles/internal-ipv6.xml b/conf/vanilla/sip_profiles/internal-ipv6.xml similarity index 100% rename from conf/sip_profiles/internal-ipv6.xml rename to conf/vanilla/sip_profiles/internal-ipv6.xml diff --git a/conf/sip_profiles/internal.xml b/conf/vanilla/sip_profiles/internal.xml similarity index 100% rename from conf/sip_profiles/internal.xml rename to conf/vanilla/sip_profiles/internal.xml diff --git a/conf/sip_profiles/internal/example.xml b/conf/vanilla/sip_profiles/internal/example.xml similarity index 100% rename from conf/sip_profiles/internal/example.xml rename to conf/vanilla/sip_profiles/internal/example.xml diff --git a/conf/skinny_profiles/internal.xml b/conf/vanilla/skinny_profiles/internal.xml similarity index 100% rename from conf/skinny_profiles/internal.xml rename to conf/vanilla/skinny_profiles/internal.xml diff --git a/conf/tetris.ttml b/conf/vanilla/tetris.ttml similarity index 100% rename from conf/tetris.ttml rename to conf/vanilla/tetris.ttml diff --git a/conf/vars.xml b/conf/vanilla/vars.xml similarity index 100% rename from conf/vars.xml rename to conf/vanilla/vars.xml diff --git a/conf/voicemail.tpl b/conf/vanilla/voicemail.tpl similarity index 100% rename from conf/voicemail.tpl rename to conf/vanilla/voicemail.tpl diff --git a/conf/web-vm.tpl b/conf/vanilla/web-vm.tpl similarity index 100% rename from conf/web-vm.tpl rename to conf/vanilla/web-vm.tpl diff --git a/conf/yaml/extensions.yaml b/conf/vanilla/yaml/extensions.yaml similarity index 100% rename from conf/yaml/extensions.yaml rename to conf/vanilla/yaml/extensions.yaml diff --git a/conf/yaml/mod_yaml.yaml b/conf/vanilla/yaml/mod_yaml.yaml similarity index 100% rename from conf/yaml/mod_yaml.yaml rename to conf/vanilla/yaml/mod_yaml.yaml From f85eb0d61fe1b67cc5a0bd50424a9fbe45717328 Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Wed, 15 Feb 2012 22:33:07 -0600 Subject: [PATCH 199/292] conf: setup change for windows with vanilla conf --- w32/Setup/Setup.wixproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/w32/Setup/Setup.wixproj b/w32/Setup/Setup.wixproj index 6ec31f84ff..556004d261 100644 --- a/w32/Setup/Setup.wixproj +++ b/w32/Setup/Setup.wixproj @@ -816,7 +816,7 @@ - "$(WIX)bin\heat.exe" dir "$(ProjectDir)..\..\conf" -cg FreeSWITCHConfFiles -gg -scom -sreg -sfrag -srd -dr CONFLOCATION -var var.FreeSWITCHConfFilesDir -out "$(ProjectDir)Fragments\FreeSWITCHConfFiles.wxs" + "$(WIX)bin\heat.exe" dir "$(ProjectDir)..\..\conf\vanilla" -cg FreeSWITCHConfFiles -gg -scom -sreg -sfrag -srd -dr CONFLOCATION -var var.FreeSWITCHConfFilesDir -out "$(ProjectDir)Fragments\FreeSWITCHConfFiles.wxs" "$(WIX)bin\heat.exe" dir "$(ProjectDir)..\..\Win32\Release\sounds" -cg FreeSWITCHSoundFiles8 -gg -scom -sreg -sfrag -srd -dr SOUNDLOCATION -var var.FreeSWITCHSoundFilesDir -out "$(ProjectDir)Fragments\FreeSWITCHSoundFiles8.wxs" + + + + + + + diff --git a/conf/curl/autoload_configs/alsa.conf.xml b/conf/curl/autoload_configs/alsa.conf.xml new file mode 100644 index 0000000000..e589acaacf --- /dev/null +++ b/conf/curl/autoload_configs/alsa.conf.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/conf/curl/autoload_configs/cdr_csv.conf.xml b/conf/curl/autoload_configs/cdr_csv.conf.xml new file mode 100644 index 0000000000..137f15ce45 --- /dev/null +++ b/conf/curl/autoload_configs/cdr_csv.conf.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/conf/curl/autoload_configs/conference.conf.xml b/conf/curl/autoload_configs/conference.conf.xml new file mode 100644 index 0000000000..6ba27f9a46 --- /dev/null +++ b/conf/curl/autoload_configs/conference.conf.xml @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/curl/autoload_configs/console.conf.xml b/conf/curl/autoload_configs/console.conf.xml new file mode 100644 index 0000000000..2d9e3e8de5 --- /dev/null +++ b/conf/curl/autoload_configs/console.conf.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + diff --git a/conf/curl/autoload_configs/dialplan_directory.conf.xml b/conf/curl/autoload_configs/dialplan_directory.conf.xml new file mode 100644 index 0000000000..e4edcd6b15 --- /dev/null +++ b/conf/curl/autoload_configs/dialplan_directory.conf.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/conf/curl/autoload_configs/dingaling.conf.xml b/conf/curl/autoload_configs/dingaling.conf.xml new file mode 100644 index 0000000000..e68c8b4b44 --- /dev/null +++ b/conf/curl/autoload_configs/dingaling.conf.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/conf/curl/autoload_configs/enum.conf.xml b/conf/curl/autoload_configs/enum.conf.xml new file mode 100644 index 0000000000..eb7a37de79 --- /dev/null +++ b/conf/curl/autoload_configs/enum.conf.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/conf/curl/autoload_configs/event_multicast.conf.xml b/conf/curl/autoload_configs/event_multicast.conf.xml new file mode 100644 index 0000000000..9f2091df35 --- /dev/null +++ b/conf/curl/autoload_configs/event_multicast.conf.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/conf/curl/autoload_configs/event_socket.conf.xml b/conf/curl/autoload_configs/event_socket.conf.xml new file mode 100644 index 0000000000..98a2764d0f --- /dev/null +++ b/conf/curl/autoload_configs/event_socket.conf.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/conf/curl/autoload_configs/fax.conf.xml b/conf/curl/autoload_configs/fax.conf.xml new file mode 100644 index 0000000000..c7d825665e --- /dev/null +++ b/conf/curl/autoload_configs/fax.conf.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/conf/curl/autoload_configs/fifo.conf.xml b/conf/curl/autoload_configs/fifo.conf.xml new file mode 100644 index 0000000000..ab34f57cad --- /dev/null +++ b/conf/curl/autoload_configs/fifo.conf.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/conf/curl/autoload_configs/iax.conf.xml b/conf/curl/autoload_configs/iax.conf.xml new file mode 100644 index 0000000000..f050bea4c1 --- /dev/null +++ b/conf/curl/autoload_configs/iax.conf.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/conf/curl/autoload_configs/ivr.conf.xml b/conf/curl/autoload_configs/ivr.conf.xml new file mode 100644 index 0000000000..ca4117ce18 --- /dev/null +++ b/conf/curl/autoload_configs/ivr.conf.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/curl/autoload_configs/java.conf.xml b/conf/curl/autoload_configs/java.conf.xml new file mode 100644 index 0000000000..dadd428387 --- /dev/null +++ b/conf/curl/autoload_configs/java.conf.xml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/conf/curl/autoload_configs/limit.conf.xml b/conf/curl/autoload_configs/limit.conf.xml new file mode 100644 index 0000000000..26b0f8549a --- /dev/null +++ b/conf/curl/autoload_configs/limit.conf.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/conf/curl/autoload_configs/local_stream.conf.xml b/conf/curl/autoload_configs/local_stream.conf.xml new file mode 100644 index 0000000000..db857697f4 --- /dev/null +++ b/conf/curl/autoload_configs/local_stream.conf.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/curl/autoload_configs/logfile.conf.xml b/conf/curl/autoload_configs/logfile.conf.xml new file mode 100644 index 0000000000..1fbdbdc33c --- /dev/null +++ b/conf/curl/autoload_configs/logfile.conf.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/conf/curl/autoload_configs/lua.conf.xml b/conf/curl/autoload_configs/lua.conf.xml new file mode 100644 index 0000000000..1eb594f0b5 --- /dev/null +++ b/conf/curl/autoload_configs/lua.conf.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + diff --git a/conf/curl/autoload_configs/modules.conf.xml b/conf/curl/autoload_configs/modules.conf.xml new file mode 100644 index 0000000000..836e1ad46b --- /dev/null +++ b/conf/curl/autoload_configs/modules.conf.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/conf/curl/autoload_configs/opal.conf.xml b/conf/curl/autoload_configs/opal.conf.xml new file mode 100644 index 0000000000..c0844214a3 --- /dev/null +++ b/conf/curl/autoload_configs/opal.conf.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/conf/curl/autoload_configs/openmrcp.conf.xml b/conf/curl/autoload_configs/openmrcp.conf.xml new file mode 100644 index 0000000000..a4a934d5fc --- /dev/null +++ b/conf/curl/autoload_configs/openmrcp.conf.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/conf/curl/autoload_configs/openzap.conf.xml b/conf/curl/autoload_configs/openzap.conf.xml new file mode 100644 index 0000000000..bfa2bc0391 --- /dev/null +++ b/conf/curl/autoload_configs/openzap.conf.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/curl/autoload_configs/perl.conf.xml b/conf/curl/autoload_configs/perl.conf.xml new file mode 100644 index 0000000000..b2435000ff --- /dev/null +++ b/conf/curl/autoload_configs/perl.conf.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + diff --git a/conf/curl/autoload_configs/pocketsphinx.conf.xml b/conf/curl/autoload_configs/pocketsphinx.conf.xml new file mode 100644 index 0000000000..39d9154e3a --- /dev/null +++ b/conf/curl/autoload_configs/pocketsphinx.conf.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/conf/curl/autoload_configs/portaudio.conf.xml b/conf/curl/autoload_configs/portaudio.conf.xml new file mode 100644 index 0000000000..129576acbf --- /dev/null +++ b/conf/curl/autoload_configs/portaudio.conf.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/curl/autoload_configs/post_load_modules.conf.xml b/conf/curl/autoload_configs/post_load_modules.conf.xml new file mode 100644 index 0000000000..8f4e132fa4 --- /dev/null +++ b/conf/curl/autoload_configs/post_load_modules.conf.xml @@ -0,0 +1,4 @@ + + + + diff --git a/conf/curl/autoload_configs/python.conf.xml b/conf/curl/autoload_configs/python.conf.xml new file mode 100644 index 0000000000..78a146143a --- /dev/null +++ b/conf/curl/autoload_configs/python.conf.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + diff --git a/conf/curl/autoload_configs/rss.conf.xml b/conf/curl/autoload_configs/rss.conf.xml new file mode 100644 index 0000000000..f8c4f6d2b4 --- /dev/null +++ b/conf/curl/autoload_configs/rss.conf.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/conf/curl/autoload_configs/shout.conf.xml b/conf/curl/autoload_configs/shout.conf.xml new file mode 100644 index 0000000000..3f381e6278 --- /dev/null +++ b/conf/curl/autoload_configs/shout.conf.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/conf/curl/autoload_configs/sofia.conf.xml b/conf/curl/autoload_configs/sofia.conf.xml new file mode 100644 index 0000000000..24252d08ce --- /dev/null +++ b/conf/curl/autoload_configs/sofia.conf.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/conf/curl/autoload_configs/spidermonkey.conf.xml b/conf/curl/autoload_configs/spidermonkey.conf.xml new file mode 100644 index 0000000000..2e6dc6a166 --- /dev/null +++ b/conf/curl/autoload_configs/spidermonkey.conf.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/conf/curl/autoload_configs/switch.conf.xml b/conf/curl/autoload_configs/switch.conf.xml new file mode 100644 index 0000000000..09d1c07393 --- /dev/null +++ b/conf/curl/autoload_configs/switch.conf.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/curl/autoload_configs/syslog.conf.xml b/conf/curl/autoload_configs/syslog.conf.xml new file mode 100644 index 0000000000..1070ba54b3 --- /dev/null +++ b/conf/curl/autoload_configs/syslog.conf.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/conf/curl/autoload_configs/timezones.conf.xml b/conf/curl/autoload_configs/timezones.conf.xml new file mode 100644 index 0000000000..85c805ff25 --- /dev/null +++ b/conf/curl/autoload_configs/timezones.conf.xml @@ -0,0 +1,551 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/curl/autoload_configs/voicemail.conf.xml b/conf/curl/autoload_configs/voicemail.conf.xml new file mode 100644 index 0000000000..630816c880 --- /dev/null +++ b/conf/curl/autoload_configs/voicemail.conf.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/curl/autoload_configs/xml_cdr.conf.xml b/conf/curl/autoload_configs/xml_cdr.conf.xml new file mode 100644 index 0000000000..7f635d64aa --- /dev/null +++ b/conf/curl/autoload_configs/xml_cdr.conf.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/curl/autoload_configs/xml_curl.conf.xml b/conf/curl/autoload_configs/xml_curl.conf.xml new file mode 100644 index 0000000000..0f7ec08105 --- /dev/null +++ b/conf/curl/autoload_configs/xml_curl.conf.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + diff --git a/conf/curl/autoload_configs/xml_rpc.conf.xml b/conf/curl/autoload_configs/xml_rpc.conf.xml new file mode 100644 index 0000000000..714a909907 --- /dev/null +++ b/conf/curl/autoload_configs/xml_rpc.conf.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/conf/curl/autoload_configs/zeroconf.conf.xml b/conf/curl/autoload_configs/zeroconf.conf.xml new file mode 100644 index 0000000000..84c1a46171 --- /dev/null +++ b/conf/curl/autoload_configs/zeroconf.conf.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/conf/curl/freeswitch.xml b/conf/curl/freeswitch.xml new file mode 100644 index 0000000000..e449978c76 --- /dev/null +++ b/conf/curl/freeswitch.xml @@ -0,0 +1,43 @@ + + + + + +
+ +
+ +
+ +
+ + + +
+ +
+ + +
+ + + +
+
+ + + diff --git a/conf/curl/mime.types b/conf/curl/mime.types new file mode 100644 index 0000000000..34d5fc9055 --- /dev/null +++ b/conf/curl/mime.types @@ -0,0 +1,983 @@ +# This is a comment. I love comments. + +# This file controls what Internet media types are sent to the client for +# given file extension(s). Sending the correct media type to the client +# is important so they know how to handle the content of the file. +# Extra types can either be added here or by using an AddType directive +# in your config files. For more information about Internet media types, +# please read RFC 2045, 2046, 2047, 2048, and 2077. The Internet media type +# registry is at . + +# MIME type Extensions +application/activemessage +application/andrew-inset ez +application/applefile +application/atom+xml atom +application/atomcat+xml atomcat +application/atomicmail +application/atomsvc+xml atomsvc +application/auth-policy+xml +application/batch-smtp +application/beep+xml +application/cals-1840 +application/ccxml+xml ccxml +application/cellml+xml +application/cnrp+xml +application/commonground +application/conference-info+xml +application/cpl+xml +application/csta+xml +application/cstadata+xml +application/cybercash +application/davmount+xml davmount +application/dca-rft +application/dec-dx +application/dialog-info+xml +application/dicom +application/dns +application/dvcs +application/ecmascript ecma +application/edi-consent +application/edi-x12 +application/edifact +application/epp+xml +application/eshop +application/fastinfoset +application/fastsoap +application/fits +application/font-tdpfr pfr +application/h224 +application/http +application/hyperstudio stk +application/iges +application/im-iscomposing+xml +application/index +application/index.cmd +application/index.obj +application/index.response +application/index.vnd +application/iotp +application/ipp +application/isup +application/javascript js +application/json json +application/kpml-request+xml +application/kpml-response+xml +application/mac-binhex40 hqx +application/mac-compactpro cpt +application/macwriteii +application/marc mrc +application/mathematica ma nb mb +application/mathml+xml mathml +application/mbms-associated-procedure-description+xml +application/mbms-deregister+xml +application/mbms-envelope+xml +application/mbms-msk+xml +application/mbms-msk-response+xml +application/mbms-protection-description+xml +application/mbms-reception-report+xml +application/mbms-register+xml +application/mbms-register-response+xml +application/mbms-user-service-description+xml +application/mbox mbox +application/mediaservercontrol+xml mscml +application/mikey +application/mp4 mp4s +application/mpeg4-generic +application/mpeg4-iod +application/mpeg4-iod-xmt +application/msword doc dot +application/mxf mxf +application/nasdata +application/news-message-id +application/news-transmission +application/nss +application/ocsp-request +application/ocsp-response +application/octet-stream bin dms lha lzh class so iso dmg dist distz pkg bpk dump elc +application/oda oda +application/oebps-package+xml +application/ogg ogg +application/parityfec +application/pdf pdf +application/pgp-encrypted pgp +application/pgp-keys +application/pgp-signature asc sig +application/pics-rules prf +application/pidf+xml +application/pkcs10 p10 +application/pkcs7-mime p7m p7c +application/pkcs7-signature p7s +application/pkix-cert cer +application/pkix-crl crl +application/pkix-pkipath pkipath +application/pkixcmp pki +application/pls+xml pls +application/poc-settings+xml +application/postscript ai eps ps +application/prs.alvestrand.titrax-sheet +application/prs.cww cww +application/prs.nprend +application/prs.plucker +application/qsig +application/rdf+xml rdf +application/reginfo+xml rif +application/relax-ng-compact-syntax rnc +application/remote-printing +application/resource-lists+xml rl +application/riscos +application/rlmi+xml +application/rls-services+xml rs +application/rsd+xml rsd +application/rss+xml rss +application/rtf rtf +application/rtx +application/samlassertion+xml +application/samlmetadata+xml +application/sbml+xml sbml +application/sdp sdp +application/set-payment +application/set-payment-initiation setpay +application/set-registration +application/set-registration-initiation setreg +application/sgml +application/sgml-open-catalog +application/shf+xml shf +application/sieve +application/simple-filter+xml +application/simple-message-summary +application/simplesymbolcontainer +application/slate +application/smil +application/smil+xml smi smil +application/soap+fastinfoset +application/soap+xml +application/spirits-event+xml +application/srgs gram +application/srgs+xml grxml +application/ssml+xml ssml +application/timestamp-query +application/timestamp-reply +application/tve-trigger +application/vemmi +application/vividence.scriptfile +application/vnd.3gpp.bsf+xml +application/vnd.3gpp.pic-bw-large plb +application/vnd.3gpp.pic-bw-small psb +application/vnd.3gpp.pic-bw-var pvb +application/vnd.3gpp.sms +application/vnd.3gpp2.bcmcsinfo+xml +application/vnd.3gpp2.sms +application/vnd.3m.post-it-notes pwn +application/vnd.accpac.simply.aso aso +application/vnd.accpac.simply.imp imp +application/vnd.acucobol acu +application/vnd.acucorp atc acutc +application/vnd.adobe.xdp+xml xdp +application/vnd.adobe.xfdf xfdf +application/vnd.aether.imp +application/vnd.amiga.ami ami +application/vnd.anser-web-certificate-issue-initiation cii +application/vnd.anser-web-funds-transfer-initiation fti +application/vnd.antix.game-component atx +application/vnd.apple.installer+xml mpkg +application/vnd.audiograph aep +application/vnd.autopackage +application/vnd.avistar+xml +application/vnd.blueice.multipass mpm +application/vnd.bmi bmi +application/vnd.businessobjects rep +application/vnd.cab-jscript +application/vnd.canon-cpdl +application/vnd.canon-lips +application/vnd.cendio.thinlinc.clientconf +application/vnd.chemdraw+xml cdxml +application/vnd.chipnuts.karaoke-mmd mmd +application/vnd.cinderella cdy +application/vnd.cirpack.isdn-ext +application/vnd.claymore cla +application/vnd.clonk.c4group c4g c4d c4f c4p c4u +application/vnd.commerce-battelle +application/vnd.commonspace csp cst +application/vnd.contact.cmsg cdbcmsg +application/vnd.cosmocaller cmc +application/vnd.crick.clicker clkx +application/vnd.crick.clicker.keyboard clkk +application/vnd.crick.clicker.palette clkp +application/vnd.crick.clicker.template clkt +application/vnd.crick.clicker.wordbank clkw +application/vnd.criticaltools.wbs+xml wbs +application/vnd.ctc-posml pml +application/vnd.cups-pdf +application/vnd.cups-postscript +application/vnd.cups-ppd ppd +application/vnd.cups-raster +application/vnd.cups-raw +application/vnd.curl curl +application/vnd.cybank +application/vnd.data-vision.rdz rdz +application/vnd.denovo.fcselayout-link fe_launch +application/vnd.dna dna +application/vnd.dolby.mlp mlp +application/vnd.dpgraph dpg +application/vnd.dreamfactory dfac +application/vnd.dvb.esgcontainer +application/vnd.dvb.ipdcesgaccess +application/vnd.dxr +application/vnd.ecdis-update +application/vnd.ecowin.chart mag +application/vnd.ecowin.filerequest +application/vnd.ecowin.fileupdate +application/vnd.ecowin.series +application/vnd.ecowin.seriesrequest +application/vnd.ecowin.seriesupdate +application/vnd.enliven nml +application/vnd.epson.esf esf +application/vnd.epson.msf msf +application/vnd.epson.quickanime qam +application/vnd.epson.salt slt +application/vnd.epson.ssf ssf +application/vnd.ericsson.quickcall +application/vnd.eszigno3+xml es3 et3 +application/vnd.eudora.data +application/vnd.ezpix-album ez2 +application/vnd.ezpix-package ez3 +application/vnd.fdf fdf +application/vnd.ffsns +application/vnd.fints +application/vnd.flographit gph +application/vnd.fluxtime.clip ftc +application/vnd.framemaker fm frame maker +application/vnd.frogans.fnc fnc +application/vnd.frogans.ltf ltf +application/vnd.fsc.weblaunch fsc +application/vnd.fujitsu.oasys oas +application/vnd.fujitsu.oasys2 oa2 +application/vnd.fujitsu.oasys3 oa3 +application/vnd.fujitsu.oasysgp fg5 +application/vnd.fujitsu.oasysprs bh2 +application/vnd.fujixerox.art-ex +application/vnd.fujixerox.art4 +application/vnd.fujixerox.hbpl +application/vnd.fujixerox.ddd ddd +application/vnd.fujixerox.docuworks xdw +application/vnd.fujixerox.docuworks.binder xbd +application/vnd.fut-misnet +application/vnd.fuzzysheet fzs +application/vnd.genomatix.tuxedo txd +application/vnd.google-earth.kml+xml kml +application/vnd.google-earth.kmz kmz +application/vnd.grafeq gqf gqs +application/vnd.gridmp +application/vnd.groove-account gac +application/vnd.groove-help ghf +application/vnd.groove-identity-message gim +application/vnd.groove-injector grv +application/vnd.groove-tool-message gtm +application/vnd.groove-tool-template tpl +application/vnd.groove-vcard vcg +application/vnd.handheld-entertainment+xml zmm +application/vnd.hbci hbci +application/vnd.hcl-bireports +application/vnd.hhe.lesson-player les +application/vnd.hp-hpgl hpgl +application/vnd.hp-hpid hpid +application/vnd.hp-hps hps +application/vnd.hp-jlyt jlt +application/vnd.hp-pcl pcl +application/vnd.hp-pclxl pclxl +application/vnd.httphone +application/vnd.hzn-3d-crossword x3d +application/vnd.ibm.afplinedata +application/vnd.ibm.electronic-media +application/vnd.ibm.minipay mpy +application/vnd.ibm.modcap afp listafp list3820 +application/vnd.ibm.rights-management irm +application/vnd.ibm.secure-container sc +application/vnd.igloader igl +application/vnd.immervision-ivp ivp +application/vnd.immervision-ivu ivu +application/vnd.informedcontrol.rms+xml +application/vnd.intercon.formnet xpw xpx +application/vnd.intertrust.digibox +application/vnd.intertrust.nncp +application/vnd.intu.qbo qbo +application/vnd.intu.qfx qfx +application/vnd.ipunplugged.rcprofile rcprofile +application/vnd.irepository.package+xml irp +application/vnd.is-xpr xpr +application/vnd.jam jam +application/vnd.japannet-directory-service +application/vnd.japannet-jpnstore-wakeup +application/vnd.japannet-payment-wakeup +application/vnd.japannet-registration +application/vnd.japannet-registration-wakeup +application/vnd.japannet-setstore-wakeup +application/vnd.japannet-verification +application/vnd.japannet-verification-wakeup +application/vnd.jcp.javame.midlet-rms rms +application/vnd.jisp jisp +application/vnd.kahootz ktz ktr +application/vnd.kde.karbon karbon +application/vnd.kde.kchart chrt +application/vnd.kde.kformula kfo +application/vnd.kde.kivio flw +application/vnd.kde.kontour kon +application/vnd.kde.kpresenter kpr kpt +application/vnd.kde.kspread ksp +application/vnd.kde.kword kwd kwt +application/vnd.kenameaapp htke +application/vnd.kidspiration kia +application/vnd.kinar kne knp +application/vnd.koan skp skd skt skm +application/vnd.liberty-request+xml +application/vnd.llamagraphics.life-balance.desktop lbd +application/vnd.llamagraphics.life-balance.exchange+xml lbe +application/vnd.lotus-1-2-3 123 +application/vnd.lotus-approach apr +application/vnd.lotus-freelance pre +application/vnd.lotus-notes nsf +application/vnd.lotus-organizer org +application/vnd.lotus-screencam scm +application/vnd.lotus-wordpro lwp +application/vnd.macports.portpkg portpkg +application/vnd.marlin.drm.actiontoken+xml +application/vnd.marlin.drm.conftoken+xml +application/vnd.marlin.drm.mdcf +application/vnd.mcd mcd +application/vnd.medcalcdata mc1 +application/vnd.mediastation.cdkey cdkey +application/vnd.meridian-slingshot +application/vnd.mfer mwf +application/vnd.mfmp mfm +application/vnd.micrografx.flo flo +application/vnd.micrografx.igx igx +application/vnd.mif mif +application/vnd.minisoft-hp3000-save +application/vnd.mitsubishi.misty-guard.trustweb +application/vnd.mobius.daf daf +application/vnd.mobius.dis dis +application/vnd.mobius.mbk mbk +application/vnd.mobius.mqy mqy +application/vnd.mobius.msl msl +application/vnd.mobius.plc plc +application/vnd.mobius.txf txf +application/vnd.mophun.application mpn +application/vnd.mophun.certificate mpc +application/vnd.motorola.flexsuite +application/vnd.motorola.flexsuite.adsi +application/vnd.motorola.flexsuite.fis +application/vnd.motorola.flexsuite.gotap +application/vnd.motorola.flexsuite.kmr +application/vnd.motorola.flexsuite.ttc +application/vnd.motorola.flexsuite.wem +application/vnd.mozilla.xul+xml xul +application/vnd.ms-artgalry cil +application/vnd.ms-asf asf +application/vnd.ms-cab-compressed cab +application/vnd.ms-excel xls xlm xla xlc xlt xlw +application/vnd.ms-fontobject eot +application/vnd.ms-htmlhelp chm +application/vnd.ms-ims ims +application/vnd.ms-lrm lrm +application/vnd.ms-playready.initiator+xml +application/vnd.ms-powerpoint ppt pps pot +application/vnd.ms-project mpp mpt +application/vnd.ms-tnef +application/vnd.ms-wmdrm.lic-chlg-req +application/vnd.ms-wmdrm.lic-resp +application/vnd.ms-wmdrm.meter-chlg-req +application/vnd.ms-wmdrm.meter-resp +application/vnd.ms-works wps wks wcm wdb +application/vnd.ms-wpl wpl +application/vnd.ms-xpsdocument xps +application/vnd.mseq mseq +application/vnd.msign +application/vnd.music-niff +application/vnd.musician mus +application/vnd.ncd.control +application/vnd.nervana +application/vnd.netfpx +application/vnd.neurolanguage.nlu nlu +application/vnd.noblenet-directory nnd +application/vnd.noblenet-sealer nns +application/vnd.noblenet-web nnw +application/vnd.nokia.catalogs +application/vnd.nokia.conml+wbxml +application/vnd.nokia.conml+xml +application/vnd.nokia.isds-radio-presets +application/vnd.nokia.iptv.config+xml +application/vnd.nokia.landmark+wbxml +application/vnd.nokia.landmark+xml +application/vnd.nokia.landmarkcollection+xml +application/vnd.nokia.n-gage.ac+xml +application/vnd.nokia.n-gage.data ngdat +application/vnd.nokia.n-gage.symbian.install n-gage +application/vnd.nokia.ncd +application/vnd.nokia.pcd+wbxml +application/vnd.nokia.pcd+xml +application/vnd.nokia.radio-preset rpst +application/vnd.nokia.radio-presets rpss +application/vnd.novadigm.edm edm +application/vnd.novadigm.edx edx +application/vnd.novadigm.ext ext +application/vnd.oasis.opendocument.chart odc +application/vnd.oasis.opendocument.chart-template otc +application/vnd.oasis.opendocument.formula odf +application/vnd.oasis.opendocument.formula-template otf +application/vnd.oasis.opendocument.graphics odg +application/vnd.oasis.opendocument.graphics-template otg +application/vnd.oasis.opendocument.image odi +application/vnd.oasis.opendocument.image-template oti +application/vnd.oasis.opendocument.presentation odp +application/vnd.oasis.opendocument.presentation-template otp +application/vnd.oasis.opendocument.spreadsheet ods +application/vnd.oasis.opendocument.spreadsheet-template ots +application/vnd.oasis.opendocument.text odt +application/vnd.oasis.opendocument.text-master otm +application/vnd.oasis.opendocument.text-template ott +application/vnd.oasis.opendocument.text-web oth +application/vnd.obn +application/vnd.olpc-sugar xo +application/vnd.oma-scws-config +application/vnd.oma-scws-http-request +application/vnd.oma-scws-http-response +application/vnd.oma.bcast.associated-procedure-parameter+xml +application/vnd.oma.bcast.drm-trigger+xml +application/vnd.oma.bcast.imd+xml +application/vnd.oma.bcast.notification+xml +application/vnd.oma.bcast.sgboot +application/vnd.oma.bcast.sgdd+xml +application/vnd.oma.bcast.sgdu +application/vnd.oma.bcast.simple-symbol-container +application/vnd.oma.bcast.smartcard-trigger+xml +application/vnd.oma.bcast.sprov+xml +application/vnd.oma.dd2+xml dd2 +application/vnd.oma.drm.risd+xml +application/vnd.oma.group-usage-list+xml +application/vnd.oma.poc.groups+xml +application/vnd.oma.xcap-directory+xml +application/vnd.omads-email+xml +application/vnd.omads-file+xml +application/vnd.omads-folder+xml +application/vnd.omaloc-supl-init +application/vnd.openofficeorg.extension oxt +application/vnd.osa.netdeploy +application/vnd.osgi.dp dp +application/vnd.otps.ct-kip+xml +application/vnd.palm prc pdb pqa oprc +application/vnd.paos.xml +application/vnd.pg.format str +application/vnd.pg.osasli ei6 +application/vnd.piaccess.application-licence +application/vnd.picsel efif +application/vnd.poc.group-advertisement+xml +application/vnd.pocketlearn plf +application/vnd.powerbuilder6 pbd +application/vnd.powerbuilder6-s +application/vnd.powerbuilder7 +application/vnd.powerbuilder7-s +application/vnd.powerbuilder75 +application/vnd.powerbuilder75-s +application/vnd.preminet +application/vnd.previewsystems.box box +application/vnd.proteus.magazine mgz +application/vnd.publishare-delta-tree qps +application/vnd.pvi.ptid1 ptid +application/vnd.pwg-multiplexed +application/vnd.pwg-xhtml-print+xml +application/vnd.qualcomm.brew-app-res +application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb +application/vnd.rapid +application/vnd.recordare.musicxml mxl +application/vnd.recordare.musicxml+xml +application/vnd.renlearn.rlprint +application/vnd.rn-realmedia rm +application/vnd.ruckus.download +application/vnd.s3sms +application/vnd.scribus +application/vnd.sealed.3df +application/vnd.sealed.csf +application/vnd.sealed.doc +application/vnd.sealed.eml +application/vnd.sealed.mht +application/vnd.sealed.net +application/vnd.sealed.ppt +application/vnd.sealed.tiff +application/vnd.sealed.xls +application/vnd.sealedmedia.softseal.html +application/vnd.sealedmedia.softseal.pdf +application/vnd.seemail see +application/vnd.sema sema +application/vnd.semd semd +application/vnd.semf semf +application/vnd.shana.informed.formdata ifm +application/vnd.shana.informed.formtemplate itp +application/vnd.shana.informed.interchange iif +application/vnd.shana.informed.package ipk +application/vnd.simtech-mindmapper twd twds +application/vnd.smaf mmf +application/vnd.solent.sdkm+xml sdkm sdkd +application/vnd.spotfire.dxp dxp +application/vnd.spotfire.sfs sfs +application/vnd.sss-cod +application/vnd.sss-dtf +application/vnd.sss-ntf +application/vnd.street-stream +application/vnd.sun.wadl+xml +application/vnd.sus-calendar sus susp +application/vnd.svd svd +application/vnd.swiftview-ics +application/vnd.syncml+xml xsm +application/vnd.syncml.dm+wbxml bdm +application/vnd.syncml.dm+xml xdm +application/vnd.syncml.ds.notification +application/vnd.tao.intent-module-archive tao +application/vnd.tmobile-livetv tmo +application/vnd.trid.tpt tpt +application/vnd.triscape.mxs mxs +application/vnd.trueapp tra +application/vnd.truedoc +application/vnd.ufdl ufd ufdl +application/vnd.uiq.theme utz +application/vnd.umajin umj +application/vnd.unity unityweb +application/vnd.uoml+xml uoml +application/vnd.uplanet.alert +application/vnd.uplanet.alert-wbxml +application/vnd.uplanet.bearer-choice +application/vnd.uplanet.bearer-choice-wbxml +application/vnd.uplanet.cacheop +application/vnd.uplanet.cacheop-wbxml +application/vnd.uplanet.channel +application/vnd.uplanet.channel-wbxml +application/vnd.uplanet.list +application/vnd.uplanet.list-wbxml +application/vnd.uplanet.listcmd +application/vnd.uplanet.listcmd-wbxml +application/vnd.uplanet.signal +application/vnd.vcx vcx +application/vnd.vd-study +application/vnd.vectorworks +application/vnd.vidsoft.vidconference +application/vnd.visio vsd vst vss vsw +application/vnd.visionary vis +application/vnd.vividence.scriptfile +application/vnd.vsf vsf +application/vnd.wap.sic +application/vnd.wap.slc +application/vnd.wap.wbxml wbxml +application/vnd.wap.wmlc wmlc +application/vnd.wap.wmlscriptc wmlsc +application/vnd.webturbo wtb +application/vnd.wfa.wsc +application/vnd.wordperfect wpd +application/vnd.wqd wqd +application/vnd.wrq-hp3000-labelled +application/vnd.wt.stf stf +application/vnd.wv.csp+wbxml +application/vnd.wv.csp+xml +application/vnd.wv.ssp+xml +application/vnd.xara xar +application/vnd.xfdl xfdl +application/vnd.xmpie.cpkg +application/vnd.xmpie.dpkg +application/vnd.xmpie.plan +application/vnd.xmpie.ppkg +application/vnd.xmpie.xlim +application/vnd.yamaha.hv-dic hvd +application/vnd.yamaha.hv-script hvs +application/vnd.yamaha.hv-voice hvp +application/vnd.yamaha.smaf-audio saf +application/vnd.yamaha.smaf-phrase spf +application/vnd.yellowriver-custom-menu cmp +application/vnd.zzazz.deck+xml zaz +application/voicexml+xml vxml +application/watcherinfo+xml +application/whoispp-query +application/whoispp-response +application/winhlp hlp +application/wita +application/wordperfect5.1 +application/wsdl+xml wsdl +application/wspolicy+xml wspolicy +application/x-ace-compressed ace +application/x-bcpio bcpio +application/x-bittorrent torrent +application/x-bzip bz +application/x-bzip2 bz2 boz +application/x-cdlink vcd +application/x-chat chat +application/x-chess-pgn pgn +application/x-compress +application/x-cpio cpio +application/x-csh csh +application/x-director dcr dir dxr fgd +application/x-dvi dvi +application/x-futuresplash spl +application/x-gtar gtar +application/x-gzip +application/x-hdf hdf +application/x-latex latex +application/x-ms-wmd wmd +application/x-ms-wmz wmz +application/x-msaccess mdb +application/x-msbinder obd +application/x-mscardfile crd +application/x-msclip clp +application/x-msdownload exe dll com bat msi +application/x-msmediaview mvb m13 m14 +application/x-msmetafile wmf +application/x-msmoney mny +application/x-mspublisher pub +application/x-msschedule scd +application/x-msterminal trm +application/x-mswrite wri +application/x-netcdf nc cdf +application/x-pkcs12 p12 pfx +application/x-pkcs7-certificates p7b spc +application/x-pkcs7-certreqresp p7r +application/x-rar-compressed rar +application/x-sh sh +application/x-shar shar +application/x-shockwave-flash swf +application/x-stuffit sit +application/x-stuffitx sitx +application/x-sv4cpio sv4cpio +application/x-sv4crc sv4crc +application/x-tar tar +application/x-tcl tcl +application/x-tex tex +application/x-texinfo texinfo texi +application/x-ustar ustar +application/x-wais-source src +application/x-x509-ca-cert der crt +application/x400-bp +application/xcap-att+xml +application/xcap-caps+xml +application/xcap-el+xml +application/xcap-error+xml +application/xcap-ns+xml +application/xenc+xml xenc +application/xhtml+xml xhtml xht +application/xml xml xsl +application/xml-dtd dtd +application/xml-external-parsed-entity +application/xmpp+xml +application/xop+xml xop +application/xslt+xml xslt +application/xspf+xml xspf +application/xv+xml mxml xhvml xvml xvm +application/zip zip +audio/32kadpcm +audio/3gpp +audio/3gpp2 +audio/ac3 +audio/amr +audio/amr-wb +audio/amr-wb+ +audio/asc +audio/basic au snd +audio/bv16 +audio/bv32 +audio/clearmode +audio/cn +audio/dat12 +audio/dls +audio/dsr-es201108 +audio/dsr-es202050 +audio/dsr-es202211 +audio/dsr-es202212 +audio/dvi4 +audio/eac3 +audio/evrc +audio/evrc-qcp +audio/evrc0 +audio/evrc1 +audio/evrcb +audio/evrcb0 +audio/evrcb1 +audio/g722 +audio/g7221 +audio/g723 +audio/g726-16 +audio/g726-24 +audio/g726-32 +audio/g726-40 +audio/g728 +audio/g729 +audio/g7291 +audio/g729d +audio/g729e +audio/gsm +audio/gsm-efr +audio/ilbc +audio/l16 +audio/l20 +audio/l24 +audio/l8 +audio/lpc +audio/midi mid midi kar rmi +audio/mobile-xmf +audio/mp4 mp4a +audio/mp4a-latm +audio/mpa +audio/mpa-robust +audio/mpeg mpga mp2 mp2a mp3 m2a m3a +audio/mpeg4-generic +audio/parityfec +audio/pcma +audio/pcmu +audio/prs.sid +audio/qcelp +audio/red +audio/rtp-enc-aescm128 +audio/rtp-midi +audio/rtx +audio/smv +audio/smv0 +audio/smv-qcp +audio/sp-midi +audio/t140c +audio/t38 +audio/telephone-event +audio/tone +audio/vdvi +audio/vmr-wb +audio/vnd.3gpp.iufp +audio/vnd.4sb +audio/vnd.audiokoz +audio/vnd.celp +audio/vnd.cisco.nse +audio/vnd.cmles.radio-events +audio/vnd.cns.anp1 +audio/vnd.cns.inf1 +audio/vnd.digital-winds eol +audio/vnd.dlna.adts +audio/vnd.dolby.mlp +audio/vnd.everad.plj +audio/vnd.hns.audio +audio/vnd.lucent.voice lvp +audio/vnd.nokia.mobile-xmf +audio/vnd.nortel.vbk +audio/vnd.nuera.ecelp4800 ecelp4800 +audio/vnd.nuera.ecelp7470 ecelp7470 +audio/vnd.nuera.ecelp9600 ecelp9600 +audio/vnd.octel.sbc +audio/vnd.qcelp +audio/vnd.rhetorex.32kadpcm +audio/vnd.sealedmedia.softseal.mpeg +audio/vnd.vmx.cvsd +audio/wav wav +audio/x-aiff aif aiff aifc +audio/x-mpegurl m3u +audio/x-ms-wax wax +audio/x-ms-wma wma +audio/x-pn-realaudio ram ra +audio/x-pn-realaudio-plugin rmp +audio/x-wav wav +chemical/x-cdx cdx +chemical/x-cif cif +chemical/x-cmdf cmdf +chemical/x-cml cml +chemical/x-csml csml +chemical/x-pdb pdb +chemical/x-xyz xyz +image/bmp bmp +image/cgm cgm +image/fits +image/g3fax g3 +image/gif gif +image/ief ief +image/jp2 +image/jpeg jpeg jpg jpe +image/jpm +image/jpx +image/naplps +image/png png +image/prs.btif btif +image/prs.pti +image/svg+xml svg svgz +image/t38 +image/tiff tiff tif +image/tiff-fx +image/vnd.adobe.photoshop psd +image/vnd.cns.inf2 +image/vnd.djvu djvu djv +image/vnd.dwg dwg +image/vnd.dxf dxf +image/vnd.fastbidsheet fbs +image/vnd.fpx fpx +image/vnd.fst fst +image/vnd.fujixerox.edmics-mmr mmr +image/vnd.fujixerox.edmics-rlc rlc +image/vnd.globalgraphics.pgb +image/vnd.microsoft.icon ico +image/vnd.mix +image/vnd.ms-modi mdi +image/vnd.net-fpx npx +image/vnd.sealed.png +image/vnd.sealedmedia.softseal.gif +image/vnd.sealedmedia.softseal.jpg +image/vnd.svf +image/vnd.wap.wbmp wbmp +image/vnd.xiff xif +image/x-cmu-raster ras +image/x-cmx cmx +image/x-icon +image/x-pcx pcx +image/x-pict pic pct +image/x-portable-anymap pnm +image/x-portable-bitmap pbm +image/x-portable-graymap pgm +image/x-portable-pixmap ppm +image/x-rgb rgb +image/x-xbitmap xbm +image/x-xpixmap xpm +image/x-xwindowdump xwd +message/cpim +message/delivery-status +message/disposition-notification +message/external-body +message/http +message/news +message/partial +message/rfc822 eml mime +message/s-http +message/sip +message/sipfrag +message/tracking-status +model/iges igs iges +model/mesh msh mesh silo +model/vnd.dwf dwf +model/vnd.flatland.3dml +model/vnd.gdl gdl +model/vnd.gs.gdl +model/vnd.gtw gtw +model/vnd.moml+xml +model/vnd.mts mts +model/vnd.parasolid.transmit.binary +model/vnd.parasolid.transmit.text +model/vnd.vtu vtu +model/vrml wrl vrml +multipart/alternative +multipart/appledouble +multipart/byteranges +multipart/digest +multipart/encrypted +multipart/form-data +multipart/header-set +multipart/mixed +multipart/parallel +multipart/related +multipart/report +multipart/signed +multipart/voice-message +text/calendar ics ifb +text/css css +text/csv csv +text/directory +text/dns +text/enriched +text/html html htm +text/parityfec +text/plain txt text conf def list log in +text/prs.fallenstein.rst +text/prs.lines.tag dsc +text/red +text/rfc822-headers +text/richtext rtx +text/rtf +text/rtp-enc-aescm128 +text/rtx +text/sgml sgml sgm +text/t140 +text/tab-separated-values tsv +text/troff t tr roff man me ms +text/uri-list uri uris urls +text/vnd.abc +text/vnd.curl +text/vnd.dmclientscript +text/vnd.esmertec.theme-descriptor +text/vnd.fly fly +text/vnd.fmi.flexstor flx +text/vnd.in3d.3dml 3dml +text/vnd.in3d.spot spot +text/vnd.iptc.newsml +text/vnd.iptc.nitf +text/vnd.latex-z +text/vnd.motorola.reflex +text/vnd.ms-mediapackage +text/vnd.net2phone.commcenter.command +text/vnd.sun.j2me.app-descriptor jad +text/vnd.trolltech.linguist +text/vnd.wap.si +text/vnd.wap.sl +text/vnd.wap.wml wml +text/vnd.wap.wmlscript wmls +text/x-asm s asm +text/x-c c cc cxx cpp h hh dic +text/x-fortran f for f77 f90 +text/x-pascal p pas +text/x-java-source java +text/x-setext etx +text/x-uuencode uu +text/x-vcalendar vcs +text/x-vcard vcf +text/xml +text/xml-external-parsed-entity +video/3gpp 3gp +video/3gpp-tt +video/3gpp2 3g2 +video/bmpeg +video/bt656 +video/celb +video/dv +video/h261 h261 +video/h263 h263 +video/h263-1998 +video/h263-2000 +video/h264 h264 +video/jpeg jpgv +video/jpm jpm jpgm +video/mj2 mj2 mjp2 +video/mp1s +video/mp2p +video/mp2t +video/mp4 mp4 mp4v mpg4 +video/mp4v-es +video/mpeg mpeg mpg mpe m1v m2v +video/mpeg4-generic +video/mpv +video/nv +video/parityfec +video/pointer +video/quicktime qt mov +video/raw +video/rtp-enc-aescm128 +video/rtx +video/smpte292m +video/vc1 +video/vnd.dlna.mpeg-tts +video/vnd.fvt fvt +video/vnd.hns.video +video/vnd.motorola.video +video/vnd.motorola.videop +video/vnd.mpegurl mxu m4u +video/vnd.nokia.interleaved-multimedia +video/vnd.nokia.videovoip +video/vnd.objectvideo +video/vnd.sealed.mpeg1 +video/vnd.sealed.mpeg4 +video/vnd.sealed.swf +video/vnd.sealedmedia.softseal.mov +video/vnd.vivo viv +video/x-fli fli +video/x-ms-asf asf asx +video/x-ms-wm wm +video/x-ms-wmv wmv +video/x-ms-wmx wmx +video/x-ms-wvx wvx +video/x-msvideo avi +video/x-sgi-movie movie +x-conference/x-cooltalk ice diff --git a/conf/insideout/autoload_configs/acl.conf.xml b/conf/insideout/autoload_configs/acl.conf.xml new file mode 100644 index 0000000000..73f78a625f --- /dev/null +++ b/conf/insideout/autoload_configs/acl.conf.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/alsa.conf.xml b/conf/insideout/autoload_configs/alsa.conf.xml new file mode 100644 index 0000000000..e589acaacf --- /dev/null +++ b/conf/insideout/autoload_configs/alsa.conf.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/cdr_csv.conf.xml b/conf/insideout/autoload_configs/cdr_csv.conf.xml new file mode 100644 index 0000000000..137f15ce45 --- /dev/null +++ b/conf/insideout/autoload_configs/cdr_csv.conf.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/conference.conf.xml b/conf/insideout/autoload_configs/conference.conf.xml new file mode 100644 index 0000000000..6ba27f9a46 --- /dev/null +++ b/conf/insideout/autoload_configs/conference.conf.xml @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/console.conf.xml b/conf/insideout/autoload_configs/console.conf.xml new file mode 100644 index 0000000000..2d9e3e8de5 --- /dev/null +++ b/conf/insideout/autoload_configs/console.conf.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/dialplan_directory.conf.xml b/conf/insideout/autoload_configs/dialplan_directory.conf.xml new file mode 100644 index 0000000000..e4edcd6b15 --- /dev/null +++ b/conf/insideout/autoload_configs/dialplan_directory.conf.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/conf/insideout/autoload_configs/enum.conf.xml b/conf/insideout/autoload_configs/enum.conf.xml new file mode 100644 index 0000000000..eb7a37de79 --- /dev/null +++ b/conf/insideout/autoload_configs/enum.conf.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/event_multicast.conf.xml b/conf/insideout/autoload_configs/event_multicast.conf.xml new file mode 100644 index 0000000000..9f2091df35 --- /dev/null +++ b/conf/insideout/autoload_configs/event_multicast.conf.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/conf/insideout/autoload_configs/event_socket.conf.xml b/conf/insideout/autoload_configs/event_socket.conf.xml new file mode 100644 index 0000000000..62a5fe4994 --- /dev/null +++ b/conf/insideout/autoload_configs/event_socket.conf.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/conf/insideout/autoload_configs/fax.conf.xml b/conf/insideout/autoload_configs/fax.conf.xml new file mode 100644 index 0000000000..c7d825665e --- /dev/null +++ b/conf/insideout/autoload_configs/fax.conf.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/fifo.conf.xml b/conf/insideout/autoload_configs/fifo.conf.xml new file mode 100644 index 0000000000..ab34f57cad --- /dev/null +++ b/conf/insideout/autoload_configs/fifo.conf.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/conf/insideout/autoload_configs/iax.conf.xml b/conf/insideout/autoload_configs/iax.conf.xml new file mode 100644 index 0000000000..f050bea4c1 --- /dev/null +++ b/conf/insideout/autoload_configs/iax.conf.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/ivr.conf.xml b/conf/insideout/autoload_configs/ivr.conf.xml new file mode 100644 index 0000000000..ca4117ce18 --- /dev/null +++ b/conf/insideout/autoload_configs/ivr.conf.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/java.conf.xml b/conf/insideout/autoload_configs/java.conf.xml new file mode 100644 index 0000000000..dadd428387 --- /dev/null +++ b/conf/insideout/autoload_configs/java.conf.xml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/conf/insideout/autoload_configs/limit.conf.xml b/conf/insideout/autoload_configs/limit.conf.xml new file mode 100644 index 0000000000..26b0f8549a --- /dev/null +++ b/conf/insideout/autoload_configs/limit.conf.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/conf/insideout/autoload_configs/local_stream.conf.xml b/conf/insideout/autoload_configs/local_stream.conf.xml new file mode 100644 index 0000000000..db857697f4 --- /dev/null +++ b/conf/insideout/autoload_configs/local_stream.conf.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/logfile.conf.xml b/conf/insideout/autoload_configs/logfile.conf.xml new file mode 100644 index 0000000000..1fbdbdc33c --- /dev/null +++ b/conf/insideout/autoload_configs/logfile.conf.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/lua.conf.xml b/conf/insideout/autoload_configs/lua.conf.xml new file mode 100644 index 0000000000..1eb594f0b5 --- /dev/null +++ b/conf/insideout/autoload_configs/lua.conf.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/modules.conf.xml b/conf/insideout/autoload_configs/modules.conf.xml new file mode 100644 index 0000000000..8793a003ba --- /dev/null +++ b/conf/insideout/autoload_configs/modules.conf.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/opal.conf.xml b/conf/insideout/autoload_configs/opal.conf.xml new file mode 100644 index 0000000000..c0844214a3 --- /dev/null +++ b/conf/insideout/autoload_configs/opal.conf.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/openzap.conf.xml b/conf/insideout/autoload_configs/openzap.conf.xml new file mode 100644 index 0000000000..bfa2bc0391 --- /dev/null +++ b/conf/insideout/autoload_configs/openzap.conf.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/perl.conf.xml b/conf/insideout/autoload_configs/perl.conf.xml new file mode 100644 index 0000000000..b2435000ff --- /dev/null +++ b/conf/insideout/autoload_configs/perl.conf.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/pocketsphinx.conf.xml b/conf/insideout/autoload_configs/pocketsphinx.conf.xml new file mode 100644 index 0000000000..39d9154e3a --- /dev/null +++ b/conf/insideout/autoload_configs/pocketsphinx.conf.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/portaudio.conf.xml b/conf/insideout/autoload_configs/portaudio.conf.xml new file mode 100644 index 0000000000..129576acbf --- /dev/null +++ b/conf/insideout/autoload_configs/portaudio.conf.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/post_load_modules.conf.xml b/conf/insideout/autoload_configs/post_load_modules.conf.xml new file mode 100644 index 0000000000..8f4e132fa4 --- /dev/null +++ b/conf/insideout/autoload_configs/post_load_modules.conf.xml @@ -0,0 +1,4 @@ + + + + diff --git a/conf/insideout/autoload_configs/python.conf.xml b/conf/insideout/autoload_configs/python.conf.xml new file mode 100644 index 0000000000..78a146143a --- /dev/null +++ b/conf/insideout/autoload_configs/python.conf.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/rss.conf.xml b/conf/insideout/autoload_configs/rss.conf.xml new file mode 100644 index 0000000000..f8c4f6d2b4 --- /dev/null +++ b/conf/insideout/autoload_configs/rss.conf.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/conf/insideout/autoload_configs/shout.conf.xml b/conf/insideout/autoload_configs/shout.conf.xml new file mode 100644 index 0000000000..3f381e6278 --- /dev/null +++ b/conf/insideout/autoload_configs/shout.conf.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/conf/insideout/autoload_configs/sofia.conf.xml b/conf/insideout/autoload_configs/sofia.conf.xml new file mode 100644 index 0000000000..24252d08ce --- /dev/null +++ b/conf/insideout/autoload_configs/sofia.conf.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/spidermonkey.conf.xml b/conf/insideout/autoload_configs/spidermonkey.conf.xml new file mode 100644 index 0000000000..2e6dc6a166 --- /dev/null +++ b/conf/insideout/autoload_configs/spidermonkey.conf.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/conf/insideout/autoload_configs/switch.conf.xml b/conf/insideout/autoload_configs/switch.conf.xml new file mode 100644 index 0000000000..09d1c07393 --- /dev/null +++ b/conf/insideout/autoload_configs/switch.conf.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/syslog.conf.xml b/conf/insideout/autoload_configs/syslog.conf.xml new file mode 100644 index 0000000000..1070ba54b3 --- /dev/null +++ b/conf/insideout/autoload_configs/syslog.conf.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/timezones.conf.xml b/conf/insideout/autoload_configs/timezones.conf.xml new file mode 100644 index 0000000000..85c805ff25 --- /dev/null +++ b/conf/insideout/autoload_configs/timezones.conf.xml @@ -0,0 +1,551 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/voicemail.conf.xml b/conf/insideout/autoload_configs/voicemail.conf.xml new file mode 100644 index 0000000000..630816c880 --- /dev/null +++ b/conf/insideout/autoload_configs/voicemail.conf.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/xml_cdr.conf.xml b/conf/insideout/autoload_configs/xml_cdr.conf.xml new file mode 100644 index 0000000000..7f635d64aa --- /dev/null +++ b/conf/insideout/autoload_configs/xml_cdr.conf.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/xml_curl.conf.xml b/conf/insideout/autoload_configs/xml_curl.conf.xml new file mode 100644 index 0000000000..c4f3f9b63c --- /dev/null +++ b/conf/insideout/autoload_configs/xml_curl.conf.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/xml_rpc.conf.xml b/conf/insideout/autoload_configs/xml_rpc.conf.xml new file mode 100644 index 0000000000..714a909907 --- /dev/null +++ b/conf/insideout/autoload_configs/xml_rpc.conf.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/conf/insideout/autoload_configs/zeroconf.conf.xml b/conf/insideout/autoload_configs/zeroconf.conf.xml new file mode 100644 index 0000000000..84c1a46171 --- /dev/null +++ b/conf/insideout/autoload_configs/zeroconf.conf.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/conf/insideout/dialplan/default.xml b/conf/insideout/dialplan/default.xml new file mode 100644 index 0000000000..9fe65497c3 --- /dev/null +++ b/conf/insideout/dialplan/default.xml @@ -0,0 +1,608 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;answer-after=0]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/dialplan/default/00_pizza_demo.xml b/conf/insideout/dialplan/default/00_pizza_demo.xml new file mode 100644 index 0000000000..e7fcca204a --- /dev/null +++ b/conf/insideout/dialplan/default/00_pizza_demo.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/conf/insideout/dialplan/default/01_example.com.xml b/conf/insideout/dialplan/default/01_example.com.xml new file mode 100644 index 0000000000..bd61cd2788 --- /dev/null +++ b/conf/insideout/dialplan/default/01_example.com.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/dialplan/default/02_conferences.xml b/conf/insideout/dialplan/default/02_conferences.xml new file mode 100644 index 0000000000..801772a8a6 --- /dev/null +++ b/conf/insideout/dialplan/default/02_conferences.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/conf/insideout/dialplan/default/99999_enum.xml b/conf/insideout/dialplan/default/99999_enum.xml new file mode 100644 index 0000000000..6fd2151859 --- /dev/null +++ b/conf/insideout/dialplan/default/99999_enum.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/conf/insideout/dialplan/features.xml b/conf/insideout/dialplan/features.xml new file mode 100644 index 0000000000..8a6626e596 --- /dev/null +++ b/conf/insideout/dialplan/features.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/dialplan/public.xml b/conf/insideout/dialplan/public.xml new file mode 100644 index 0000000000..03de309f38 --- /dev/null +++ b/conf/insideout/dialplan/public.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/dialplan/public/00_inbound_did.xml b/conf/insideout/dialplan/public/00_inbound_did.xml new file mode 100644 index 0000000000..d40b3ab2c9 --- /dev/null +++ b/conf/insideout/dialplan/public/00_inbound_did.xml @@ -0,0 +1,18 @@ + + + + + + + + + + diff --git a/conf/insideout/directory/default.xml b/conf/insideout/directory/default.xml new file mode 100644 index 0000000000..08d2355b23 --- /dev/null +++ b/conf/insideout/directory/default.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/directory/default/1000.xml b/conf/insideout/directory/default/1000.xml new file mode 100644 index 0000000000..a8fee30bae --- /dev/null +++ b/conf/insideout/directory/default/1000.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/directory/default/1001.xml b/conf/insideout/directory/default/1001.xml new file mode 100644 index 0000000000..dc81d8f7e3 --- /dev/null +++ b/conf/insideout/directory/default/1001.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/directory/default/1002.xml b/conf/insideout/directory/default/1002.xml new file mode 100644 index 0000000000..e64bfec551 --- /dev/null +++ b/conf/insideout/directory/default/1002.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/directory/default/1003.xml b/conf/insideout/directory/default/1003.xml new file mode 100644 index 0000000000..fb482c8a43 --- /dev/null +++ b/conf/insideout/directory/default/1003.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/directory/default/1004.xml b/conf/insideout/directory/default/1004.xml new file mode 100644 index 0000000000..1fe9e1d572 --- /dev/null +++ b/conf/insideout/directory/default/1004.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/directory/default/1005.xml b/conf/insideout/directory/default/1005.xml new file mode 100644 index 0000000000..172c4ee80e --- /dev/null +++ b/conf/insideout/directory/default/1005.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/directory/default/1006.xml b/conf/insideout/directory/default/1006.xml new file mode 100644 index 0000000000..7eedaf4db7 --- /dev/null +++ b/conf/insideout/directory/default/1006.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/directory/default/1007.xml b/conf/insideout/directory/default/1007.xml new file mode 100644 index 0000000000..84ec70b53c --- /dev/null +++ b/conf/insideout/directory/default/1007.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/directory/default/1008.xml b/conf/insideout/directory/default/1008.xml new file mode 100644 index 0000000000..69b9cf2706 --- /dev/null +++ b/conf/insideout/directory/default/1008.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/directory/default/1009.xml b/conf/insideout/directory/default/1009.xml new file mode 100644 index 0000000000..70efbb3b6d --- /dev/null +++ b/conf/insideout/directory/default/1009.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/directory/default/1010.xml b/conf/insideout/directory/default/1010.xml new file mode 100644 index 0000000000..053ba8e003 --- /dev/null +++ b/conf/insideout/directory/default/1010.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/directory/default/1011.xml b/conf/insideout/directory/default/1011.xml new file mode 100644 index 0000000000..5aff568dea --- /dev/null +++ b/conf/insideout/directory/default/1011.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/directory/default/1012.xml b/conf/insideout/directory/default/1012.xml new file mode 100644 index 0000000000..d0f8c44795 --- /dev/null +++ b/conf/insideout/directory/default/1012.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/directory/default/1013.xml b/conf/insideout/directory/default/1013.xml new file mode 100644 index 0000000000..2fe130117a --- /dev/null +++ b/conf/insideout/directory/default/1013.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/directory/default/1014.xml b/conf/insideout/directory/default/1014.xml new file mode 100644 index 0000000000..20995e9820 --- /dev/null +++ b/conf/insideout/directory/default/1014.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/directory/default/1015.xml b/conf/insideout/directory/default/1015.xml new file mode 100644 index 0000000000..f13d5679dd --- /dev/null +++ b/conf/insideout/directory/default/1015.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/directory/default/1016.xml b/conf/insideout/directory/default/1016.xml new file mode 100644 index 0000000000..8b0dbb3c9c --- /dev/null +++ b/conf/insideout/directory/default/1016.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/directory/default/1017.xml b/conf/insideout/directory/default/1017.xml new file mode 100644 index 0000000000..f9d8059b32 --- /dev/null +++ b/conf/insideout/directory/default/1017.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/directory/default/1018.xml b/conf/insideout/directory/default/1018.xml new file mode 100644 index 0000000000..e617579e92 --- /dev/null +++ b/conf/insideout/directory/default/1018.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/directory/default/1019.xml b/conf/insideout/directory/default/1019.xml new file mode 100644 index 0000000000..e035a25166 --- /dev/null +++ b/conf/insideout/directory/default/1019.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/directory/default/brian.xml b/conf/insideout/directory/default/brian.xml new file mode 100644 index 0000000000..791f510265 --- /dev/null +++ b/conf/insideout/directory/default/brian.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/directory/default/default.xml b/conf/insideout/directory/default/default.xml new file mode 100644 index 0000000000..8003ae6cfc --- /dev/null +++ b/conf/insideout/directory/default/default.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/conf/insideout/directory/default/example.com.xml b/conf/insideout/directory/default/example.com.xml new file mode 100644 index 0000000000..23ffcfa189 --- /dev/null +++ b/conf/insideout/directory/default/example.com.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/extensions.conf b/conf/insideout/extensions.conf new file mode 100644 index 0000000000..f2c922efce --- /dev/null +++ b/conf/insideout/extensions.conf @@ -0,0 +1,21 @@ +[default] + +; Things you're used to.... +exten => music,n,Dial(SIP/1234@conference.freeswitch.org|120) + +exten => _1XXXXX,n,set(cool=${EXTEN}) +exten => _1XXXXX,n,set(myvar=true) +exten => _1XXXXX,n,Goto(default|music) +exten => 2137991400/1000,n,Goto(default|music) + + +; Some new magic you can do.... +exten => ~^(18(0{2}|8{2}|7{2}|6{2})\d{7})$,n,enum($1) +exten => ~^(18(0{2}|8{2}|7{2}|6{2})\d{7})$,n,bridge(${enum_auto_route}) + +; instead of exten, put anything about the call you would rather match on. +; either the names of a field in caller_profile or a string of variables to expand. +caller_id_number => 2137991400,n,Goto(default|music) +${sip_from_user} => bill,n,Goto(default|music) + + diff --git a/conf/insideout/freeswitch.xml b/conf/insideout/freeswitch.xml new file mode 100644 index 0000000000..e449978c76 --- /dev/null +++ b/conf/insideout/freeswitch.xml @@ -0,0 +1,43 @@ + + + + + +
+ +
+ +
+ +
+ + + +
+ +
+ + +
+ + + +
+
+ + + diff --git a/conf/insideout/fur_elise.ttml b/conf/insideout/fur_elise.ttml new file mode 100644 index 0000000000..6e6ef03724 --- /dev/null +++ b/conf/insideout/fur_elise.ttml @@ -0,0 +1,83 @@ +%(167, 0, 659) +%(167, 0, 622) +%(167, 0, 659) +%(167, 0, 622) +%(167, 0, 659) +%(167, 0, 494) +%(167, 0, 554) +%(167, 0, 523) +%(333, 0, 440) +%(167, 0, 0) +%(167, 0, 262) +%(167, 0, 330) +%(167, 0, 440) +%(333, 0, 494) +%(167, 0, 0) +%(167, 0, 330) +%(167, 0, 415) +%(167, 0, 494) +%(333, 0, 523) +%(167, 0, 0) +%(167, 0, 330) +%(167, 0, 659) +%(167, 0, 622) +%(167, 0, 659) +%(167, 0, 622) +%(167, 0, 659) +%(167, 0, 494) +%(167, 0, 554) +%(167, 0, 523) +%(333, 0, 440) +%(167, 0, 0) +%(167, 0, 262) +%(167, 0, 330) +%(167, 0, 440) +%(333, 0, 494) +%(167, 0, 0) +%(167, 0, 330) +%(167, 0, 523) +%(167, 0, 494) +%(167, 0, 440) +%(167, 0, 0) +%(167, 0, 494) +%(167, 0, 523) +%(167, 0, 587) +%(333, 0, 659) +%(167, 0, 0) +%(167, 0, 392) +%(167, 0, 698) +%(167, 0, 784) +%(333, 0, 587) +%(167, 0, 0) +%(167, 0, 349) +%(167, 0, 659) +%(167, 0, 587) +%(333, 0, 523) +%(167, 0, 0) +%(167, 0, 330) +%(167, 0, 587) +%(167, 0, 523) +%(333, 0, 494) +%(167, 0, 0) +%(167, 0, 330) +%(167, 0, 659) +%(167, 0, 330) +%(167, 0, 659) +%(167, 0, 659) +%(167, 0, 1319) +%(167, 0, 622) +%(167, 0, 659) +%(167, 0, 622) +%(167, 0, 659) +%(167, 0, 622) +%(167, 0, 659) +%(167, 0, 622) +%(167, 0, 659) +%(167, 0, 622) +%(167, 0, 659) +%(167, 0, 622) +%(167, 0, 659) +%(167, 0, 494) +%(167, 0, 554) +%(167, 0, 523) +%(333, 0, 440) diff --git a/conf/insideout/lang/de/de.xml b/conf/insideout/lang/de/de.xml new file mode 100644 index 0000000000..5239489f75 --- /dev/null +++ b/conf/insideout/lang/de/de.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/conf/insideout/lang/de/demo/demo.xml b/conf/insideout/lang/de/demo/demo.xml new file mode 100644 index 0000000000..61582b2052 --- /dev/null +++ b/conf/insideout/lang/de/demo/demo.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/lang/de/vm/tts.xml b/conf/insideout/lang/de/vm/tts.xml new file mode 100644 index 0000000000..7a8f18cf50 --- /dev/null +++ b/conf/insideout/lang/de/vm/tts.xml @@ -0,0 +1,214 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/lang/en/demo/demo-ivr.xml b/conf/insideout/lang/en/demo/demo-ivr.xml new file mode 100644 index 0000000000..27fd372b97 --- /dev/null +++ b/conf/insideout/lang/en/demo/demo-ivr.xml @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/lang/en/demo/demo.xml b/conf/insideout/lang/en/demo/demo.xml new file mode 100644 index 0000000000..bcfe6a8227 --- /dev/null +++ b/conf/insideout/lang/en/demo/demo.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/lang/en/en.xml b/conf/insideout/lang/en/en.xml new file mode 100644 index 0000000000..92397ba390 --- /dev/null +++ b/conf/insideout/lang/en/en.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/conf/insideout/lang/en/vm/sounds.xml b/conf/insideout/lang/en/vm/sounds.xml new file mode 100644 index 0000000000..03f8303185 --- /dev/null +++ b/conf/insideout/lang/en/vm/sounds.xml @@ -0,0 +1,335 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/lang/en/vm/tts.xml b/conf/insideout/lang/en/vm/tts.xml new file mode 100644 index 0000000000..2de4b3781e --- /dev/null +++ b/conf/insideout/lang/en/vm/tts.xml @@ -0,0 +1,249 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/lang/fr/demo/demo.xml b/conf/insideout/lang/fr/demo/demo.xml new file mode 100644 index 0000000000..3b2edac441 --- /dev/null +++ b/conf/insideout/lang/fr/demo/demo.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/lang/fr/fr.xml b/conf/insideout/lang/fr/fr.xml new file mode 100644 index 0000000000..40c038f5b1 --- /dev/null +++ b/conf/insideout/lang/fr/fr.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/conf/insideout/lang/fr/vm/sounds.xml b/conf/insideout/lang/fr/vm/sounds.xml new file mode 100644 index 0000000000..81232a2bd0 --- /dev/null +++ b/conf/insideout/lang/fr/vm/sounds.xml @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/conf/insideout/mime.types b/conf/insideout/mime.types new file mode 100644 index 0000000000..34d5fc9055 --- /dev/null +++ b/conf/insideout/mime.types @@ -0,0 +1,983 @@ +# This is a comment. I love comments. + +# This file controls what Internet media types are sent to the client for +# given file extension(s). Sending the correct media type to the client +# is important so they know how to handle the content of the file. +# Extra types can either be added here or by using an AddType directive +# in your config files. For more information about Internet media types, +# please read RFC 2045, 2046, 2047, 2048, and 2077. The Internet media type +# registry is at . + +# MIME type Extensions +application/activemessage +application/andrew-inset ez +application/applefile +application/atom+xml atom +application/atomcat+xml atomcat +application/atomicmail +application/atomsvc+xml atomsvc +application/auth-policy+xml +application/batch-smtp +application/beep+xml +application/cals-1840 +application/ccxml+xml ccxml +application/cellml+xml +application/cnrp+xml +application/commonground +application/conference-info+xml +application/cpl+xml +application/csta+xml +application/cstadata+xml +application/cybercash +application/davmount+xml davmount +application/dca-rft +application/dec-dx +application/dialog-info+xml +application/dicom +application/dns +application/dvcs +application/ecmascript ecma +application/edi-consent +application/edi-x12 +application/edifact +application/epp+xml +application/eshop +application/fastinfoset +application/fastsoap +application/fits +application/font-tdpfr pfr +application/h224 +application/http +application/hyperstudio stk +application/iges +application/im-iscomposing+xml +application/index +application/index.cmd +application/index.obj +application/index.response +application/index.vnd +application/iotp +application/ipp +application/isup +application/javascript js +application/json json +application/kpml-request+xml +application/kpml-response+xml +application/mac-binhex40 hqx +application/mac-compactpro cpt +application/macwriteii +application/marc mrc +application/mathematica ma nb mb +application/mathml+xml mathml +application/mbms-associated-procedure-description+xml +application/mbms-deregister+xml +application/mbms-envelope+xml +application/mbms-msk+xml +application/mbms-msk-response+xml +application/mbms-protection-description+xml +application/mbms-reception-report+xml +application/mbms-register+xml +application/mbms-register-response+xml +application/mbms-user-service-description+xml +application/mbox mbox +application/mediaservercontrol+xml mscml +application/mikey +application/mp4 mp4s +application/mpeg4-generic +application/mpeg4-iod +application/mpeg4-iod-xmt +application/msword doc dot +application/mxf mxf +application/nasdata +application/news-message-id +application/news-transmission +application/nss +application/ocsp-request +application/ocsp-response +application/octet-stream bin dms lha lzh class so iso dmg dist distz pkg bpk dump elc +application/oda oda +application/oebps-package+xml +application/ogg ogg +application/parityfec +application/pdf pdf +application/pgp-encrypted pgp +application/pgp-keys +application/pgp-signature asc sig +application/pics-rules prf +application/pidf+xml +application/pkcs10 p10 +application/pkcs7-mime p7m p7c +application/pkcs7-signature p7s +application/pkix-cert cer +application/pkix-crl crl +application/pkix-pkipath pkipath +application/pkixcmp pki +application/pls+xml pls +application/poc-settings+xml +application/postscript ai eps ps +application/prs.alvestrand.titrax-sheet +application/prs.cww cww +application/prs.nprend +application/prs.plucker +application/qsig +application/rdf+xml rdf +application/reginfo+xml rif +application/relax-ng-compact-syntax rnc +application/remote-printing +application/resource-lists+xml rl +application/riscos +application/rlmi+xml +application/rls-services+xml rs +application/rsd+xml rsd +application/rss+xml rss +application/rtf rtf +application/rtx +application/samlassertion+xml +application/samlmetadata+xml +application/sbml+xml sbml +application/sdp sdp +application/set-payment +application/set-payment-initiation setpay +application/set-registration +application/set-registration-initiation setreg +application/sgml +application/sgml-open-catalog +application/shf+xml shf +application/sieve +application/simple-filter+xml +application/simple-message-summary +application/simplesymbolcontainer +application/slate +application/smil +application/smil+xml smi smil +application/soap+fastinfoset +application/soap+xml +application/spirits-event+xml +application/srgs gram +application/srgs+xml grxml +application/ssml+xml ssml +application/timestamp-query +application/timestamp-reply +application/tve-trigger +application/vemmi +application/vividence.scriptfile +application/vnd.3gpp.bsf+xml +application/vnd.3gpp.pic-bw-large plb +application/vnd.3gpp.pic-bw-small psb +application/vnd.3gpp.pic-bw-var pvb +application/vnd.3gpp.sms +application/vnd.3gpp2.bcmcsinfo+xml +application/vnd.3gpp2.sms +application/vnd.3m.post-it-notes pwn +application/vnd.accpac.simply.aso aso +application/vnd.accpac.simply.imp imp +application/vnd.acucobol acu +application/vnd.acucorp atc acutc +application/vnd.adobe.xdp+xml xdp +application/vnd.adobe.xfdf xfdf +application/vnd.aether.imp +application/vnd.amiga.ami ami +application/vnd.anser-web-certificate-issue-initiation cii +application/vnd.anser-web-funds-transfer-initiation fti +application/vnd.antix.game-component atx +application/vnd.apple.installer+xml mpkg +application/vnd.audiograph aep +application/vnd.autopackage +application/vnd.avistar+xml +application/vnd.blueice.multipass mpm +application/vnd.bmi bmi +application/vnd.businessobjects rep +application/vnd.cab-jscript +application/vnd.canon-cpdl +application/vnd.canon-lips +application/vnd.cendio.thinlinc.clientconf +application/vnd.chemdraw+xml cdxml +application/vnd.chipnuts.karaoke-mmd mmd +application/vnd.cinderella cdy +application/vnd.cirpack.isdn-ext +application/vnd.claymore cla +application/vnd.clonk.c4group c4g c4d c4f c4p c4u +application/vnd.commerce-battelle +application/vnd.commonspace csp cst +application/vnd.contact.cmsg cdbcmsg +application/vnd.cosmocaller cmc +application/vnd.crick.clicker clkx +application/vnd.crick.clicker.keyboard clkk +application/vnd.crick.clicker.palette clkp +application/vnd.crick.clicker.template clkt +application/vnd.crick.clicker.wordbank clkw +application/vnd.criticaltools.wbs+xml wbs +application/vnd.ctc-posml pml +application/vnd.cups-pdf +application/vnd.cups-postscript +application/vnd.cups-ppd ppd +application/vnd.cups-raster +application/vnd.cups-raw +application/vnd.curl curl +application/vnd.cybank +application/vnd.data-vision.rdz rdz +application/vnd.denovo.fcselayout-link fe_launch +application/vnd.dna dna +application/vnd.dolby.mlp mlp +application/vnd.dpgraph dpg +application/vnd.dreamfactory dfac +application/vnd.dvb.esgcontainer +application/vnd.dvb.ipdcesgaccess +application/vnd.dxr +application/vnd.ecdis-update +application/vnd.ecowin.chart mag +application/vnd.ecowin.filerequest +application/vnd.ecowin.fileupdate +application/vnd.ecowin.series +application/vnd.ecowin.seriesrequest +application/vnd.ecowin.seriesupdate +application/vnd.enliven nml +application/vnd.epson.esf esf +application/vnd.epson.msf msf +application/vnd.epson.quickanime qam +application/vnd.epson.salt slt +application/vnd.epson.ssf ssf +application/vnd.ericsson.quickcall +application/vnd.eszigno3+xml es3 et3 +application/vnd.eudora.data +application/vnd.ezpix-album ez2 +application/vnd.ezpix-package ez3 +application/vnd.fdf fdf +application/vnd.ffsns +application/vnd.fints +application/vnd.flographit gph +application/vnd.fluxtime.clip ftc +application/vnd.framemaker fm frame maker +application/vnd.frogans.fnc fnc +application/vnd.frogans.ltf ltf +application/vnd.fsc.weblaunch fsc +application/vnd.fujitsu.oasys oas +application/vnd.fujitsu.oasys2 oa2 +application/vnd.fujitsu.oasys3 oa3 +application/vnd.fujitsu.oasysgp fg5 +application/vnd.fujitsu.oasysprs bh2 +application/vnd.fujixerox.art-ex +application/vnd.fujixerox.art4 +application/vnd.fujixerox.hbpl +application/vnd.fujixerox.ddd ddd +application/vnd.fujixerox.docuworks xdw +application/vnd.fujixerox.docuworks.binder xbd +application/vnd.fut-misnet +application/vnd.fuzzysheet fzs +application/vnd.genomatix.tuxedo txd +application/vnd.google-earth.kml+xml kml +application/vnd.google-earth.kmz kmz +application/vnd.grafeq gqf gqs +application/vnd.gridmp +application/vnd.groove-account gac +application/vnd.groove-help ghf +application/vnd.groove-identity-message gim +application/vnd.groove-injector grv +application/vnd.groove-tool-message gtm +application/vnd.groove-tool-template tpl +application/vnd.groove-vcard vcg +application/vnd.handheld-entertainment+xml zmm +application/vnd.hbci hbci +application/vnd.hcl-bireports +application/vnd.hhe.lesson-player les +application/vnd.hp-hpgl hpgl +application/vnd.hp-hpid hpid +application/vnd.hp-hps hps +application/vnd.hp-jlyt jlt +application/vnd.hp-pcl pcl +application/vnd.hp-pclxl pclxl +application/vnd.httphone +application/vnd.hzn-3d-crossword x3d +application/vnd.ibm.afplinedata +application/vnd.ibm.electronic-media +application/vnd.ibm.minipay mpy +application/vnd.ibm.modcap afp listafp list3820 +application/vnd.ibm.rights-management irm +application/vnd.ibm.secure-container sc +application/vnd.igloader igl +application/vnd.immervision-ivp ivp +application/vnd.immervision-ivu ivu +application/vnd.informedcontrol.rms+xml +application/vnd.intercon.formnet xpw xpx +application/vnd.intertrust.digibox +application/vnd.intertrust.nncp +application/vnd.intu.qbo qbo +application/vnd.intu.qfx qfx +application/vnd.ipunplugged.rcprofile rcprofile +application/vnd.irepository.package+xml irp +application/vnd.is-xpr xpr +application/vnd.jam jam +application/vnd.japannet-directory-service +application/vnd.japannet-jpnstore-wakeup +application/vnd.japannet-payment-wakeup +application/vnd.japannet-registration +application/vnd.japannet-registration-wakeup +application/vnd.japannet-setstore-wakeup +application/vnd.japannet-verification +application/vnd.japannet-verification-wakeup +application/vnd.jcp.javame.midlet-rms rms +application/vnd.jisp jisp +application/vnd.kahootz ktz ktr +application/vnd.kde.karbon karbon +application/vnd.kde.kchart chrt +application/vnd.kde.kformula kfo +application/vnd.kde.kivio flw +application/vnd.kde.kontour kon +application/vnd.kde.kpresenter kpr kpt +application/vnd.kde.kspread ksp +application/vnd.kde.kword kwd kwt +application/vnd.kenameaapp htke +application/vnd.kidspiration kia +application/vnd.kinar kne knp +application/vnd.koan skp skd skt skm +application/vnd.liberty-request+xml +application/vnd.llamagraphics.life-balance.desktop lbd +application/vnd.llamagraphics.life-balance.exchange+xml lbe +application/vnd.lotus-1-2-3 123 +application/vnd.lotus-approach apr +application/vnd.lotus-freelance pre +application/vnd.lotus-notes nsf +application/vnd.lotus-organizer org +application/vnd.lotus-screencam scm +application/vnd.lotus-wordpro lwp +application/vnd.macports.portpkg portpkg +application/vnd.marlin.drm.actiontoken+xml +application/vnd.marlin.drm.conftoken+xml +application/vnd.marlin.drm.mdcf +application/vnd.mcd mcd +application/vnd.medcalcdata mc1 +application/vnd.mediastation.cdkey cdkey +application/vnd.meridian-slingshot +application/vnd.mfer mwf +application/vnd.mfmp mfm +application/vnd.micrografx.flo flo +application/vnd.micrografx.igx igx +application/vnd.mif mif +application/vnd.minisoft-hp3000-save +application/vnd.mitsubishi.misty-guard.trustweb +application/vnd.mobius.daf daf +application/vnd.mobius.dis dis +application/vnd.mobius.mbk mbk +application/vnd.mobius.mqy mqy +application/vnd.mobius.msl msl +application/vnd.mobius.plc plc +application/vnd.mobius.txf txf +application/vnd.mophun.application mpn +application/vnd.mophun.certificate mpc +application/vnd.motorola.flexsuite +application/vnd.motorola.flexsuite.adsi +application/vnd.motorola.flexsuite.fis +application/vnd.motorola.flexsuite.gotap +application/vnd.motorola.flexsuite.kmr +application/vnd.motorola.flexsuite.ttc +application/vnd.motorola.flexsuite.wem +application/vnd.mozilla.xul+xml xul +application/vnd.ms-artgalry cil +application/vnd.ms-asf asf +application/vnd.ms-cab-compressed cab +application/vnd.ms-excel xls xlm xla xlc xlt xlw +application/vnd.ms-fontobject eot +application/vnd.ms-htmlhelp chm +application/vnd.ms-ims ims +application/vnd.ms-lrm lrm +application/vnd.ms-playready.initiator+xml +application/vnd.ms-powerpoint ppt pps pot +application/vnd.ms-project mpp mpt +application/vnd.ms-tnef +application/vnd.ms-wmdrm.lic-chlg-req +application/vnd.ms-wmdrm.lic-resp +application/vnd.ms-wmdrm.meter-chlg-req +application/vnd.ms-wmdrm.meter-resp +application/vnd.ms-works wps wks wcm wdb +application/vnd.ms-wpl wpl +application/vnd.ms-xpsdocument xps +application/vnd.mseq mseq +application/vnd.msign +application/vnd.music-niff +application/vnd.musician mus +application/vnd.ncd.control +application/vnd.nervana +application/vnd.netfpx +application/vnd.neurolanguage.nlu nlu +application/vnd.noblenet-directory nnd +application/vnd.noblenet-sealer nns +application/vnd.noblenet-web nnw +application/vnd.nokia.catalogs +application/vnd.nokia.conml+wbxml +application/vnd.nokia.conml+xml +application/vnd.nokia.isds-radio-presets +application/vnd.nokia.iptv.config+xml +application/vnd.nokia.landmark+wbxml +application/vnd.nokia.landmark+xml +application/vnd.nokia.landmarkcollection+xml +application/vnd.nokia.n-gage.ac+xml +application/vnd.nokia.n-gage.data ngdat +application/vnd.nokia.n-gage.symbian.install n-gage +application/vnd.nokia.ncd +application/vnd.nokia.pcd+wbxml +application/vnd.nokia.pcd+xml +application/vnd.nokia.radio-preset rpst +application/vnd.nokia.radio-presets rpss +application/vnd.novadigm.edm edm +application/vnd.novadigm.edx edx +application/vnd.novadigm.ext ext +application/vnd.oasis.opendocument.chart odc +application/vnd.oasis.opendocument.chart-template otc +application/vnd.oasis.opendocument.formula odf +application/vnd.oasis.opendocument.formula-template otf +application/vnd.oasis.opendocument.graphics odg +application/vnd.oasis.opendocument.graphics-template otg +application/vnd.oasis.opendocument.image odi +application/vnd.oasis.opendocument.image-template oti +application/vnd.oasis.opendocument.presentation odp +application/vnd.oasis.opendocument.presentation-template otp +application/vnd.oasis.opendocument.spreadsheet ods +application/vnd.oasis.opendocument.spreadsheet-template ots +application/vnd.oasis.opendocument.text odt +application/vnd.oasis.opendocument.text-master otm +application/vnd.oasis.opendocument.text-template ott +application/vnd.oasis.opendocument.text-web oth +application/vnd.obn +application/vnd.olpc-sugar xo +application/vnd.oma-scws-config +application/vnd.oma-scws-http-request +application/vnd.oma-scws-http-response +application/vnd.oma.bcast.associated-procedure-parameter+xml +application/vnd.oma.bcast.drm-trigger+xml +application/vnd.oma.bcast.imd+xml +application/vnd.oma.bcast.notification+xml +application/vnd.oma.bcast.sgboot +application/vnd.oma.bcast.sgdd+xml +application/vnd.oma.bcast.sgdu +application/vnd.oma.bcast.simple-symbol-container +application/vnd.oma.bcast.smartcard-trigger+xml +application/vnd.oma.bcast.sprov+xml +application/vnd.oma.dd2+xml dd2 +application/vnd.oma.drm.risd+xml +application/vnd.oma.group-usage-list+xml +application/vnd.oma.poc.groups+xml +application/vnd.oma.xcap-directory+xml +application/vnd.omads-email+xml +application/vnd.omads-file+xml +application/vnd.omads-folder+xml +application/vnd.omaloc-supl-init +application/vnd.openofficeorg.extension oxt +application/vnd.osa.netdeploy +application/vnd.osgi.dp dp +application/vnd.otps.ct-kip+xml +application/vnd.palm prc pdb pqa oprc +application/vnd.paos.xml +application/vnd.pg.format str +application/vnd.pg.osasli ei6 +application/vnd.piaccess.application-licence +application/vnd.picsel efif +application/vnd.poc.group-advertisement+xml +application/vnd.pocketlearn plf +application/vnd.powerbuilder6 pbd +application/vnd.powerbuilder6-s +application/vnd.powerbuilder7 +application/vnd.powerbuilder7-s +application/vnd.powerbuilder75 +application/vnd.powerbuilder75-s +application/vnd.preminet +application/vnd.previewsystems.box box +application/vnd.proteus.magazine mgz +application/vnd.publishare-delta-tree qps +application/vnd.pvi.ptid1 ptid +application/vnd.pwg-multiplexed +application/vnd.pwg-xhtml-print+xml +application/vnd.qualcomm.brew-app-res +application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb +application/vnd.rapid +application/vnd.recordare.musicxml mxl +application/vnd.recordare.musicxml+xml +application/vnd.renlearn.rlprint +application/vnd.rn-realmedia rm +application/vnd.ruckus.download +application/vnd.s3sms +application/vnd.scribus +application/vnd.sealed.3df +application/vnd.sealed.csf +application/vnd.sealed.doc +application/vnd.sealed.eml +application/vnd.sealed.mht +application/vnd.sealed.net +application/vnd.sealed.ppt +application/vnd.sealed.tiff +application/vnd.sealed.xls +application/vnd.sealedmedia.softseal.html +application/vnd.sealedmedia.softseal.pdf +application/vnd.seemail see +application/vnd.sema sema +application/vnd.semd semd +application/vnd.semf semf +application/vnd.shana.informed.formdata ifm +application/vnd.shana.informed.formtemplate itp +application/vnd.shana.informed.interchange iif +application/vnd.shana.informed.package ipk +application/vnd.simtech-mindmapper twd twds +application/vnd.smaf mmf +application/vnd.solent.sdkm+xml sdkm sdkd +application/vnd.spotfire.dxp dxp +application/vnd.spotfire.sfs sfs +application/vnd.sss-cod +application/vnd.sss-dtf +application/vnd.sss-ntf +application/vnd.street-stream +application/vnd.sun.wadl+xml +application/vnd.sus-calendar sus susp +application/vnd.svd svd +application/vnd.swiftview-ics +application/vnd.syncml+xml xsm +application/vnd.syncml.dm+wbxml bdm +application/vnd.syncml.dm+xml xdm +application/vnd.syncml.ds.notification +application/vnd.tao.intent-module-archive tao +application/vnd.tmobile-livetv tmo +application/vnd.trid.tpt tpt +application/vnd.triscape.mxs mxs +application/vnd.trueapp tra +application/vnd.truedoc +application/vnd.ufdl ufd ufdl +application/vnd.uiq.theme utz +application/vnd.umajin umj +application/vnd.unity unityweb +application/vnd.uoml+xml uoml +application/vnd.uplanet.alert +application/vnd.uplanet.alert-wbxml +application/vnd.uplanet.bearer-choice +application/vnd.uplanet.bearer-choice-wbxml +application/vnd.uplanet.cacheop +application/vnd.uplanet.cacheop-wbxml +application/vnd.uplanet.channel +application/vnd.uplanet.channel-wbxml +application/vnd.uplanet.list +application/vnd.uplanet.list-wbxml +application/vnd.uplanet.listcmd +application/vnd.uplanet.listcmd-wbxml +application/vnd.uplanet.signal +application/vnd.vcx vcx +application/vnd.vd-study +application/vnd.vectorworks +application/vnd.vidsoft.vidconference +application/vnd.visio vsd vst vss vsw +application/vnd.visionary vis +application/vnd.vividence.scriptfile +application/vnd.vsf vsf +application/vnd.wap.sic +application/vnd.wap.slc +application/vnd.wap.wbxml wbxml +application/vnd.wap.wmlc wmlc +application/vnd.wap.wmlscriptc wmlsc +application/vnd.webturbo wtb +application/vnd.wfa.wsc +application/vnd.wordperfect wpd +application/vnd.wqd wqd +application/vnd.wrq-hp3000-labelled +application/vnd.wt.stf stf +application/vnd.wv.csp+wbxml +application/vnd.wv.csp+xml +application/vnd.wv.ssp+xml +application/vnd.xara xar +application/vnd.xfdl xfdl +application/vnd.xmpie.cpkg +application/vnd.xmpie.dpkg +application/vnd.xmpie.plan +application/vnd.xmpie.ppkg +application/vnd.xmpie.xlim +application/vnd.yamaha.hv-dic hvd +application/vnd.yamaha.hv-script hvs +application/vnd.yamaha.hv-voice hvp +application/vnd.yamaha.smaf-audio saf +application/vnd.yamaha.smaf-phrase spf +application/vnd.yellowriver-custom-menu cmp +application/vnd.zzazz.deck+xml zaz +application/voicexml+xml vxml +application/watcherinfo+xml +application/whoispp-query +application/whoispp-response +application/winhlp hlp +application/wita +application/wordperfect5.1 +application/wsdl+xml wsdl +application/wspolicy+xml wspolicy +application/x-ace-compressed ace +application/x-bcpio bcpio +application/x-bittorrent torrent +application/x-bzip bz +application/x-bzip2 bz2 boz +application/x-cdlink vcd +application/x-chat chat +application/x-chess-pgn pgn +application/x-compress +application/x-cpio cpio +application/x-csh csh +application/x-director dcr dir dxr fgd +application/x-dvi dvi +application/x-futuresplash spl +application/x-gtar gtar +application/x-gzip +application/x-hdf hdf +application/x-latex latex +application/x-ms-wmd wmd +application/x-ms-wmz wmz +application/x-msaccess mdb +application/x-msbinder obd +application/x-mscardfile crd +application/x-msclip clp +application/x-msdownload exe dll com bat msi +application/x-msmediaview mvb m13 m14 +application/x-msmetafile wmf +application/x-msmoney mny +application/x-mspublisher pub +application/x-msschedule scd +application/x-msterminal trm +application/x-mswrite wri +application/x-netcdf nc cdf +application/x-pkcs12 p12 pfx +application/x-pkcs7-certificates p7b spc +application/x-pkcs7-certreqresp p7r +application/x-rar-compressed rar +application/x-sh sh +application/x-shar shar +application/x-shockwave-flash swf +application/x-stuffit sit +application/x-stuffitx sitx +application/x-sv4cpio sv4cpio +application/x-sv4crc sv4crc +application/x-tar tar +application/x-tcl tcl +application/x-tex tex +application/x-texinfo texinfo texi +application/x-ustar ustar +application/x-wais-source src +application/x-x509-ca-cert der crt +application/x400-bp +application/xcap-att+xml +application/xcap-caps+xml +application/xcap-el+xml +application/xcap-error+xml +application/xcap-ns+xml +application/xenc+xml xenc +application/xhtml+xml xhtml xht +application/xml xml xsl +application/xml-dtd dtd +application/xml-external-parsed-entity +application/xmpp+xml +application/xop+xml xop +application/xslt+xml xslt +application/xspf+xml xspf +application/xv+xml mxml xhvml xvml xvm +application/zip zip +audio/32kadpcm +audio/3gpp +audio/3gpp2 +audio/ac3 +audio/amr +audio/amr-wb +audio/amr-wb+ +audio/asc +audio/basic au snd +audio/bv16 +audio/bv32 +audio/clearmode +audio/cn +audio/dat12 +audio/dls +audio/dsr-es201108 +audio/dsr-es202050 +audio/dsr-es202211 +audio/dsr-es202212 +audio/dvi4 +audio/eac3 +audio/evrc +audio/evrc-qcp +audio/evrc0 +audio/evrc1 +audio/evrcb +audio/evrcb0 +audio/evrcb1 +audio/g722 +audio/g7221 +audio/g723 +audio/g726-16 +audio/g726-24 +audio/g726-32 +audio/g726-40 +audio/g728 +audio/g729 +audio/g7291 +audio/g729d +audio/g729e +audio/gsm +audio/gsm-efr +audio/ilbc +audio/l16 +audio/l20 +audio/l24 +audio/l8 +audio/lpc +audio/midi mid midi kar rmi +audio/mobile-xmf +audio/mp4 mp4a +audio/mp4a-latm +audio/mpa +audio/mpa-robust +audio/mpeg mpga mp2 mp2a mp3 m2a m3a +audio/mpeg4-generic +audio/parityfec +audio/pcma +audio/pcmu +audio/prs.sid +audio/qcelp +audio/red +audio/rtp-enc-aescm128 +audio/rtp-midi +audio/rtx +audio/smv +audio/smv0 +audio/smv-qcp +audio/sp-midi +audio/t140c +audio/t38 +audio/telephone-event +audio/tone +audio/vdvi +audio/vmr-wb +audio/vnd.3gpp.iufp +audio/vnd.4sb +audio/vnd.audiokoz +audio/vnd.celp +audio/vnd.cisco.nse +audio/vnd.cmles.radio-events +audio/vnd.cns.anp1 +audio/vnd.cns.inf1 +audio/vnd.digital-winds eol +audio/vnd.dlna.adts +audio/vnd.dolby.mlp +audio/vnd.everad.plj +audio/vnd.hns.audio +audio/vnd.lucent.voice lvp +audio/vnd.nokia.mobile-xmf +audio/vnd.nortel.vbk +audio/vnd.nuera.ecelp4800 ecelp4800 +audio/vnd.nuera.ecelp7470 ecelp7470 +audio/vnd.nuera.ecelp9600 ecelp9600 +audio/vnd.octel.sbc +audio/vnd.qcelp +audio/vnd.rhetorex.32kadpcm +audio/vnd.sealedmedia.softseal.mpeg +audio/vnd.vmx.cvsd +audio/wav wav +audio/x-aiff aif aiff aifc +audio/x-mpegurl m3u +audio/x-ms-wax wax +audio/x-ms-wma wma +audio/x-pn-realaudio ram ra +audio/x-pn-realaudio-plugin rmp +audio/x-wav wav +chemical/x-cdx cdx +chemical/x-cif cif +chemical/x-cmdf cmdf +chemical/x-cml cml +chemical/x-csml csml +chemical/x-pdb pdb +chemical/x-xyz xyz +image/bmp bmp +image/cgm cgm +image/fits +image/g3fax g3 +image/gif gif +image/ief ief +image/jp2 +image/jpeg jpeg jpg jpe +image/jpm +image/jpx +image/naplps +image/png png +image/prs.btif btif +image/prs.pti +image/svg+xml svg svgz +image/t38 +image/tiff tiff tif +image/tiff-fx +image/vnd.adobe.photoshop psd +image/vnd.cns.inf2 +image/vnd.djvu djvu djv +image/vnd.dwg dwg +image/vnd.dxf dxf +image/vnd.fastbidsheet fbs +image/vnd.fpx fpx +image/vnd.fst fst +image/vnd.fujixerox.edmics-mmr mmr +image/vnd.fujixerox.edmics-rlc rlc +image/vnd.globalgraphics.pgb +image/vnd.microsoft.icon ico +image/vnd.mix +image/vnd.ms-modi mdi +image/vnd.net-fpx npx +image/vnd.sealed.png +image/vnd.sealedmedia.softseal.gif +image/vnd.sealedmedia.softseal.jpg +image/vnd.svf +image/vnd.wap.wbmp wbmp +image/vnd.xiff xif +image/x-cmu-raster ras +image/x-cmx cmx +image/x-icon +image/x-pcx pcx +image/x-pict pic pct +image/x-portable-anymap pnm +image/x-portable-bitmap pbm +image/x-portable-graymap pgm +image/x-portable-pixmap ppm +image/x-rgb rgb +image/x-xbitmap xbm +image/x-xpixmap xpm +image/x-xwindowdump xwd +message/cpim +message/delivery-status +message/disposition-notification +message/external-body +message/http +message/news +message/partial +message/rfc822 eml mime +message/s-http +message/sip +message/sipfrag +message/tracking-status +model/iges igs iges +model/mesh msh mesh silo +model/vnd.dwf dwf +model/vnd.flatland.3dml +model/vnd.gdl gdl +model/vnd.gs.gdl +model/vnd.gtw gtw +model/vnd.moml+xml +model/vnd.mts mts +model/vnd.parasolid.transmit.binary +model/vnd.parasolid.transmit.text +model/vnd.vtu vtu +model/vrml wrl vrml +multipart/alternative +multipart/appledouble +multipart/byteranges +multipart/digest +multipart/encrypted +multipart/form-data +multipart/header-set +multipart/mixed +multipart/parallel +multipart/related +multipart/report +multipart/signed +multipart/voice-message +text/calendar ics ifb +text/css css +text/csv csv +text/directory +text/dns +text/enriched +text/html html htm +text/parityfec +text/plain txt text conf def list log in +text/prs.fallenstein.rst +text/prs.lines.tag dsc +text/red +text/rfc822-headers +text/richtext rtx +text/rtf +text/rtp-enc-aescm128 +text/rtx +text/sgml sgml sgm +text/t140 +text/tab-separated-values tsv +text/troff t tr roff man me ms +text/uri-list uri uris urls +text/vnd.abc +text/vnd.curl +text/vnd.dmclientscript +text/vnd.esmertec.theme-descriptor +text/vnd.fly fly +text/vnd.fmi.flexstor flx +text/vnd.in3d.3dml 3dml +text/vnd.in3d.spot spot +text/vnd.iptc.newsml +text/vnd.iptc.nitf +text/vnd.latex-z +text/vnd.motorola.reflex +text/vnd.ms-mediapackage +text/vnd.net2phone.commcenter.command +text/vnd.sun.j2me.app-descriptor jad +text/vnd.trolltech.linguist +text/vnd.wap.si +text/vnd.wap.sl +text/vnd.wap.wml wml +text/vnd.wap.wmlscript wmls +text/x-asm s asm +text/x-c c cc cxx cpp h hh dic +text/x-fortran f for f77 f90 +text/x-pascal p pas +text/x-java-source java +text/x-setext etx +text/x-uuencode uu +text/x-vcalendar vcs +text/x-vcard vcf +text/xml +text/xml-external-parsed-entity +video/3gpp 3gp +video/3gpp-tt +video/3gpp2 3g2 +video/bmpeg +video/bt656 +video/celb +video/dv +video/h261 h261 +video/h263 h263 +video/h263-1998 +video/h263-2000 +video/h264 h264 +video/jpeg jpgv +video/jpm jpm jpgm +video/mj2 mj2 mjp2 +video/mp1s +video/mp2p +video/mp2t +video/mp4 mp4 mp4v mpg4 +video/mp4v-es +video/mpeg mpeg mpg mpe m1v m2v +video/mpeg4-generic +video/mpv +video/nv +video/parityfec +video/pointer +video/quicktime qt mov +video/raw +video/rtp-enc-aescm128 +video/rtx +video/smpte292m +video/vc1 +video/vnd.dlna.mpeg-tts +video/vnd.fvt fvt +video/vnd.hns.video +video/vnd.motorola.video +video/vnd.motorola.videop +video/vnd.mpegurl mxu m4u +video/vnd.nokia.interleaved-multimedia +video/vnd.nokia.videovoip +video/vnd.objectvideo +video/vnd.sealed.mpeg1 +video/vnd.sealed.mpeg4 +video/vnd.sealed.swf +video/vnd.sealedmedia.softseal.mov +video/vnd.vivo viv +video/x-fli fli +video/x-ms-asf asf asx +video/x-ms-wm wm +video/x-ms-wmv wmv +video/x-ms-wmx wmx +video/x-ms-wvx wvx +video/x-msvideo avi +video/x-sgi-movie movie +x-conference/x-cooltalk ice diff --git a/conf/insideout/notify-voicemail.tpl b/conf/insideout/notify-voicemail.tpl new file mode 100644 index 0000000000..0b08dbe966 --- /dev/null +++ b/conf/insideout/notify-voicemail.tpl @@ -0,0 +1,42 @@ +From: "${voicemail_caller_id_name}" <${voicemail_caller_id_number}@${voicemail_domain}> +To: <${voicemail_notify_email}> +Subject: Voicemail from "${voicemail_caller_id_name}" <${voicemail_caller_id_number}> ${voicemail_message_len} +X-Priority: ${voicemail_priority} +X-Mailer: FreeSWITCH + +Content-Type: multipart/alternative; + boundary="000XXX000" + +--000XXX000 +Content-Type: text/plain; charset=ISO-8859-1; Format=Flowed +Content-Disposition: inline +Content-Transfer-Encoding: 7bit + +Created: ${voicemail_time} +From: "${voicemail_caller_id_name}" <${voicemail_caller_id_number}> +Duration: ${voicemail_message_len} +Account: ${voicemail_account}@${voicemail_domain} + +--000XXX000 +Content-Type: text/html; charset=ISO-8859-1 +Content-Disposition: inline +Content-Transfer-Encoding: 7bit + + + + +Voicemail from "${voicemail_caller_id_name}" <${voicemail_caller_id_number}> ${voicemail_message_len} + + + + + +Message From "${voicemail_caller_id_name}" ${voicemail_caller_id_number}
+
+Created: ${voicemail_time}
+Duration: ${voicemail_message_len}
+Account: ${voicemail_account}@${voicemail_domain}
+ + + +--000XXX000-- diff --git a/conf/insideout/openzap.conf b/conf/insideout/openzap.conf new file mode 100644 index 0000000000..d8a2f4b792 --- /dev/null +++ b/conf/insideout/openzap.conf @@ -0,0 +1,19 @@ +[span wanpipe] +name => OpenZAP +number => 1 +fxs-channel => 1:3-4 + +[span wanpipe] +fxo-channel => 1:1-2 + +[span zt] +name => OpenZAP +number => 2 +fxs-channel => 1 + +[span zt] +name => OpenZAP +number => 2 +fxo-channel => 3 + + diff --git a/conf/insideout/sip_profiles/external.xml b/conf/insideout/sip_profiles/external.xml new file mode 100644 index 0000000000..6f6045255d --- /dev/null +++ b/conf/insideout/sip_profiles/external.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/sip_profiles/external/example.xml b/conf/insideout/sip_profiles/external/example.xml new file mode 100644 index 0000000000..7ac8db1186 --- /dev/null +++ b/conf/insideout/sip_profiles/external/example.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/sip_profiles/internal-ipv6.xml b/conf/insideout/sip_profiles/internal-ipv6.xml new file mode 100644 index 0000000000..856ac4905d --- /dev/null +++ b/conf/insideout/sip_profiles/internal-ipv6.xml @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/sip_profiles/internal.xml b/conf/insideout/sip_profiles/internal.xml new file mode 100644 index 0000000000..a6010b2945 --- /dev/null +++ b/conf/insideout/sip_profiles/internal.xml @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/sip_profiles/internal/example.xml b/conf/insideout/sip_profiles/internal/example.xml new file mode 100644 index 0000000000..7ac8db1186 --- /dev/null +++ b/conf/insideout/sip_profiles/internal/example.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/tetris.ttml b/conf/insideout/tetris.ttml new file mode 100644 index 0000000000..2e33a5d69a --- /dev/null +++ b/conf/insideout/tetris.ttml @@ -0,0 +1,69 @@ +%(428,0,659,494) +%(214,0,494,415) +%(214,0,523,440) +%(214,0,587,494) +%(107,0,659,494) +%(107,0,587,494) +%(214,0,523,440) +%(214,0,494,415) +%(428,0,330,440) +%(214,0,330,440) +%(214,0,523,440) +%(428,0,659,523) +%(214,0,587,494) +%(214,0,523,440) +%(214,0,494,415) +%(214,0,494,440) +%(214,0,494,415) +%(214,0,523,440) +%(428,0,587,494) +%(428,0,659,523) +%(428,0,523,440) +%(428,0,330,440) +%(857,0,330,440) +%(214,0,0,0) +%(428,0,587,349) +%(214,0,698,440) +%(214,0,880,523) +%(107,0,880,523) +%(107,0,880,523) +%(214,0,784,494) +%(214,0,698,440) +%(642,0,659,392) +%(214,0,523,330) +%(214,0,659,392) +%(107,0,659,440) +%(107,0,659,392) +%(214,0,587,349) +%(214,0,523,330) +%(214,0,494,415) +%(214,0,494,330) +%(214,0,494,415) +%(214,0,523,440) +%(214,0,587,494) +%(214,0,587,415) +%(214,0,659,523) +%(214,0,659,415) +%(214,0,523,440) +%(214,0,523,330) +%(428,0,440,330) +%(428,0,440,330) +%(428,0,0,0) +%(857,0,330,262) +%(857,0,262,220) +%(857,0,294,247) +%(857,0,247,208) +%(857,0,262,220) +%(857,0,220,165) +%(857,0,208,165) +%(428,0,247,208) +%(428,0,0,0) +%(857,0,330,262) +%(857,0,262,220) +%(857,0,294,247) +%(857,0,208,165) +%(428,0,262,220) +%(428,0,330,262) +%(857,0,440,330) +%(857,0,415,294) +%(857,0,0,0) diff --git a/conf/insideout/tones.conf b/conf/insideout/tones.conf new file mode 100644 index 0000000000..8046578c68 --- /dev/null +++ b/conf/insideout/tones.conf @@ -0,0 +1,25 @@ +[us] +generate-dial => v=-7;%(1000,0,350,440) +detect-dial => 350,440 + +generate-ring => v=-7;%(2000,4000,440,480) +detect-ring => 440,480 + +generate-busy => v=-7;%(500,500,480,620) +detect-busy => 480,620 + +generate-attn => v=0;%(100,100,1400,2060,2450,2600) +detect-attn => 1400,2060,2450,2600 + +generate-callwaiting-sas => v=0;%(300,0,440) +detect-callwaiting-sas => 440 + +generate-callwaiting-cas => v=0;%(80,0,2750,2130) +detect-callwaiting-cas => 2750,2130 + +detect-fail1 => 913.8 +detect-fail2 => 1370.6 +detect-fail3 => 776.7 + + + diff --git a/conf/insideout/vars.xml b/conf/insideout/vars.xml new file mode 100644 index 0000000000..497d0d0c44 --- /dev/null +++ b/conf/insideout/vars.xml @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/insideout/voicemail.tpl b/conf/insideout/voicemail.tpl new file mode 100644 index 0000000000..aede2b8f08 --- /dev/null +++ b/conf/insideout/voicemail.tpl @@ -0,0 +1,42 @@ +From: "${voicemail_caller_id_name}" <${voicemail_caller_id_number}@${voicemail_domain}> +To: <${voicemail_email}> +Subject: Voicemail from "${voicemail_caller_id_name}" <${voicemail_caller_id_number}> ${voicemail_message_len} +X-Priority: ${voicemail_priority} +X-Mailer: FreeSWITCH + +Content-Type: multipart/alternative; + boundary="000XXX000" + +--000XXX000 +Content-Type: text/plain; charset=ISO-8859-1; Format=Flowed +Content-Disposition: inline +Content-Transfer-Encoding: 7bit + +Created: ${voicemail_time} +From: "${voicemail_caller_id_name}" <${voicemail_caller_id_number}> +Duration: ${voicemail_message_len} +Account: ${voicemail_account}@${voicemail_domain} + +--000XXX000 +Content-Type: text/html; charset=ISO-8859-1 +Content-Disposition: inline +Content-Transfer-Encoding: 7bit + + + + +Voicemail from "${voicemail_caller_id_name}" <${voicemail_caller_id_number}> ${voicemail_message_len} + + + + + +Message From "${voicemail_caller_id_name}" ${voicemail_caller_id_number}
+
+Created: ${voicemail_time}
+Duration: ${voicemail_message_len}
+Account: ${voicemail_account}@${voicemail_domain}
+ + + +--000XXX000-- diff --git a/conf/insideout/web-vm.tpl b/conf/insideout/web-vm.tpl new file mode 100644 index 0000000000..1c6563320b --- /dev/null +++ b/conf/insideout/web-vm.tpl @@ -0,0 +1,13 @@ +FreeSWITCH Voicemail + + + + + +
+Voicemail Messages +
+ + + +
diff --git a/conf/sbc/autoload_configs/acl.conf.xml b/conf/sbc/autoload_configs/acl.conf.xml new file mode 100644 index 0000000000..73f78a625f --- /dev/null +++ b/conf/sbc/autoload_configs/acl.conf.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/sbc/autoload_configs/cdr_csv.conf.xml b/conf/sbc/autoload_configs/cdr_csv.conf.xml new file mode 100644 index 0000000000..137f15ce45 --- /dev/null +++ b/conf/sbc/autoload_configs/cdr_csv.conf.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/conf/sbc/autoload_configs/console.conf.xml b/conf/sbc/autoload_configs/console.conf.xml new file mode 100644 index 0000000000..2d9e3e8de5 --- /dev/null +++ b/conf/sbc/autoload_configs/console.conf.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + diff --git a/conf/sbc/autoload_configs/enum.conf.xml b/conf/sbc/autoload_configs/enum.conf.xml new file mode 100644 index 0000000000..eb7a37de79 --- /dev/null +++ b/conf/sbc/autoload_configs/enum.conf.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/conf/sbc/autoload_configs/event_socket.conf.xml b/conf/sbc/autoload_configs/event_socket.conf.xml new file mode 100644 index 0000000000..98a2764d0f --- /dev/null +++ b/conf/sbc/autoload_configs/event_socket.conf.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/conf/sbc/autoload_configs/limit.conf.xml b/conf/sbc/autoload_configs/limit.conf.xml new file mode 100644 index 0000000000..26b0f8549a --- /dev/null +++ b/conf/sbc/autoload_configs/limit.conf.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/conf/sbc/autoload_configs/logfile.conf.xml b/conf/sbc/autoload_configs/logfile.conf.xml new file mode 100644 index 0000000000..1fbdbdc33c --- /dev/null +++ b/conf/sbc/autoload_configs/logfile.conf.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/conf/sbc/autoload_configs/modules.conf.xml b/conf/sbc/autoload_configs/modules.conf.xml new file mode 100644 index 0000000000..31b96dd27a --- /dev/null +++ b/conf/sbc/autoload_configs/modules.conf.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/sbc/autoload_configs/post_load_modules.conf.xml b/conf/sbc/autoload_configs/post_load_modules.conf.xml new file mode 100644 index 0000000000..8f4e132fa4 --- /dev/null +++ b/conf/sbc/autoload_configs/post_load_modules.conf.xml @@ -0,0 +1,4 @@ + + + + diff --git a/conf/sbc/autoload_configs/sofia.conf.xml b/conf/sbc/autoload_configs/sofia.conf.xml new file mode 100644 index 0000000000..24252d08ce --- /dev/null +++ b/conf/sbc/autoload_configs/sofia.conf.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/conf/sbc/autoload_configs/switch.conf.xml b/conf/sbc/autoload_configs/switch.conf.xml new file mode 100644 index 0000000000..09d1c07393 --- /dev/null +++ b/conf/sbc/autoload_configs/switch.conf.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/sbc/autoload_configs/syslog.conf.xml b/conf/sbc/autoload_configs/syslog.conf.xml new file mode 100644 index 0000000000..1070ba54b3 --- /dev/null +++ b/conf/sbc/autoload_configs/syslog.conf.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/conf/sbc/autoload_configs/timezones.conf.xml b/conf/sbc/autoload_configs/timezones.conf.xml new file mode 100644 index 0000000000..85c805ff25 --- /dev/null +++ b/conf/sbc/autoload_configs/timezones.conf.xml @@ -0,0 +1,551 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/sbc/autoload_configs/xml_cdr.conf.xml b/conf/sbc/autoload_configs/xml_cdr.conf.xml new file mode 100644 index 0000000000..7f635d64aa --- /dev/null +++ b/conf/sbc/autoload_configs/xml_cdr.conf.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/sbc/autoload_configs/xml_rpc.conf.xml b/conf/sbc/autoload_configs/xml_rpc.conf.xml new file mode 100644 index 0000000000..714a909907 --- /dev/null +++ b/conf/sbc/autoload_configs/xml_rpc.conf.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/conf/sbc/dialplan/default.xml b/conf/sbc/dialplan/default.xml new file mode 100644 index 0000000000..2280a041f3 --- /dev/null +++ b/conf/sbc/dialplan/default.xml @@ -0,0 +1,602 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;answer-after=0]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/sbc/dialplan/default/00_pizza_demo.xml b/conf/sbc/dialplan/default/00_pizza_demo.xml new file mode 100644 index 0000000000..e7fcca204a --- /dev/null +++ b/conf/sbc/dialplan/default/00_pizza_demo.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/conf/sbc/dialplan/default/01_example.com.xml b/conf/sbc/dialplan/default/01_example.com.xml new file mode 100644 index 0000000000..bd61cd2788 --- /dev/null +++ b/conf/sbc/dialplan/default/01_example.com.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/sbc/dialplan/default/99999_enum.xml b/conf/sbc/dialplan/default/99999_enum.xml new file mode 100644 index 0000000000..6fd2151859 --- /dev/null +++ b/conf/sbc/dialplan/default/99999_enum.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/conf/sbc/dialplan/features.xml b/conf/sbc/dialplan/features.xml new file mode 100644 index 0000000000..8a6626e596 --- /dev/null +++ b/conf/sbc/dialplan/features.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/sbc/dialplan/public.xml b/conf/sbc/dialplan/public.xml new file mode 100644 index 0000000000..03de309f38 --- /dev/null +++ b/conf/sbc/dialplan/public.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/sbc/dialplan/public/00_inbound_did.xml b/conf/sbc/dialplan/public/00_inbound_did.xml new file mode 100644 index 0000000000..d40b3ab2c9 --- /dev/null +++ b/conf/sbc/dialplan/public/00_inbound_did.xml @@ -0,0 +1,18 @@ + + + + + + + + + + diff --git a/conf/sbc/freeswitch.xml b/conf/sbc/freeswitch.xml new file mode 100644 index 0000000000..e449978c76 --- /dev/null +++ b/conf/sbc/freeswitch.xml @@ -0,0 +1,43 @@ + + + + + +
+ +
+ +
+ +
+ + + +
+ +
+ + +
+ + + +
+
+ + + diff --git a/conf/sbc/mime.types b/conf/sbc/mime.types new file mode 100644 index 0000000000..34d5fc9055 --- /dev/null +++ b/conf/sbc/mime.types @@ -0,0 +1,983 @@ +# This is a comment. I love comments. + +# This file controls what Internet media types are sent to the client for +# given file extension(s). Sending the correct media type to the client +# is important so they know how to handle the content of the file. +# Extra types can either be added here or by using an AddType directive +# in your config files. For more information about Internet media types, +# please read RFC 2045, 2046, 2047, 2048, and 2077. The Internet media type +# registry is at . + +# MIME type Extensions +application/activemessage +application/andrew-inset ez +application/applefile +application/atom+xml atom +application/atomcat+xml atomcat +application/atomicmail +application/atomsvc+xml atomsvc +application/auth-policy+xml +application/batch-smtp +application/beep+xml +application/cals-1840 +application/ccxml+xml ccxml +application/cellml+xml +application/cnrp+xml +application/commonground +application/conference-info+xml +application/cpl+xml +application/csta+xml +application/cstadata+xml +application/cybercash +application/davmount+xml davmount +application/dca-rft +application/dec-dx +application/dialog-info+xml +application/dicom +application/dns +application/dvcs +application/ecmascript ecma +application/edi-consent +application/edi-x12 +application/edifact +application/epp+xml +application/eshop +application/fastinfoset +application/fastsoap +application/fits +application/font-tdpfr pfr +application/h224 +application/http +application/hyperstudio stk +application/iges +application/im-iscomposing+xml +application/index +application/index.cmd +application/index.obj +application/index.response +application/index.vnd +application/iotp +application/ipp +application/isup +application/javascript js +application/json json +application/kpml-request+xml +application/kpml-response+xml +application/mac-binhex40 hqx +application/mac-compactpro cpt +application/macwriteii +application/marc mrc +application/mathematica ma nb mb +application/mathml+xml mathml +application/mbms-associated-procedure-description+xml +application/mbms-deregister+xml +application/mbms-envelope+xml +application/mbms-msk+xml +application/mbms-msk-response+xml +application/mbms-protection-description+xml +application/mbms-reception-report+xml +application/mbms-register+xml +application/mbms-register-response+xml +application/mbms-user-service-description+xml +application/mbox mbox +application/mediaservercontrol+xml mscml +application/mikey +application/mp4 mp4s +application/mpeg4-generic +application/mpeg4-iod +application/mpeg4-iod-xmt +application/msword doc dot +application/mxf mxf +application/nasdata +application/news-message-id +application/news-transmission +application/nss +application/ocsp-request +application/ocsp-response +application/octet-stream bin dms lha lzh class so iso dmg dist distz pkg bpk dump elc +application/oda oda +application/oebps-package+xml +application/ogg ogg +application/parityfec +application/pdf pdf +application/pgp-encrypted pgp +application/pgp-keys +application/pgp-signature asc sig +application/pics-rules prf +application/pidf+xml +application/pkcs10 p10 +application/pkcs7-mime p7m p7c +application/pkcs7-signature p7s +application/pkix-cert cer +application/pkix-crl crl +application/pkix-pkipath pkipath +application/pkixcmp pki +application/pls+xml pls +application/poc-settings+xml +application/postscript ai eps ps +application/prs.alvestrand.titrax-sheet +application/prs.cww cww +application/prs.nprend +application/prs.plucker +application/qsig +application/rdf+xml rdf +application/reginfo+xml rif +application/relax-ng-compact-syntax rnc +application/remote-printing +application/resource-lists+xml rl +application/riscos +application/rlmi+xml +application/rls-services+xml rs +application/rsd+xml rsd +application/rss+xml rss +application/rtf rtf +application/rtx +application/samlassertion+xml +application/samlmetadata+xml +application/sbml+xml sbml +application/sdp sdp +application/set-payment +application/set-payment-initiation setpay +application/set-registration +application/set-registration-initiation setreg +application/sgml +application/sgml-open-catalog +application/shf+xml shf +application/sieve +application/simple-filter+xml +application/simple-message-summary +application/simplesymbolcontainer +application/slate +application/smil +application/smil+xml smi smil +application/soap+fastinfoset +application/soap+xml +application/spirits-event+xml +application/srgs gram +application/srgs+xml grxml +application/ssml+xml ssml +application/timestamp-query +application/timestamp-reply +application/tve-trigger +application/vemmi +application/vividence.scriptfile +application/vnd.3gpp.bsf+xml +application/vnd.3gpp.pic-bw-large plb +application/vnd.3gpp.pic-bw-small psb +application/vnd.3gpp.pic-bw-var pvb +application/vnd.3gpp.sms +application/vnd.3gpp2.bcmcsinfo+xml +application/vnd.3gpp2.sms +application/vnd.3m.post-it-notes pwn +application/vnd.accpac.simply.aso aso +application/vnd.accpac.simply.imp imp +application/vnd.acucobol acu +application/vnd.acucorp atc acutc +application/vnd.adobe.xdp+xml xdp +application/vnd.adobe.xfdf xfdf +application/vnd.aether.imp +application/vnd.amiga.ami ami +application/vnd.anser-web-certificate-issue-initiation cii +application/vnd.anser-web-funds-transfer-initiation fti +application/vnd.antix.game-component atx +application/vnd.apple.installer+xml mpkg +application/vnd.audiograph aep +application/vnd.autopackage +application/vnd.avistar+xml +application/vnd.blueice.multipass mpm +application/vnd.bmi bmi +application/vnd.businessobjects rep +application/vnd.cab-jscript +application/vnd.canon-cpdl +application/vnd.canon-lips +application/vnd.cendio.thinlinc.clientconf +application/vnd.chemdraw+xml cdxml +application/vnd.chipnuts.karaoke-mmd mmd +application/vnd.cinderella cdy +application/vnd.cirpack.isdn-ext +application/vnd.claymore cla +application/vnd.clonk.c4group c4g c4d c4f c4p c4u +application/vnd.commerce-battelle +application/vnd.commonspace csp cst +application/vnd.contact.cmsg cdbcmsg +application/vnd.cosmocaller cmc +application/vnd.crick.clicker clkx +application/vnd.crick.clicker.keyboard clkk +application/vnd.crick.clicker.palette clkp +application/vnd.crick.clicker.template clkt +application/vnd.crick.clicker.wordbank clkw +application/vnd.criticaltools.wbs+xml wbs +application/vnd.ctc-posml pml +application/vnd.cups-pdf +application/vnd.cups-postscript +application/vnd.cups-ppd ppd +application/vnd.cups-raster +application/vnd.cups-raw +application/vnd.curl curl +application/vnd.cybank +application/vnd.data-vision.rdz rdz +application/vnd.denovo.fcselayout-link fe_launch +application/vnd.dna dna +application/vnd.dolby.mlp mlp +application/vnd.dpgraph dpg +application/vnd.dreamfactory dfac +application/vnd.dvb.esgcontainer +application/vnd.dvb.ipdcesgaccess +application/vnd.dxr +application/vnd.ecdis-update +application/vnd.ecowin.chart mag +application/vnd.ecowin.filerequest +application/vnd.ecowin.fileupdate +application/vnd.ecowin.series +application/vnd.ecowin.seriesrequest +application/vnd.ecowin.seriesupdate +application/vnd.enliven nml +application/vnd.epson.esf esf +application/vnd.epson.msf msf +application/vnd.epson.quickanime qam +application/vnd.epson.salt slt +application/vnd.epson.ssf ssf +application/vnd.ericsson.quickcall +application/vnd.eszigno3+xml es3 et3 +application/vnd.eudora.data +application/vnd.ezpix-album ez2 +application/vnd.ezpix-package ez3 +application/vnd.fdf fdf +application/vnd.ffsns +application/vnd.fints +application/vnd.flographit gph +application/vnd.fluxtime.clip ftc +application/vnd.framemaker fm frame maker +application/vnd.frogans.fnc fnc +application/vnd.frogans.ltf ltf +application/vnd.fsc.weblaunch fsc +application/vnd.fujitsu.oasys oas +application/vnd.fujitsu.oasys2 oa2 +application/vnd.fujitsu.oasys3 oa3 +application/vnd.fujitsu.oasysgp fg5 +application/vnd.fujitsu.oasysprs bh2 +application/vnd.fujixerox.art-ex +application/vnd.fujixerox.art4 +application/vnd.fujixerox.hbpl +application/vnd.fujixerox.ddd ddd +application/vnd.fujixerox.docuworks xdw +application/vnd.fujixerox.docuworks.binder xbd +application/vnd.fut-misnet +application/vnd.fuzzysheet fzs +application/vnd.genomatix.tuxedo txd +application/vnd.google-earth.kml+xml kml +application/vnd.google-earth.kmz kmz +application/vnd.grafeq gqf gqs +application/vnd.gridmp +application/vnd.groove-account gac +application/vnd.groove-help ghf +application/vnd.groove-identity-message gim +application/vnd.groove-injector grv +application/vnd.groove-tool-message gtm +application/vnd.groove-tool-template tpl +application/vnd.groove-vcard vcg +application/vnd.handheld-entertainment+xml zmm +application/vnd.hbci hbci +application/vnd.hcl-bireports +application/vnd.hhe.lesson-player les +application/vnd.hp-hpgl hpgl +application/vnd.hp-hpid hpid +application/vnd.hp-hps hps +application/vnd.hp-jlyt jlt +application/vnd.hp-pcl pcl +application/vnd.hp-pclxl pclxl +application/vnd.httphone +application/vnd.hzn-3d-crossword x3d +application/vnd.ibm.afplinedata +application/vnd.ibm.electronic-media +application/vnd.ibm.minipay mpy +application/vnd.ibm.modcap afp listafp list3820 +application/vnd.ibm.rights-management irm +application/vnd.ibm.secure-container sc +application/vnd.igloader igl +application/vnd.immervision-ivp ivp +application/vnd.immervision-ivu ivu +application/vnd.informedcontrol.rms+xml +application/vnd.intercon.formnet xpw xpx +application/vnd.intertrust.digibox +application/vnd.intertrust.nncp +application/vnd.intu.qbo qbo +application/vnd.intu.qfx qfx +application/vnd.ipunplugged.rcprofile rcprofile +application/vnd.irepository.package+xml irp +application/vnd.is-xpr xpr +application/vnd.jam jam +application/vnd.japannet-directory-service +application/vnd.japannet-jpnstore-wakeup +application/vnd.japannet-payment-wakeup +application/vnd.japannet-registration +application/vnd.japannet-registration-wakeup +application/vnd.japannet-setstore-wakeup +application/vnd.japannet-verification +application/vnd.japannet-verification-wakeup +application/vnd.jcp.javame.midlet-rms rms +application/vnd.jisp jisp +application/vnd.kahootz ktz ktr +application/vnd.kde.karbon karbon +application/vnd.kde.kchart chrt +application/vnd.kde.kformula kfo +application/vnd.kde.kivio flw +application/vnd.kde.kontour kon +application/vnd.kde.kpresenter kpr kpt +application/vnd.kde.kspread ksp +application/vnd.kde.kword kwd kwt +application/vnd.kenameaapp htke +application/vnd.kidspiration kia +application/vnd.kinar kne knp +application/vnd.koan skp skd skt skm +application/vnd.liberty-request+xml +application/vnd.llamagraphics.life-balance.desktop lbd +application/vnd.llamagraphics.life-balance.exchange+xml lbe +application/vnd.lotus-1-2-3 123 +application/vnd.lotus-approach apr +application/vnd.lotus-freelance pre +application/vnd.lotus-notes nsf +application/vnd.lotus-organizer org +application/vnd.lotus-screencam scm +application/vnd.lotus-wordpro lwp +application/vnd.macports.portpkg portpkg +application/vnd.marlin.drm.actiontoken+xml +application/vnd.marlin.drm.conftoken+xml +application/vnd.marlin.drm.mdcf +application/vnd.mcd mcd +application/vnd.medcalcdata mc1 +application/vnd.mediastation.cdkey cdkey +application/vnd.meridian-slingshot +application/vnd.mfer mwf +application/vnd.mfmp mfm +application/vnd.micrografx.flo flo +application/vnd.micrografx.igx igx +application/vnd.mif mif +application/vnd.minisoft-hp3000-save +application/vnd.mitsubishi.misty-guard.trustweb +application/vnd.mobius.daf daf +application/vnd.mobius.dis dis +application/vnd.mobius.mbk mbk +application/vnd.mobius.mqy mqy +application/vnd.mobius.msl msl +application/vnd.mobius.plc plc +application/vnd.mobius.txf txf +application/vnd.mophun.application mpn +application/vnd.mophun.certificate mpc +application/vnd.motorola.flexsuite +application/vnd.motorola.flexsuite.adsi +application/vnd.motorola.flexsuite.fis +application/vnd.motorola.flexsuite.gotap +application/vnd.motorola.flexsuite.kmr +application/vnd.motorola.flexsuite.ttc +application/vnd.motorola.flexsuite.wem +application/vnd.mozilla.xul+xml xul +application/vnd.ms-artgalry cil +application/vnd.ms-asf asf +application/vnd.ms-cab-compressed cab +application/vnd.ms-excel xls xlm xla xlc xlt xlw +application/vnd.ms-fontobject eot +application/vnd.ms-htmlhelp chm +application/vnd.ms-ims ims +application/vnd.ms-lrm lrm +application/vnd.ms-playready.initiator+xml +application/vnd.ms-powerpoint ppt pps pot +application/vnd.ms-project mpp mpt +application/vnd.ms-tnef +application/vnd.ms-wmdrm.lic-chlg-req +application/vnd.ms-wmdrm.lic-resp +application/vnd.ms-wmdrm.meter-chlg-req +application/vnd.ms-wmdrm.meter-resp +application/vnd.ms-works wps wks wcm wdb +application/vnd.ms-wpl wpl +application/vnd.ms-xpsdocument xps +application/vnd.mseq mseq +application/vnd.msign +application/vnd.music-niff +application/vnd.musician mus +application/vnd.ncd.control +application/vnd.nervana +application/vnd.netfpx +application/vnd.neurolanguage.nlu nlu +application/vnd.noblenet-directory nnd +application/vnd.noblenet-sealer nns +application/vnd.noblenet-web nnw +application/vnd.nokia.catalogs +application/vnd.nokia.conml+wbxml +application/vnd.nokia.conml+xml +application/vnd.nokia.isds-radio-presets +application/vnd.nokia.iptv.config+xml +application/vnd.nokia.landmark+wbxml +application/vnd.nokia.landmark+xml +application/vnd.nokia.landmarkcollection+xml +application/vnd.nokia.n-gage.ac+xml +application/vnd.nokia.n-gage.data ngdat +application/vnd.nokia.n-gage.symbian.install n-gage +application/vnd.nokia.ncd +application/vnd.nokia.pcd+wbxml +application/vnd.nokia.pcd+xml +application/vnd.nokia.radio-preset rpst +application/vnd.nokia.radio-presets rpss +application/vnd.novadigm.edm edm +application/vnd.novadigm.edx edx +application/vnd.novadigm.ext ext +application/vnd.oasis.opendocument.chart odc +application/vnd.oasis.opendocument.chart-template otc +application/vnd.oasis.opendocument.formula odf +application/vnd.oasis.opendocument.formula-template otf +application/vnd.oasis.opendocument.graphics odg +application/vnd.oasis.opendocument.graphics-template otg +application/vnd.oasis.opendocument.image odi +application/vnd.oasis.opendocument.image-template oti +application/vnd.oasis.opendocument.presentation odp +application/vnd.oasis.opendocument.presentation-template otp +application/vnd.oasis.opendocument.spreadsheet ods +application/vnd.oasis.opendocument.spreadsheet-template ots +application/vnd.oasis.opendocument.text odt +application/vnd.oasis.opendocument.text-master otm +application/vnd.oasis.opendocument.text-template ott +application/vnd.oasis.opendocument.text-web oth +application/vnd.obn +application/vnd.olpc-sugar xo +application/vnd.oma-scws-config +application/vnd.oma-scws-http-request +application/vnd.oma-scws-http-response +application/vnd.oma.bcast.associated-procedure-parameter+xml +application/vnd.oma.bcast.drm-trigger+xml +application/vnd.oma.bcast.imd+xml +application/vnd.oma.bcast.notification+xml +application/vnd.oma.bcast.sgboot +application/vnd.oma.bcast.sgdd+xml +application/vnd.oma.bcast.sgdu +application/vnd.oma.bcast.simple-symbol-container +application/vnd.oma.bcast.smartcard-trigger+xml +application/vnd.oma.bcast.sprov+xml +application/vnd.oma.dd2+xml dd2 +application/vnd.oma.drm.risd+xml +application/vnd.oma.group-usage-list+xml +application/vnd.oma.poc.groups+xml +application/vnd.oma.xcap-directory+xml +application/vnd.omads-email+xml +application/vnd.omads-file+xml +application/vnd.omads-folder+xml +application/vnd.omaloc-supl-init +application/vnd.openofficeorg.extension oxt +application/vnd.osa.netdeploy +application/vnd.osgi.dp dp +application/vnd.otps.ct-kip+xml +application/vnd.palm prc pdb pqa oprc +application/vnd.paos.xml +application/vnd.pg.format str +application/vnd.pg.osasli ei6 +application/vnd.piaccess.application-licence +application/vnd.picsel efif +application/vnd.poc.group-advertisement+xml +application/vnd.pocketlearn plf +application/vnd.powerbuilder6 pbd +application/vnd.powerbuilder6-s +application/vnd.powerbuilder7 +application/vnd.powerbuilder7-s +application/vnd.powerbuilder75 +application/vnd.powerbuilder75-s +application/vnd.preminet +application/vnd.previewsystems.box box +application/vnd.proteus.magazine mgz +application/vnd.publishare-delta-tree qps +application/vnd.pvi.ptid1 ptid +application/vnd.pwg-multiplexed +application/vnd.pwg-xhtml-print+xml +application/vnd.qualcomm.brew-app-res +application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb +application/vnd.rapid +application/vnd.recordare.musicxml mxl +application/vnd.recordare.musicxml+xml +application/vnd.renlearn.rlprint +application/vnd.rn-realmedia rm +application/vnd.ruckus.download +application/vnd.s3sms +application/vnd.scribus +application/vnd.sealed.3df +application/vnd.sealed.csf +application/vnd.sealed.doc +application/vnd.sealed.eml +application/vnd.sealed.mht +application/vnd.sealed.net +application/vnd.sealed.ppt +application/vnd.sealed.tiff +application/vnd.sealed.xls +application/vnd.sealedmedia.softseal.html +application/vnd.sealedmedia.softseal.pdf +application/vnd.seemail see +application/vnd.sema sema +application/vnd.semd semd +application/vnd.semf semf +application/vnd.shana.informed.formdata ifm +application/vnd.shana.informed.formtemplate itp +application/vnd.shana.informed.interchange iif +application/vnd.shana.informed.package ipk +application/vnd.simtech-mindmapper twd twds +application/vnd.smaf mmf +application/vnd.solent.sdkm+xml sdkm sdkd +application/vnd.spotfire.dxp dxp +application/vnd.spotfire.sfs sfs +application/vnd.sss-cod +application/vnd.sss-dtf +application/vnd.sss-ntf +application/vnd.street-stream +application/vnd.sun.wadl+xml +application/vnd.sus-calendar sus susp +application/vnd.svd svd +application/vnd.swiftview-ics +application/vnd.syncml+xml xsm +application/vnd.syncml.dm+wbxml bdm +application/vnd.syncml.dm+xml xdm +application/vnd.syncml.ds.notification +application/vnd.tao.intent-module-archive tao +application/vnd.tmobile-livetv tmo +application/vnd.trid.tpt tpt +application/vnd.triscape.mxs mxs +application/vnd.trueapp tra +application/vnd.truedoc +application/vnd.ufdl ufd ufdl +application/vnd.uiq.theme utz +application/vnd.umajin umj +application/vnd.unity unityweb +application/vnd.uoml+xml uoml +application/vnd.uplanet.alert +application/vnd.uplanet.alert-wbxml +application/vnd.uplanet.bearer-choice +application/vnd.uplanet.bearer-choice-wbxml +application/vnd.uplanet.cacheop +application/vnd.uplanet.cacheop-wbxml +application/vnd.uplanet.channel +application/vnd.uplanet.channel-wbxml +application/vnd.uplanet.list +application/vnd.uplanet.list-wbxml +application/vnd.uplanet.listcmd +application/vnd.uplanet.listcmd-wbxml +application/vnd.uplanet.signal +application/vnd.vcx vcx +application/vnd.vd-study +application/vnd.vectorworks +application/vnd.vidsoft.vidconference +application/vnd.visio vsd vst vss vsw +application/vnd.visionary vis +application/vnd.vividence.scriptfile +application/vnd.vsf vsf +application/vnd.wap.sic +application/vnd.wap.slc +application/vnd.wap.wbxml wbxml +application/vnd.wap.wmlc wmlc +application/vnd.wap.wmlscriptc wmlsc +application/vnd.webturbo wtb +application/vnd.wfa.wsc +application/vnd.wordperfect wpd +application/vnd.wqd wqd +application/vnd.wrq-hp3000-labelled +application/vnd.wt.stf stf +application/vnd.wv.csp+wbxml +application/vnd.wv.csp+xml +application/vnd.wv.ssp+xml +application/vnd.xara xar +application/vnd.xfdl xfdl +application/vnd.xmpie.cpkg +application/vnd.xmpie.dpkg +application/vnd.xmpie.plan +application/vnd.xmpie.ppkg +application/vnd.xmpie.xlim +application/vnd.yamaha.hv-dic hvd +application/vnd.yamaha.hv-script hvs +application/vnd.yamaha.hv-voice hvp +application/vnd.yamaha.smaf-audio saf +application/vnd.yamaha.smaf-phrase spf +application/vnd.yellowriver-custom-menu cmp +application/vnd.zzazz.deck+xml zaz +application/voicexml+xml vxml +application/watcherinfo+xml +application/whoispp-query +application/whoispp-response +application/winhlp hlp +application/wita +application/wordperfect5.1 +application/wsdl+xml wsdl +application/wspolicy+xml wspolicy +application/x-ace-compressed ace +application/x-bcpio bcpio +application/x-bittorrent torrent +application/x-bzip bz +application/x-bzip2 bz2 boz +application/x-cdlink vcd +application/x-chat chat +application/x-chess-pgn pgn +application/x-compress +application/x-cpio cpio +application/x-csh csh +application/x-director dcr dir dxr fgd +application/x-dvi dvi +application/x-futuresplash spl +application/x-gtar gtar +application/x-gzip +application/x-hdf hdf +application/x-latex latex +application/x-ms-wmd wmd +application/x-ms-wmz wmz +application/x-msaccess mdb +application/x-msbinder obd +application/x-mscardfile crd +application/x-msclip clp +application/x-msdownload exe dll com bat msi +application/x-msmediaview mvb m13 m14 +application/x-msmetafile wmf +application/x-msmoney mny +application/x-mspublisher pub +application/x-msschedule scd +application/x-msterminal trm +application/x-mswrite wri +application/x-netcdf nc cdf +application/x-pkcs12 p12 pfx +application/x-pkcs7-certificates p7b spc +application/x-pkcs7-certreqresp p7r +application/x-rar-compressed rar +application/x-sh sh +application/x-shar shar +application/x-shockwave-flash swf +application/x-stuffit sit +application/x-stuffitx sitx +application/x-sv4cpio sv4cpio +application/x-sv4crc sv4crc +application/x-tar tar +application/x-tcl tcl +application/x-tex tex +application/x-texinfo texinfo texi +application/x-ustar ustar +application/x-wais-source src +application/x-x509-ca-cert der crt +application/x400-bp +application/xcap-att+xml +application/xcap-caps+xml +application/xcap-el+xml +application/xcap-error+xml +application/xcap-ns+xml +application/xenc+xml xenc +application/xhtml+xml xhtml xht +application/xml xml xsl +application/xml-dtd dtd +application/xml-external-parsed-entity +application/xmpp+xml +application/xop+xml xop +application/xslt+xml xslt +application/xspf+xml xspf +application/xv+xml mxml xhvml xvml xvm +application/zip zip +audio/32kadpcm +audio/3gpp +audio/3gpp2 +audio/ac3 +audio/amr +audio/amr-wb +audio/amr-wb+ +audio/asc +audio/basic au snd +audio/bv16 +audio/bv32 +audio/clearmode +audio/cn +audio/dat12 +audio/dls +audio/dsr-es201108 +audio/dsr-es202050 +audio/dsr-es202211 +audio/dsr-es202212 +audio/dvi4 +audio/eac3 +audio/evrc +audio/evrc-qcp +audio/evrc0 +audio/evrc1 +audio/evrcb +audio/evrcb0 +audio/evrcb1 +audio/g722 +audio/g7221 +audio/g723 +audio/g726-16 +audio/g726-24 +audio/g726-32 +audio/g726-40 +audio/g728 +audio/g729 +audio/g7291 +audio/g729d +audio/g729e +audio/gsm +audio/gsm-efr +audio/ilbc +audio/l16 +audio/l20 +audio/l24 +audio/l8 +audio/lpc +audio/midi mid midi kar rmi +audio/mobile-xmf +audio/mp4 mp4a +audio/mp4a-latm +audio/mpa +audio/mpa-robust +audio/mpeg mpga mp2 mp2a mp3 m2a m3a +audio/mpeg4-generic +audio/parityfec +audio/pcma +audio/pcmu +audio/prs.sid +audio/qcelp +audio/red +audio/rtp-enc-aescm128 +audio/rtp-midi +audio/rtx +audio/smv +audio/smv0 +audio/smv-qcp +audio/sp-midi +audio/t140c +audio/t38 +audio/telephone-event +audio/tone +audio/vdvi +audio/vmr-wb +audio/vnd.3gpp.iufp +audio/vnd.4sb +audio/vnd.audiokoz +audio/vnd.celp +audio/vnd.cisco.nse +audio/vnd.cmles.radio-events +audio/vnd.cns.anp1 +audio/vnd.cns.inf1 +audio/vnd.digital-winds eol +audio/vnd.dlna.adts +audio/vnd.dolby.mlp +audio/vnd.everad.plj +audio/vnd.hns.audio +audio/vnd.lucent.voice lvp +audio/vnd.nokia.mobile-xmf +audio/vnd.nortel.vbk +audio/vnd.nuera.ecelp4800 ecelp4800 +audio/vnd.nuera.ecelp7470 ecelp7470 +audio/vnd.nuera.ecelp9600 ecelp9600 +audio/vnd.octel.sbc +audio/vnd.qcelp +audio/vnd.rhetorex.32kadpcm +audio/vnd.sealedmedia.softseal.mpeg +audio/vnd.vmx.cvsd +audio/wav wav +audio/x-aiff aif aiff aifc +audio/x-mpegurl m3u +audio/x-ms-wax wax +audio/x-ms-wma wma +audio/x-pn-realaudio ram ra +audio/x-pn-realaudio-plugin rmp +audio/x-wav wav +chemical/x-cdx cdx +chemical/x-cif cif +chemical/x-cmdf cmdf +chemical/x-cml cml +chemical/x-csml csml +chemical/x-pdb pdb +chemical/x-xyz xyz +image/bmp bmp +image/cgm cgm +image/fits +image/g3fax g3 +image/gif gif +image/ief ief +image/jp2 +image/jpeg jpeg jpg jpe +image/jpm +image/jpx +image/naplps +image/png png +image/prs.btif btif +image/prs.pti +image/svg+xml svg svgz +image/t38 +image/tiff tiff tif +image/tiff-fx +image/vnd.adobe.photoshop psd +image/vnd.cns.inf2 +image/vnd.djvu djvu djv +image/vnd.dwg dwg +image/vnd.dxf dxf +image/vnd.fastbidsheet fbs +image/vnd.fpx fpx +image/vnd.fst fst +image/vnd.fujixerox.edmics-mmr mmr +image/vnd.fujixerox.edmics-rlc rlc +image/vnd.globalgraphics.pgb +image/vnd.microsoft.icon ico +image/vnd.mix +image/vnd.ms-modi mdi +image/vnd.net-fpx npx +image/vnd.sealed.png +image/vnd.sealedmedia.softseal.gif +image/vnd.sealedmedia.softseal.jpg +image/vnd.svf +image/vnd.wap.wbmp wbmp +image/vnd.xiff xif +image/x-cmu-raster ras +image/x-cmx cmx +image/x-icon +image/x-pcx pcx +image/x-pict pic pct +image/x-portable-anymap pnm +image/x-portable-bitmap pbm +image/x-portable-graymap pgm +image/x-portable-pixmap ppm +image/x-rgb rgb +image/x-xbitmap xbm +image/x-xpixmap xpm +image/x-xwindowdump xwd +message/cpim +message/delivery-status +message/disposition-notification +message/external-body +message/http +message/news +message/partial +message/rfc822 eml mime +message/s-http +message/sip +message/sipfrag +message/tracking-status +model/iges igs iges +model/mesh msh mesh silo +model/vnd.dwf dwf +model/vnd.flatland.3dml +model/vnd.gdl gdl +model/vnd.gs.gdl +model/vnd.gtw gtw +model/vnd.moml+xml +model/vnd.mts mts +model/vnd.parasolid.transmit.binary +model/vnd.parasolid.transmit.text +model/vnd.vtu vtu +model/vrml wrl vrml +multipart/alternative +multipart/appledouble +multipart/byteranges +multipart/digest +multipart/encrypted +multipart/form-data +multipart/header-set +multipart/mixed +multipart/parallel +multipart/related +multipart/report +multipart/signed +multipart/voice-message +text/calendar ics ifb +text/css css +text/csv csv +text/directory +text/dns +text/enriched +text/html html htm +text/parityfec +text/plain txt text conf def list log in +text/prs.fallenstein.rst +text/prs.lines.tag dsc +text/red +text/rfc822-headers +text/richtext rtx +text/rtf +text/rtp-enc-aescm128 +text/rtx +text/sgml sgml sgm +text/t140 +text/tab-separated-values tsv +text/troff t tr roff man me ms +text/uri-list uri uris urls +text/vnd.abc +text/vnd.curl +text/vnd.dmclientscript +text/vnd.esmertec.theme-descriptor +text/vnd.fly fly +text/vnd.fmi.flexstor flx +text/vnd.in3d.3dml 3dml +text/vnd.in3d.spot spot +text/vnd.iptc.newsml +text/vnd.iptc.nitf +text/vnd.latex-z +text/vnd.motorola.reflex +text/vnd.ms-mediapackage +text/vnd.net2phone.commcenter.command +text/vnd.sun.j2me.app-descriptor jad +text/vnd.trolltech.linguist +text/vnd.wap.si +text/vnd.wap.sl +text/vnd.wap.wml wml +text/vnd.wap.wmlscript wmls +text/x-asm s asm +text/x-c c cc cxx cpp h hh dic +text/x-fortran f for f77 f90 +text/x-pascal p pas +text/x-java-source java +text/x-setext etx +text/x-uuencode uu +text/x-vcalendar vcs +text/x-vcard vcf +text/xml +text/xml-external-parsed-entity +video/3gpp 3gp +video/3gpp-tt +video/3gpp2 3g2 +video/bmpeg +video/bt656 +video/celb +video/dv +video/h261 h261 +video/h263 h263 +video/h263-1998 +video/h263-2000 +video/h264 h264 +video/jpeg jpgv +video/jpm jpm jpgm +video/mj2 mj2 mjp2 +video/mp1s +video/mp2p +video/mp2t +video/mp4 mp4 mp4v mpg4 +video/mp4v-es +video/mpeg mpeg mpg mpe m1v m2v +video/mpeg4-generic +video/mpv +video/nv +video/parityfec +video/pointer +video/quicktime qt mov +video/raw +video/rtp-enc-aescm128 +video/rtx +video/smpte292m +video/vc1 +video/vnd.dlna.mpeg-tts +video/vnd.fvt fvt +video/vnd.hns.video +video/vnd.motorola.video +video/vnd.motorola.videop +video/vnd.mpegurl mxu m4u +video/vnd.nokia.interleaved-multimedia +video/vnd.nokia.videovoip +video/vnd.objectvideo +video/vnd.sealed.mpeg1 +video/vnd.sealed.mpeg4 +video/vnd.sealed.swf +video/vnd.sealedmedia.softseal.mov +video/vnd.vivo viv +video/x-fli fli +video/x-ms-asf asf asx +video/x-ms-wm wm +video/x-ms-wmv wmv +video/x-ms-wmx wmx +video/x-ms-wvx wvx +video/x-msvideo avi +video/x-sgi-movie movie +x-conference/x-cooltalk ice diff --git a/conf/sbc/sbc_profiles/external.xml b/conf/sbc/sbc_profiles/external.xml new file mode 100644 index 0000000000..d16813960f --- /dev/null +++ b/conf/sbc/sbc_profiles/external.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/sbc/sbc_profiles/external/example.xml b/conf/sbc/sbc_profiles/external/example.xml new file mode 100644 index 0000000000..7ac8db1186 --- /dev/null +++ b/conf/sbc/sbc_profiles/external/example.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/sbc/sbc_profiles/internal-ipv6.xml b/conf/sbc/sbc_profiles/internal-ipv6.xml new file mode 100644 index 0000000000..856ac4905d --- /dev/null +++ b/conf/sbc/sbc_profiles/internal-ipv6.xml @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/sbc/sbc_profiles/internal.xml b/conf/sbc/sbc_profiles/internal.xml new file mode 100644 index 0000000000..d06e3a76cd --- /dev/null +++ b/conf/sbc/sbc_profiles/internal.xml @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/sbc/sbc_profiles/internal/example.xml b/conf/sbc/sbc_profiles/internal/example.xml new file mode 100644 index 0000000000..7ac8db1186 --- /dev/null +++ b/conf/sbc/sbc_profiles/internal/example.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/sbc/vars.xml b/conf/sbc/vars.xml new file mode 100644 index 0000000000..0fbcda17b8 --- /dev/null +++ b/conf/sbc/vars.xml @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/softphone/accounts/example.xml b/conf/softphone/accounts/example.xml new file mode 100644 index 0000000000..7ac8db1186 --- /dev/null +++ b/conf/softphone/accounts/example.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/softphone/freeswitch.xml b/conf/softphone/freeswitch.xml new file mode 100644 index 0000000000..00a2bc31cb --- /dev/null +++ b/conf/softphone/freeswitch.xml @@ -0,0 +1,281 @@ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + From cac6c262bb153f4800d9bbf4d2a5ae919b2e1d68 Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Fri, 16 Mar 2012 03:58:01 +0000 Subject: [PATCH 201/292] conf: add config files to module directories The idea here is that the config files in the module directories will serve as the canonical documentation of all module configuration options. --- .../autoload_configs/abstraction.conf.xml | 5 + .../conf/autoload_configs/blacklist.conf.xml | 11 + .../conf/autoload_configs/callcenter.conf.xml | 38 ++ .../conf/autoload_configs/cidlookup.conf.xml | 33 ++ .../conf/autoload_configs/conference.conf.xml | 209 ++++++++++ .../conf/dialplan/conference_dialplan.xml | 31 ++ .../mod_db/conf/autoload_configs/db.conf.xml | 5 + .../autoload_configs/distributor.conf.xml | 10 + .../conf/dialplan/distributor.xml | 8 + .../conf/autoload_configs/easyroute.conf.xml | 28 ++ .../mod_easyroute/conf/dialplan/easyroute.xml | 27 ++ .../conf/autoload_configs/enum.conf.xml | 13 + .../mod_enum/conf/dialplan/99999_enum.xml | 8 + .../conf/autoload_configs/fifo.conf.xml | 10 + .../mod_fifo/conf/dialplan/fifo.xml | 19 + .../conf/autoload_configs/hash.conf.xml | 6 + .../mod_hash/conf/dialplan/hash.xml | 7 + .../autoload_configs}/httapi.conf.xml | 0 .../mod_httapi/{ => docs}/mod_httapi_doc.txt | 0 .../conf/autoload_configs/http_cache.conf.xml | 8 + .../conf/dialplan/http_cache.xml | 7 + .../mod_ladspa/conf/dialplan/00_ladspa.xml | 77 ++++ src/mod/applications/mod_ladspa/docs/README | 4 + .../conf/autoload_configs/lcr.conf.xml | 89 ++++ .../mod_lcr/conf/dialplan/lcr.xml | 8 + .../conf/autoload_configs/limit.conf.xml | 5 + .../mod_limit/conf/dialplan/limit.xml | 14 + .../conf/autoload_configs/memcache.conf.xml | 6 + .../mod_memcache/conf/dialplan/memcache.xml | 9 + .../conf/autoload_configs/mongo.conf.xml | 20 + .../conf/autoload_configs/nibblebill.conf.xml | 50 +++ .../conf/dialplan/nibblebill.xml | 27 ++ .../applications/mod_osp/conf/osp.conf.xml | 53 +++ .../conf/autoload_configs/redis.conf.xml | 7 + .../conf/autoload_configs/rss.conf.xml | 7 + .../mod_rss/conf/dialplan/rss.xml | 7 + src/mod/applications/mod_rss/script/news.js | 12 + .../mod_snom/conf/dialplan/snom_demo.xml | 16 + .../conf/autoload_configs/spandsp.conf.xml | 108 +++++ .../applications/mod_spandsp/conf/config.FS0 | 78 ++++ .../mod_spandsp/conf/dialplan/spandsp.xml | 26 ++ .../conf/dialplan/valet_parking.xml | 24 ++ .../mod_vmd/conf/dialplan/vmd.xml | 12 + src/mod/applications/mod_vmd/scripts/vmd.js | 27 ++ src/mod/applications/mod_vmd/scripts/vmd.lua | 17 + .../conf/autoload_configs/voicemail.conf.xml | 70 ++++ .../mod_voicemail/conf/dialplan/voicemail.xml | 20 + .../mod_voicemail/conf/notify-voicemail.tpl | 44 ++ .../mod_voicemail/conf/voicemail.tpl | 44 ++ .../autoload_configs/voicemail_ivr.conf.xml | 208 ++++++++++ .../mod_cepstral/conf/cepstral.conf.xml | 12 + .../conf/extensions.conf | 21 + .../conf/autoload_configs/alsa.conf.xml | 12 + .../conf/autoload_configs/portaudio.conf.xml | 218 ++++++++++ .../conf/autoload_configs/rtmp.conf.xml | 17 + .../conf/autoload_configs/skinny.conf.xml | 6 + .../conf/dialplan/skinny-patterns.xml | 30 ++ .../conf/dialplan/skinny-patterns/20-Demo.xml | 8 + .../skinny-patterns/20-Local_extension.xml | 13 + .../dialplan/skinny-patterns/90-External.xml | 8 + .../skinny-patterns/99-Default_Drop.xml | 9 + .../conf/directory/default/skinny-example.xml | 35 ++ .../conf/skinny_profiles/internal.xml | 37 ++ .../mod_sofia/conf/sip_profiles/external.xml | 95 +++++ .../conf/sip_profiles/external/example.xml | 38 ++ .../conf/sip_profiles/internal-ipv6.xml | 130 ++++++ .../mod_sofia/conf/sip_profiles/internal.xml | 385 ++++++++++++++++++ .../conf/sip_profiles/internal/example.xml | 37 ++ .../conf/autoload_configs/cdr_csv.conf.xml | 22 + .../autoload_configs/cdr_mongodb.conf.xml | 13 + .../conf/autoload_configs/cdr_pg_csv.conf.xml | 40 ++ .../mod_cdr_pg_csv/{ => scripts}/create.sql | 0 .../conf/autoload_configs/cdr_sqlite.conf.xml | 18 + .../autoload_configs/erlang_event.conf.xml | 23 ++ .../autoload_configs/event_multicast.conf.xml | 14 + .../autoload_configs/event_socket.conf.xml | 9 + .../conf/autoload_configs/json_cdr.conf.xml | 53 +++ .../conf/autoload_configs/console.conf.xml | 56 +++ .../conf/autoload_configs/logfile.conf.xml | 29 ++ .../conf/autoload_configs/syslog.conf.xml | 18 + .../conf/autoload_configs/xml_cdr.conf.xml | 71 ++++ .../conf/autoload_configs/xml_curl.conf.xml | 49 +++ .../conf/autoload_configs/xml_rpc.conf.xml | 10 + 83 files changed, 3108 insertions(+) create mode 100644 src/mod/applications/mod_abstraction/conf/autoload_configs/abstraction.conf.xml create mode 100644 src/mod/applications/mod_blacklist/conf/autoload_configs/blacklist.conf.xml create mode 100644 src/mod/applications/mod_callcenter/conf/autoload_configs/callcenter.conf.xml create mode 100644 src/mod/applications/mod_cidlookup/conf/autoload_configs/cidlookup.conf.xml create mode 100644 src/mod/applications/mod_conference/conf/autoload_configs/conference.conf.xml create mode 100644 src/mod/applications/mod_conference/conf/dialplan/conference_dialplan.xml create mode 100644 src/mod/applications/mod_db/conf/autoload_configs/db.conf.xml create mode 100644 src/mod/applications/mod_distributor/conf/autoload_configs/distributor.conf.xml create mode 100644 src/mod/applications/mod_distributor/conf/dialplan/distributor.xml create mode 100644 src/mod/applications/mod_easyroute/conf/autoload_configs/easyroute.conf.xml create mode 100644 src/mod/applications/mod_easyroute/conf/dialplan/easyroute.xml create mode 100644 src/mod/applications/mod_enum/conf/autoload_configs/enum.conf.xml create mode 100644 src/mod/applications/mod_enum/conf/dialplan/99999_enum.xml create mode 100644 src/mod/applications/mod_fifo/conf/autoload_configs/fifo.conf.xml create mode 100644 src/mod/applications/mod_fifo/conf/dialplan/fifo.xml create mode 100644 src/mod/applications/mod_hash/conf/autoload_configs/hash.conf.xml create mode 100644 src/mod/applications/mod_hash/conf/dialplan/hash.xml rename src/mod/applications/mod_httapi/{ => conf/autoload_configs}/httapi.conf.xml (100%) rename src/mod/applications/mod_httapi/{ => docs}/mod_httapi_doc.txt (100%) create mode 100644 src/mod/applications/mod_http_cache/conf/autoload_configs/http_cache.conf.xml create mode 100644 src/mod/applications/mod_http_cache/conf/dialplan/http_cache.xml create mode 100644 src/mod/applications/mod_ladspa/conf/dialplan/00_ladspa.xml create mode 100644 src/mod/applications/mod_ladspa/docs/README create mode 100644 src/mod/applications/mod_lcr/conf/autoload_configs/lcr.conf.xml create mode 100644 src/mod/applications/mod_lcr/conf/dialplan/lcr.xml create mode 100644 src/mod/applications/mod_limit/conf/autoload_configs/limit.conf.xml create mode 100644 src/mod/applications/mod_limit/conf/dialplan/limit.xml create mode 100644 src/mod/applications/mod_memcache/conf/autoload_configs/memcache.conf.xml create mode 100644 src/mod/applications/mod_memcache/conf/dialplan/memcache.xml create mode 100644 src/mod/applications/mod_mongo/conf/autoload_configs/mongo.conf.xml create mode 100644 src/mod/applications/mod_nibblebill/conf/autoload_configs/nibblebill.conf.xml create mode 100644 src/mod/applications/mod_nibblebill/conf/dialplan/nibblebill.xml create mode 100644 src/mod/applications/mod_osp/conf/osp.conf.xml create mode 100644 src/mod/applications/mod_redis/conf/autoload_configs/redis.conf.xml create mode 100644 src/mod/applications/mod_rss/conf/autoload_configs/rss.conf.xml create mode 100644 src/mod/applications/mod_rss/conf/dialplan/rss.xml create mode 100644 src/mod/applications/mod_rss/script/news.js create mode 100644 src/mod/applications/mod_snom/conf/dialplan/snom_demo.xml create mode 100644 src/mod/applications/mod_spandsp/conf/autoload_configs/spandsp.conf.xml create mode 100644 src/mod/applications/mod_spandsp/conf/config.FS0 create mode 100644 src/mod/applications/mod_spandsp/conf/dialplan/spandsp.xml create mode 100644 src/mod/applications/mod_valet_parking/conf/dialplan/valet_parking.xml create mode 100644 src/mod/applications/mod_vmd/conf/dialplan/vmd.xml create mode 100644 src/mod/applications/mod_vmd/scripts/vmd.js create mode 100644 src/mod/applications/mod_vmd/scripts/vmd.lua create mode 100644 src/mod/applications/mod_voicemail/conf/autoload_configs/voicemail.conf.xml create mode 100644 src/mod/applications/mod_voicemail/conf/dialplan/voicemail.xml create mode 100644 src/mod/applications/mod_voicemail/conf/notify-voicemail.tpl create mode 100644 src/mod/applications/mod_voicemail/conf/voicemail.tpl create mode 100644 src/mod/applications/mod_voicemail_ivr/conf/autoload_configs/voicemail_ivr.conf.xml create mode 100644 src/mod/asr_tts/mod_cepstral/conf/cepstral.conf.xml create mode 100644 src/mod/dialplans/mod_dialplan_asterisk/conf/extensions.conf create mode 100644 src/mod/endpoints/mod_alsa/conf/autoload_configs/alsa.conf.xml create mode 100644 src/mod/endpoints/mod_portaudio/conf/autoload_configs/portaudio.conf.xml create mode 100644 src/mod/endpoints/mod_rtmp/conf/autoload_configs/rtmp.conf.xml create mode 100644 src/mod/endpoints/mod_skinny/conf/autoload_configs/skinny.conf.xml create mode 100644 src/mod/endpoints/mod_skinny/conf/dialplan/skinny-patterns.xml create mode 100644 src/mod/endpoints/mod_skinny/conf/dialplan/skinny-patterns/20-Demo.xml create mode 100644 src/mod/endpoints/mod_skinny/conf/dialplan/skinny-patterns/20-Local_extension.xml create mode 100644 src/mod/endpoints/mod_skinny/conf/dialplan/skinny-patterns/90-External.xml create mode 100644 src/mod/endpoints/mod_skinny/conf/dialplan/skinny-patterns/99-Default_Drop.xml create mode 100644 src/mod/endpoints/mod_skinny/conf/directory/default/skinny-example.xml create mode 100644 src/mod/endpoints/mod_skinny/conf/skinny_profiles/internal.xml create mode 100644 src/mod/endpoints/mod_sofia/conf/sip_profiles/external.xml create mode 100644 src/mod/endpoints/mod_sofia/conf/sip_profiles/external/example.xml create mode 100644 src/mod/endpoints/mod_sofia/conf/sip_profiles/internal-ipv6.xml create mode 100644 src/mod/endpoints/mod_sofia/conf/sip_profiles/internal.xml create mode 100644 src/mod/endpoints/mod_sofia/conf/sip_profiles/internal/example.xml create mode 100644 src/mod/event_handlers/mod_cdr_csv/conf/autoload_configs/cdr_csv.conf.xml create mode 100644 src/mod/event_handlers/mod_cdr_mongodb/conf/autoload_configs/cdr_mongodb.conf.xml create mode 100644 src/mod/event_handlers/mod_cdr_pg_csv/conf/autoload_configs/cdr_pg_csv.conf.xml rename src/mod/event_handlers/mod_cdr_pg_csv/{ => scripts}/create.sql (100%) create mode 100644 src/mod/event_handlers/mod_cdr_sqlite/conf/autoload_configs/cdr_sqlite.conf.xml create mode 100644 src/mod/event_handlers/mod_erlang_event/conf/autoload_configs/erlang_event.conf.xml create mode 100644 src/mod/event_handlers/mod_event_multicast/conf/autoload_configs/event_multicast.conf.xml create mode 100644 src/mod/event_handlers/mod_event_socket/conf/autoload_configs/event_socket.conf.xml create mode 100644 src/mod/event_handlers/mod_json_cdr/conf/autoload_configs/json_cdr.conf.xml create mode 100644 src/mod/loggers/mod_console/conf/autoload_configs/console.conf.xml create mode 100644 src/mod/loggers/mod_logfile/conf/autoload_configs/logfile.conf.xml create mode 100644 src/mod/loggers/mod_syslog/conf/autoload_configs/syslog.conf.xml create mode 100644 src/mod/xml_int/mod_xml_cdr/conf/autoload_configs/xml_cdr.conf.xml create mode 100644 src/mod/xml_int/mod_xml_curl/conf/autoload_configs/xml_curl.conf.xml create mode 100644 src/mod/xml_int/mod_xml_rpc/conf/autoload_configs/xml_rpc.conf.xml diff --git a/src/mod/applications/mod_abstraction/conf/autoload_configs/abstraction.conf.xml b/src/mod/applications/mod_abstraction/conf/autoload_configs/abstraction.conf.xml new file mode 100644 index 0000000000..d4b1dfd274 --- /dev/null +++ b/src/mod/applications/mod_abstraction/conf/autoload_configs/abstraction.conf.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/mod/applications/mod_blacklist/conf/autoload_configs/blacklist.conf.xml b/src/mod/applications/mod_blacklist/conf/autoload_configs/blacklist.conf.xml new file mode 100644 index 0000000000..a981ebbdb0 --- /dev/null +++ b/src/mod/applications/mod_blacklist/conf/autoload_configs/blacklist.conf.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/src/mod/applications/mod_callcenter/conf/autoload_configs/callcenter.conf.xml b/src/mod/applications/mod_callcenter/conf/autoload_configs/callcenter.conf.xml new file mode 100644 index 0000000000..a069413ac6 --- /dev/null +++ b/src/mod/applications/mod_callcenter/conf/autoload_configs/callcenter.conf.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/applications/mod_cidlookup/conf/autoload_configs/cidlookup.conf.xml b/src/mod/applications/mod_cidlookup/conf/autoload_configs/cidlookup.conf.xml new file mode 100644 index 0000000000..a30f9f5c10 --- /dev/null +++ b/src/mod/applications/mod_cidlookup/conf/autoload_configs/cidlookup.conf.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/applications/mod_conference/conf/autoload_configs/conference.conf.xml b/src/mod/applications/mod_conference/conf/autoload_configs/conference.conf.xml new file mode 100644 index 0000000000..5a906f91cd --- /dev/null +++ b/src/mod/applications/mod_conference/conf/autoload_configs/conference.conf.xml @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/applications/mod_conference/conf/dialplan/conference_dialplan.xml b/src/mod/applications/mod_conference/conf/dialplan/conference_dialplan.xml new file mode 100644 index 0000000000..1c86ad8edf --- /dev/null +++ b/src/mod/applications/mod_conference/conf/dialplan/conference_dialplan.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/applications/mod_db/conf/autoload_configs/db.conf.xml b/src/mod/applications/mod_db/conf/autoload_configs/db.conf.xml new file mode 100644 index 0000000000..abc6c0c152 --- /dev/null +++ b/src/mod/applications/mod_db/conf/autoload_configs/db.conf.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/mod/applications/mod_distributor/conf/autoload_configs/distributor.conf.xml b/src/mod/applications/mod_distributor/conf/autoload_configs/distributor.conf.xml new file mode 100644 index 0000000000..a03b1ee810 --- /dev/null +++ b/src/mod/applications/mod_distributor/conf/autoload_configs/distributor.conf.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/mod/applications/mod_distributor/conf/dialplan/distributor.xml b/src/mod/applications/mod_distributor/conf/dialplan/distributor.xml new file mode 100644 index 0000000000..95f322a042 --- /dev/null +++ b/src/mod/applications/mod_distributor/conf/dialplan/distributor.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/mod/applications/mod_easyroute/conf/autoload_configs/easyroute.conf.xml b/src/mod/applications/mod_easyroute/conf/autoload_configs/easyroute.conf.xml new file mode 100644 index 0000000000..350a50989b --- /dev/null +++ b/src/mod/applications/mod_easyroute/conf/autoload_configs/easyroute.conf.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/applications/mod_easyroute/conf/dialplan/easyroute.xml b/src/mod/applications/mod_easyroute/conf/dialplan/easyroute.xml new file mode 100644 index 0000000000..001d7ad826 --- /dev/null +++ b/src/mod/applications/mod_easyroute/conf/dialplan/easyroute.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/applications/mod_enum/conf/autoload_configs/enum.conf.xml b/src/mod/applications/mod_enum/conf/autoload_configs/enum.conf.xml new file mode 100644 index 0000000000..0304d0dacd --- /dev/null +++ b/src/mod/applications/mod_enum/conf/autoload_configs/enum.conf.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/mod/applications/mod_enum/conf/dialplan/99999_enum.xml b/src/mod/applications/mod_enum/conf/dialplan/99999_enum.xml new file mode 100644 index 0000000000..4f436b2b30 --- /dev/null +++ b/src/mod/applications/mod_enum/conf/dialplan/99999_enum.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/mod/applications/mod_fifo/conf/autoload_configs/fifo.conf.xml b/src/mod/applications/mod_fifo/conf/autoload_configs/fifo.conf.xml new file mode 100644 index 0000000000..b1db4dd2bd --- /dev/null +++ b/src/mod/applications/mod_fifo/conf/autoload_configs/fifo.conf.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/mod/applications/mod_fifo/conf/dialplan/fifo.xml b/src/mod/applications/mod_fifo/conf/dialplan/fifo.xml new file mode 100644 index 0000000000..b85e792992 --- /dev/null +++ b/src/mod/applications/mod_fifo/conf/dialplan/fifo.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/src/mod/applications/mod_hash/conf/autoload_configs/hash.conf.xml b/src/mod/applications/mod_hash/conf/autoload_configs/hash.conf.xml new file mode 100644 index 0000000000..95b7928775 --- /dev/null +++ b/src/mod/applications/mod_hash/conf/autoload_configs/hash.conf.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/mod/applications/mod_hash/conf/dialplan/hash.xml b/src/mod/applications/mod_hash/conf/dialplan/hash.xml new file mode 100644 index 0000000000..b998867b44 --- /dev/null +++ b/src/mod/applications/mod_hash/conf/dialplan/hash.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/mod/applications/mod_httapi/httapi.conf.xml b/src/mod/applications/mod_httapi/conf/autoload_configs/httapi.conf.xml similarity index 100% rename from src/mod/applications/mod_httapi/httapi.conf.xml rename to src/mod/applications/mod_httapi/conf/autoload_configs/httapi.conf.xml diff --git a/src/mod/applications/mod_httapi/mod_httapi_doc.txt b/src/mod/applications/mod_httapi/docs/mod_httapi_doc.txt similarity index 100% rename from src/mod/applications/mod_httapi/mod_httapi_doc.txt rename to src/mod/applications/mod_httapi/docs/mod_httapi_doc.txt diff --git a/src/mod/applications/mod_http_cache/conf/autoload_configs/http_cache.conf.xml b/src/mod/applications/mod_http_cache/conf/autoload_configs/http_cache.conf.xml new file mode 100644 index 0000000000..4150d6472e --- /dev/null +++ b/src/mod/applications/mod_http_cache/conf/autoload_configs/http_cache.conf.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/mod/applications/mod_http_cache/conf/dialplan/http_cache.xml b/src/mod/applications/mod_http_cache/conf/dialplan/http_cache.xml new file mode 100644 index 0000000000..860fc66f65 --- /dev/null +++ b/src/mod/applications/mod_http_cache/conf/dialplan/http_cache.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/mod/applications/mod_ladspa/conf/dialplan/00_ladspa.xml b/src/mod/applications/mod_ladspa/conf/dialplan/00_ladspa.xml new file mode 100644 index 0000000000..a26b193ef5 --- /dev/null +++ b/src/mod/applications/mod_ladspa/conf/dialplan/00_ladspa.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/applications/mod_ladspa/docs/README b/src/mod/applications/mod_ladspa/docs/README new file mode 100644 index 0000000000..3a6337d344 --- /dev/null +++ b/src/mod/applications/mod_ladspa/docs/README @@ -0,0 +1,4 @@ +mod_ladspa is a module that allow to use Linux Audio Developer's Simple Plugin API inside freeswitch in realtime. +see http://wiki.freeswitch.org/wiki/Mod_ladspa for installation and configuration documentation. + +Please Note Currently this module only works on Linux. diff --git a/src/mod/applications/mod_lcr/conf/autoload_configs/lcr.conf.xml b/src/mod/applications/mod_lcr/conf/autoload_configs/lcr.conf.xml new file mode 100644 index 0000000000..9d106d4890 --- /dev/null +++ b/src/mod/applications/mod_lcr/conf/autoload_configs/lcr.conf.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/applications/mod_lcr/conf/dialplan/lcr.xml b/src/mod/applications/mod_lcr/conf/dialplan/lcr.xml new file mode 100644 index 0000000000..48feb6a787 --- /dev/null +++ b/src/mod/applications/mod_lcr/conf/dialplan/lcr.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/mod/applications/mod_limit/conf/autoload_configs/limit.conf.xml b/src/mod/applications/mod_limit/conf/autoload_configs/limit.conf.xml new file mode 100644 index 0000000000..26b0f8549a --- /dev/null +++ b/src/mod/applications/mod_limit/conf/autoload_configs/limit.conf.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/mod/applications/mod_limit/conf/dialplan/limit.xml b/src/mod/applications/mod_limit/conf/dialplan/limit.xml new file mode 100644 index 0000000000..5641c4b44d --- /dev/null +++ b/src/mod/applications/mod_limit/conf/dialplan/limit.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/mod/applications/mod_memcache/conf/autoload_configs/memcache.conf.xml b/src/mod/applications/mod_memcache/conf/autoload_configs/memcache.conf.xml new file mode 100644 index 0000000000..dc0173f986 --- /dev/null +++ b/src/mod/applications/mod_memcache/conf/autoload_configs/memcache.conf.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/mod/applications/mod_memcache/conf/dialplan/memcache.xml b/src/mod/applications/mod_memcache/conf/dialplan/memcache.xml new file mode 100644 index 0000000000..4758d0e876 --- /dev/null +++ b/src/mod/applications/mod_memcache/conf/dialplan/memcache.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/mod/applications/mod_mongo/conf/autoload_configs/mongo.conf.xml b/src/mod/applications/mod_mongo/conf/autoload_configs/mongo.conf.xml new file mode 100644 index 0000000000..8423645e95 --- /dev/null +++ b/src/mod/applications/mod_mongo/conf/autoload_configs/mongo.conf.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + diff --git a/src/mod/applications/mod_nibblebill/conf/autoload_configs/nibblebill.conf.xml b/src/mod/applications/mod_nibblebill/conf/autoload_configs/nibblebill.conf.xml new file mode 100644 index 0000000000..ed1c9332c8 --- /dev/null +++ b/src/mod/applications/mod_nibblebill/conf/autoload_configs/nibblebill.conf.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/applications/mod_nibblebill/conf/dialplan/nibblebill.xml b/src/mod/applications/mod_nibblebill/conf/dialplan/nibblebill.xml new file mode 100644 index 0000000000..3f52093881 --- /dev/null +++ b/src/mod/applications/mod_nibblebill/conf/dialplan/nibblebill.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/applications/mod_osp/conf/osp.conf.xml b/src/mod/applications/mod_osp/conf/osp.conf.xml new file mode 100644 index 0000000000..b320dbba88 --- /dev/null +++ b/src/mod/applications/mod_osp/conf/osp.conf.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/applications/mod_redis/conf/autoload_configs/redis.conf.xml b/src/mod/applications/mod_redis/conf/autoload_configs/redis.conf.xml new file mode 100644 index 0000000000..1a1f474036 --- /dev/null +++ b/src/mod/applications/mod_redis/conf/autoload_configs/redis.conf.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/mod/applications/mod_rss/conf/autoload_configs/rss.conf.xml b/src/mod/applications/mod_rss/conf/autoload_configs/rss.conf.xml new file mode 100644 index 0000000000..f8c4f6d2b4 --- /dev/null +++ b/src/mod/applications/mod_rss/conf/autoload_configs/rss.conf.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/mod/applications/mod_rss/conf/dialplan/rss.xml b/src/mod/applications/mod_rss/conf/dialplan/rss.xml new file mode 100644 index 0000000000..3cd2b17567 --- /dev/null +++ b/src/mod/applications/mod_rss/conf/dialplan/rss.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/mod/applications/mod_rss/script/news.js b/src/mod/applications/mod_rss/script/news.js new file mode 100644 index 0000000000..d6dea0dc29 --- /dev/null +++ b/src/mod/applications/mod_rss/script/news.js @@ -0,0 +1,12 @@ +if (session.ready()) { + session.answer(); + session.speak("cepstral","David","Please wait while we refresh the RSS feeds.") + + fetchURLFile("http://weather.yahooapis.com/forecastrss?p=60610","rss/weather.rss"); + fetchURLFile("http://rss.news.yahoo.com/rss/topstories","rss/yahootop.rss"); + fetchURLFile("http://rss.news.yahoo.com/rss/science","rss/yahoosci.rss"); + fetchURLFile("http://rss.news.yahoo.com/rss/business","rss/yahoobus.rss"); + fetchURLFile("http://rss.news.yahoo.com/rss/entertainment","rss/yahooent.rss"); + fetchURLFile("http://rss.slashdot.org/Slashdot/slashdot","rss/slashdot.rss"); + fetchURLFile("http://www.freeswitch.org/xml.php","rss/freeswitch.rss"); +} diff --git a/src/mod/applications/mod_snom/conf/dialplan/snom_demo.xml b/src/mod/applications/mod_snom/conf/dialplan/snom_demo.xml new file mode 100644 index 0000000000..aac6e8cc7b --- /dev/null +++ b/src/mod/applications/mod_snom/conf/dialplan/snom_demo.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/mod/applications/mod_spandsp/conf/autoload_configs/spandsp.conf.xml b/src/mod/applications/mod_spandsp/conf/autoload_configs/spandsp.conf.xml new file mode 100644 index 0000000000..6f062cc731 --- /dev/null +++ b/src/mod/applications/mod_spandsp/conf/autoload_configs/spandsp.conf.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/applications/mod_spandsp/conf/config.FS0 b/src/mod/applications/mod_spandsp/conf/config.FS0 new file mode 100644 index 0000000000..5310142148 --- /dev/null +++ b/src/mod/applications/mod_spandsp/conf/config.FS0 @@ -0,0 +1,78 @@ +CountryCode: 1 +AreaCode: 800 +FAXNumber: +1.800.555.1212 +LongDistancePrefix: 1 +InternationalPrefix: 011 +DialStringRules: etc/dialrules +ServerTracing: 0xFFF +SessionTracing: 0xFFF +RecvFileMode: 0600 +LogFileMode: 0600 +DeviceMode: 0600 +RingsBeforeAnswer: 1 +SpeakerVolume: off +GettyArgs: "-h %l dx_%s" +LocalIdentifier: "FS" +TagLineFont: etc/lutRS18.pcf +TagLineFormat: "From %%l|%c|Page %%P of %%T" +MaxRecvPages: 200 +# +# +# Modem-related stuff: should reflect modem command interface +# and hardware connection/cabling (e.g. flow control). +# +ModemType: Class1 # use this to supply a hint + +# +# Enabling this will use the hfaxd-protocol to set Caller*ID +# +#ModemSetOriginCmd: AT+VSID="%s","%d" + +# +# If "glare" during initialization becomes a problem then take +# the modem off-hook during initialization, and then place it +# back on-hook when done. +# +#ModemResetCmds: "ATH1\nAT+VCID=1" # enables CallID display +#ModemReadyCmds: ATH0 + +Class1AdaptRecvCmd: AT+FAR=1 +Class1TMConnectDelay: 400 # counteract quick CONNECT response + +# +# If you have trouble with V.17 receiving or sending, +# you may want to enable one of these, respectively. +# +#Class1RMQueryCmd: "!24,48,72,96" # enable this to disable V.17 receiving +#Class1TMQueryCmd: "!24,48,72,96" # enable this to disable V.17 sending + +# +# You'll likely want Caller*ID display (also displays DID) enabled. +# +ModemResetCmds: AT+VCID=1 # enables CallID display + +# +# The pty does not support changing parity. +# +PagerTTYParity: none + +# +# If you are "missing" Caller*ID data on some calls (but not all) +# and if you do not have adequate glare protection you may want to +# not answer based on RINGs, but rather enable the CallIDAnswerLength +# for NDID, disable AT+VCID=1 and do this: +# +#RingsBeforeAnswer: 0 +#ModemRingResponse: AT+VRID=1 + +# Uncomment DATE and TIME if you really want them, but you probably don't. +#CallIDPattern: "DATE=" +#CallIDPattern: "TIME=" +CallIDPattern: "NMBR=" +CallIDPattern: "NAME=" +CallIDPattern: "ANID=" +#CallIDPattern: "USER=" # username provided by call +#CallIDPattern: "PASS=" # password provided by call +#CallIDPattern: "CDID=" # DID context in call +CallIDPattern: "NDID=" +#CallIDAnswerLength: 4 diff --git a/src/mod/applications/mod_spandsp/conf/dialplan/spandsp.xml b/src/mod/applications/mod_spandsp/conf/dialplan/spandsp.xml new file mode 100644 index 0000000000..1bff1b7839 --- /dev/null +++ b/src/mod/applications/mod_spandsp/conf/dialplan/spandsp.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/applications/mod_valet_parking/conf/dialplan/valet_parking.xml b/src/mod/applications/mod_valet_parking/conf/dialplan/valet_parking.xml new file mode 100644 index 0000000000..4767a3384f --- /dev/null +++ b/src/mod/applications/mod_valet_parking/conf/dialplan/valet_parking.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + diff --git a/src/mod/applications/mod_vmd/conf/dialplan/vmd.xml b/src/mod/applications/mod_vmd/conf/dialplan/vmd.xml new file mode 100644 index 0000000000..fee36f5403 --- /dev/null +++ b/src/mod/applications/mod_vmd/conf/dialplan/vmd.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/mod/applications/mod_vmd/scripts/vmd.js b/src/mod/applications/mod_vmd/scripts/vmd.js new file mode 100644 index 0000000000..7f7e5d21a4 --- /dev/null +++ b/src/mod/applications/mod_vmd/scripts/vmd.js @@ -0,0 +1,27 @@ +function onInput(s, type, obj, arg) +{ + try + { + if(type == "dtmf") + { + console_log("info", "DTMF digit: "+s.name+" ["+obj.digit+"] len ["+obj.duration+"]\n"); + } + else if(type == "event" && session.getVariable("vmd_detect") == "TRUE") + { + console_log("info", "Voicemail Detected\n"); + } + + } + catch(e) + { + console_log("err", e + "\n"); + } + return true; +} + +session.answer(); +session.execute("vmd", "start"); +while(session.ready()) +{ + session.streamFile(argv[0], onInput); +} diff --git a/src/mod/applications/mod_vmd/scripts/vmd.lua b/src/mod/applications/mod_vmd/scripts/vmd.lua new file mode 100644 index 0000000000..ca6a9f8c2d --- /dev/null +++ b/src/mod/applications/mod_vmd/scripts/vmd.lua @@ -0,0 +1,17 @@ +local human_detected = false; +local voicemail_detected = false; + +function onInput(session, type, obj) + if type == "dtmf" and obj['digit'] == '1' and human_detected == false then + human_detected = true; + return "break"; + end + + if type == "event" and voicemail_detected == false then + voicemail_detected = true; + return "break"; + end +end + +session:setInputCallback("onInput"); +session:execute("vmd","start"); diff --git a/src/mod/applications/mod_voicemail/conf/autoload_configs/voicemail.conf.xml b/src/mod/applications/mod_voicemail/conf/autoload_configs/voicemail.conf.xml new file mode 100644 index 0000000000..ff46836750 --- /dev/null +++ b/src/mod/applications/mod_voicemail/conf/autoload_configs/voicemail.conf.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/applications/mod_voicemail/conf/dialplan/voicemail.xml b/src/mod/applications/mod_voicemail/conf/dialplan/voicemail.xml new file mode 100644 index 0000000000..bb2991eef4 --- /dev/null +++ b/src/mod/applications/mod_voicemail/conf/dialplan/voicemail.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/applications/mod_voicemail/conf/notify-voicemail.tpl b/src/mod/applications/mod_voicemail/conf/notify-voicemail.tpl new file mode 100644 index 0000000000..365faa2921 --- /dev/null +++ b/src/mod/applications/mod_voicemail/conf/notify-voicemail.tpl @@ -0,0 +1,44 @@ +From: "${voicemail_caller_id_name}" <${voicemail_caller_id_number}@${voicemail_domain}> +Date: ${RFC2822_DATE} +To: <${voicemail_notify_email}> +Subject: Voicemail from "${voicemail_caller_id_name}" <${voicemail_caller_id_number}> ${voicemail_message_len} +X-Priority: ${voicemail_priority} +X-Mailer: FreeSWITCH + +Content-Type: multipart/alternative; + boundary="000XXX000" + +--000XXX000 +Content-Type: text/plain; charset=ISO-8859-1; Format=Flowed +Content-Disposition: inline +Content-Transfer-Encoding: 7bit + +Created: ${voicemail_time} +From: "${voicemail_caller_id_name}" <${voicemail_caller_id_number}> +Duration: ${voicemail_message_len} +Account: ${voicemail_account}@${voicemail_domain} + +--000XXX000 +Content-Type: text/html; charset=ISO-8859-1 +Content-Disposition: inline +Content-Transfer-Encoding: 7bit + + + + +Voicemail from "${voicemail_caller_id_name}" <${voicemail_caller_id_number}> ${voicemail_message_len} + + + + + +Message From "${voicemail_caller_id_name}" ${voicemail_caller_id_number}
+
+Created: ${voicemail_time}
+Duration: ${voicemail_message_len}
+Account: ${voicemail_account}@${voicemail_domain}
+
+ + + +--000XXX000-- diff --git a/src/mod/applications/mod_voicemail/conf/voicemail.tpl b/src/mod/applications/mod_voicemail/conf/voicemail.tpl new file mode 100644 index 0000000000..2774b78a9e --- /dev/null +++ b/src/mod/applications/mod_voicemail/conf/voicemail.tpl @@ -0,0 +1,44 @@ +From: "${voicemail_caller_id_name}" <${voicemail_caller_id_number}@${voicemail_domain}> +Date: ${RFC2822_DATE} +To: <${voicemail_email}> +Subject: Voicemail from "${voicemail_caller_id_name}" <${voicemail_caller_id_number}> ${voicemail_message_len} +X-Priority: ${voicemail_priority} +X-Mailer: FreeSWITCH + +Content-Type: multipart/alternative; + boundary="000XXX000" + +--000XXX000 +Content-Type: text/plain; charset=ISO-8859-1; Format=Flowed +Content-Disposition: inline +Content-Transfer-Encoding: 7bit + +Created: ${voicemail_time} +From: "${voicemail_caller_id_name}" <${voicemail_caller_id_number}> +Duration: ${voicemail_message_len} +Account: ${voicemail_account}@${voicemail_domain} + +--000XXX000 +Content-Type: text/html; charset=ISO-8859-1 +Content-Disposition: inline +Content-Transfer-Encoding: 7bit + + + + +Voicemail from "${voicemail_caller_id_name}" <${voicemail_caller_id_number}> ${voicemail_message_len} + + + + + +Message From "${voicemail_caller_id_name}" ${voicemail_caller_id_number}
+
+Created: ${voicemail_time}
+Duration: ${voicemail_message_len}
+Account: ${voicemail_account}@${voicemail_domain}
+
+ + + +--000XXX000-- diff --git a/src/mod/applications/mod_voicemail_ivr/conf/autoload_configs/voicemail_ivr.conf.xml b/src/mod/applications/mod_voicemail_ivr/conf/autoload_configs/voicemail_ivr.conf.xml new file mode 100644 index 0000000000..529509a495 --- /dev/null +++ b/src/mod/applications/mod_voicemail_ivr/conf/autoload_configs/voicemail_ivr.conf.xml @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/asr_tts/mod_cepstral/conf/cepstral.conf.xml b/src/mod/asr_tts/mod_cepstral/conf/cepstral.conf.xml new file mode 100644 index 0000000000..cf4aa92f41 --- /dev/null +++ b/src/mod/asr_tts/mod_cepstral/conf/cepstral.conf.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/src/mod/dialplans/mod_dialplan_asterisk/conf/extensions.conf b/src/mod/dialplans/mod_dialplan_asterisk/conf/extensions.conf new file mode 100644 index 0000000000..f2c922efce --- /dev/null +++ b/src/mod/dialplans/mod_dialplan_asterisk/conf/extensions.conf @@ -0,0 +1,21 @@ +[default] + +; Things you're used to.... +exten => music,n,Dial(SIP/1234@conference.freeswitch.org|120) + +exten => _1XXXXX,n,set(cool=${EXTEN}) +exten => _1XXXXX,n,set(myvar=true) +exten => _1XXXXX,n,Goto(default|music) +exten => 2137991400/1000,n,Goto(default|music) + + +; Some new magic you can do.... +exten => ~^(18(0{2}|8{2}|7{2}|6{2})\d{7})$,n,enum($1) +exten => ~^(18(0{2}|8{2}|7{2}|6{2})\d{7})$,n,bridge(${enum_auto_route}) + +; instead of exten, put anything about the call you would rather match on. +; either the names of a field in caller_profile or a string of variables to expand. +caller_id_number => 2137991400,n,Goto(default|music) +${sip_from_user} => bill,n,Goto(default|music) + + diff --git a/src/mod/endpoints/mod_alsa/conf/autoload_configs/alsa.conf.xml b/src/mod/endpoints/mod_alsa/conf/autoload_configs/alsa.conf.xml new file mode 100644 index 0000000000..e589acaacf --- /dev/null +++ b/src/mod/endpoints/mod_alsa/conf/autoload_configs/alsa.conf.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/mod/endpoints/mod_portaudio/conf/autoload_configs/portaudio.conf.xml b/src/mod/endpoints/mod_portaudio/conf/autoload_configs/portaudio.conf.xml new file mode 100644 index 0000000000..02c21ef449 --- /dev/null +++ b/src/mod/endpoints/mod_portaudio/conf/autoload_configs/portaudio.conf.xml @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/endpoints/mod_rtmp/conf/autoload_configs/rtmp.conf.xml b/src/mod/endpoints/mod_rtmp/conf/autoload_configs/rtmp.conf.xml new file mode 100644 index 0000000000..d5d278810e --- /dev/null +++ b/src/mod/endpoints/mod_rtmp/conf/autoload_configs/rtmp.conf.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/mod/endpoints/mod_skinny/conf/autoload_configs/skinny.conf.xml b/src/mod/endpoints/mod_skinny/conf/autoload_configs/skinny.conf.xml new file mode 100644 index 0000000000..6a878fcd71 --- /dev/null +++ b/src/mod/endpoints/mod_skinny/conf/autoload_configs/skinny.conf.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/mod/endpoints/mod_skinny/conf/dialplan/skinny-patterns.xml b/src/mod/endpoints/mod_skinny/conf/dialplan/skinny-patterns.xml new file mode 100644 index 0000000000..9f5786d731 --- /dev/null +++ b/src/mod/endpoints/mod_skinny/conf/dialplan/skinny-patterns.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + diff --git a/src/mod/endpoints/mod_skinny/conf/dialplan/skinny-patterns/20-Demo.xml b/src/mod/endpoints/mod_skinny/conf/dialplan/skinny-patterns/20-Demo.xml new file mode 100644 index 0000000000..f69658128f --- /dev/null +++ b/src/mod/endpoints/mod_skinny/conf/dialplan/skinny-patterns/20-Demo.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/mod/endpoints/mod_skinny/conf/dialplan/skinny-patterns/20-Local_extension.xml b/src/mod/endpoints/mod_skinny/conf/dialplan/skinny-patterns/20-Local_extension.xml new file mode 100644 index 0000000000..9ad5651328 --- /dev/null +++ b/src/mod/endpoints/mod_skinny/conf/dialplan/skinny-patterns/20-Local_extension.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/mod/endpoints/mod_skinny/conf/dialplan/skinny-patterns/90-External.xml b/src/mod/endpoints/mod_skinny/conf/dialplan/skinny-patterns/90-External.xml new file mode 100644 index 0000000000..50d6c37f24 --- /dev/null +++ b/src/mod/endpoints/mod_skinny/conf/dialplan/skinny-patterns/90-External.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/mod/endpoints/mod_skinny/conf/dialplan/skinny-patterns/99-Default_Drop.xml b/src/mod/endpoints/mod_skinny/conf/dialplan/skinny-patterns/99-Default_Drop.xml new file mode 100644 index 0000000000..897fd8fb94 --- /dev/null +++ b/src/mod/endpoints/mod_skinny/conf/dialplan/skinny-patterns/99-Default_Drop.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/mod/endpoints/mod_skinny/conf/directory/default/skinny-example.xml b/src/mod/endpoints/mod_skinny/conf/directory/default/skinny-example.xml new file mode 100644 index 0000000000..357eb72f12 --- /dev/null +++ b/src/mod/endpoints/mod_skinny/conf/directory/default/skinny-example.xml @@ -0,0 +1,35 @@ + + + + + + + + + + +