From git at svn.freeswitch.org Fri Jan 28 00:47:36 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Thu, 27 Jan 2011 15:47:36 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1630-g4b94154 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 (commit) from b889b44f1d632810662359f6becce869056a076c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 Author: Anthony Minessale Date: Thu Jan 27 10:34:05 2011 -0600 fix out of place parens in logic test diff --git a/src/switch_channel.c b/src/switch_channel.c index 918ad82..de472a9 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -2564,8 +2564,8 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_ring_ready_value(swi char *app; switch_event_t *event; - if (!switch_channel_test_flag(channel, CF_RING_READY) && !switch_channel_test_flag(channel, CF_EARLY_MEDIA && - !switch_channel_test_flag(channel, CF_ANSWERED))) { + if (!switch_channel_test_flag(channel, CF_RING_READY) && + !switch_channel_test_flag(channel, CF_EARLY_MEDIA) && !switch_channel_test_flag(channel, CF_ANSWERED)) { switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_channel_get_uuid(channel), SWITCH_LOG_NOTICE, "Ring-Ready %s!\n", channel->name); switch_channel_set_flag_value(channel, CF_RING_READY, rv); if (channel->caller_profile && channel->caller_profile->times) { ----------------------------------------------------------------------- Summary of changes: src/switch_channel.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- From git at svn.freeswitch.org Fri Jan 28 00:49:15 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Thu, 27 Jan 2011 15:49:15 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1634-g48c02b7 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 48c02b7cd2770f6aee1d6e89f5ecfe207231f398 (commit) from f954d21ab8f84ea3518525d6f8a5a25c5cd39d6b (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 48c02b7cd2770f6aee1d6e89f5ecfe207231f398 Author: Raymond Chandler Date: Thu Jan 27 16:49:09 2011 -0500 test diff --git a/build/modules.conf.in b/build/modules.conf.in index b46c2ff..84a9e9a 100644 --- a/build/modules.conf.in +++ b/build/modules.conf.in @@ -112,4 +112,3 @@ say/mod_say_ru ## Experimental Modules (don't cry if they're broken) #../../contrib/mod/xml_int/mod_xml_odbc - ----------------------------------------------------------------------- Summary of changes: build/modules.conf.in | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) hooks/post-receive -- From git at svn.freeswitch.org Fri Jan 28 00:54:02 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Thu, 27 Jan 2011 15:54:02 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1635-g314a2a1 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 314a2a1e2061ef321fa5f9b32a9c70ef0040cdb8 (commit) from 48c02b7cd2770f6aee1d6e89f5ecfe207231f398 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 314a2a1e2061ef321fa5f9b32a9c70ef0040cdb8 Author: Brian West Date: Thu Jan 27 10:40:49 2011 -0600 FS-3004 diff --git a/src/mod/applications/mod_spandsp/mod_spandsp_fax.c b/src/mod/applications/mod_spandsp/mod_spandsp_fax.c index 21c6a68..4dd936b 100644 --- a/src/mod/applications/mod_spandsp/mod_spandsp_fax.c +++ b/src/mod/applications/mod_spandsp/mod_spandsp_fax.c @@ -40,6 +40,9 @@ #define MAX_FEC_ENTRIES 4 #define MAX_FEC_SPAN 4 +#define SPANDSP_EVENT_TXFAXRESULT "spandsp::txfaxresult" +#define SPANDSP_EVENT_RXFAXRESULT "spandsp::rxfaxresult" + /***************************************************************************** OUR DEFINES AND STRUCTS *****************************************************************************/ @@ -305,7 +308,14 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_core_session_t *session; switch_channel_t *channel; pvt_t *pvt; - char *tmp; + char *fax_document_transferred_pages = NULL; + char *fax_document_total_pages = NULL; + char *fax_image_resolution = NULL; + char *fax_image_size = NULL; + char *fax_bad_rows = NULL; + char *fax_transfer_rate = NULL; + char *fax_result_code = NULL; + switch_event_t *event; pvt = (pvt_t *) user_data; switch_assert(pvt); @@ -353,13 +363,12 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "==============================================================================\n"); /* - Set our channel variables + Set our channel variables, variables are also used in event */ - tmp = switch_mprintf("%i", result); - if (tmp) { - switch_channel_set_variable(channel, "fax_result_code", tmp); - switch_safe_free(tmp); + fax_result_code = switch_core_session_sprintf(session, "%i", result); + if (fax_result_code) { + switch_channel_set_variable(channel, "fax_result_code", fax_result_code); } switch_channel_set_variable(channel, "fax_result_text", t30_completion_code_to_str(result)); @@ -368,49 +377,56 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_channel_set_variable(channel, "fax_local_station_id", local_ident); switch_channel_set_variable(channel, "fax_remote_station_id", far_ident); - tmp = switch_mprintf("%i", pvt->app_mode == FUNCTION_TX ? t.pages_tx : t.pages_rx); - if (tmp) { - switch_channel_set_variable(channel, "fax_document_transferred_pages", tmp); - switch_safe_free(tmp); + fax_document_transferred_pages = switch_core_session_sprintf(session, "%i", pvt->app_mode == FUNCTION_TX ? t.pages_tx : t.pages_rx); + if (fax_document_transferred_pages) { + switch_channel_set_variable(channel, "fax_document_transferred_pages", fax_document_transferred_pages); } - tmp = switch_mprintf("%i", t.pages_in_file); - if (tmp) { - switch_channel_set_variable(channel, "fax_document_total_pages", tmp); - switch_safe_free(tmp); + fax_document_total_pages = switch_core_session_sprintf(session, "%i", t.pages_in_file); + if (fax_document_total_pages) { + switch_channel_set_variable(channel, "fax_document_total_pages", fax_document_total_pages); } - tmp = switch_mprintf("%ix%i", t.x_resolution, t.y_resolution); - if (tmp) { - switch_channel_set_variable(channel, "fax_image_resolution", tmp); - switch_safe_free(tmp); + fax_image_resolution = switch_core_session_sprintf(session, "%ix%i", t.x_resolution, t.y_resolution); + if (fax_image_resolution) { + switch_channel_set_variable(channel, "fax_image_resolution", fax_image_resolution); } - tmp = switch_mprintf("%d", t.image_size); - if (tmp) { - switch_channel_set_variable(channel, "fax_image_size", tmp); - switch_safe_free(tmp); + fax_image_size = switch_core_session_sprintf(session, "%d", t.image_size); + if (fax_image_size) { + switch_channel_set_variable(channel, "fax_image_size", fax_image_size); } - tmp = switch_mprintf("%d", t.bad_rows); - if (tmp) { - switch_channel_set_variable(channel, "fax_bad_rows", tmp); - switch_safe_free(tmp); + fax_bad_rows = switch_core_session_sprintf(session, "%d", t.bad_rows); + if (fax_bad_rows) { + switch_channel_set_variable(channel, "fax_bad_rows", fax_bad_rows); } - tmp = switch_mprintf("%i", t.bit_rate); - if (tmp) { - switch_channel_set_variable(channel, "fax_transfer_rate", tmp); - switch_safe_free(tmp); + fax_transfer_rate = switch_core_session_sprintf(session, "%i", t.bit_rate); + if (fax_transfer_rate) { + switch_channel_set_variable(channel, "fax_transfer_rate", fax_transfer_rate); } /* switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); */ pvt->done = 1; - /* - TODO Fire events - */ + /* Fire event */ + + if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, pvt->app_mode == FUNCTION_TX ? SPANDSP_EVENT_TXFAXRESULT : SPANDSP_EVENT_RXFAXRESULT) == SWITCH_STATUS_SUCCESS) { + 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-document-total-pages", fax_document_total_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); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-bad-rows", fax_bad_rows); + 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-result-code", fax_result_code); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-result-text", t30_completion_code_to_str(result)); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-ecm-used", (t.error_correcting_mode) ? "on" : "off"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-local-station-id", local_ident); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-remote-station-id", far_ident); + switch_core_session_queue_private_event(session, &event, SWITCH_FALSE); + } } static int t38_tx_packet_handler(t38_core_state_t *s, void *user_data, const uint8_t *buf, int len, int count) @@ -1026,7 +1042,6 @@ void mod_spandsp_fax_process_fax(switch_core_session_t *session, const char *dat switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Fax TX filename not set.\n"); goto done; } else if (pvt->app_mode == FUNCTION_RX) { - char *fname; const char *prefix; switch_time_t time; @@ -1036,11 +1051,7 @@ void mod_spandsp_fax_process_fax(switch_core_session_t *session, const char *dat prefix = globals.prepend_string; } - fname = switch_mprintf("%s/%s-%ld-%ld.tif", globals.spool, prefix, globals.total_sessions, time); - if (fname) { - pvt->filename = switch_core_session_strdup(session, fname); - switch_safe_free(fname); - } else { + if (!(pvt->filename = switch_core_session_sprintf(session, "%s/%s-%ld-%ld.tif", globals.spool, prefix, globals.total_sessions, time))) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Cannot automatically set fax RX destination file\n"); goto done; } ----------------------------------------------------------------------- Summary of changes: src/mod/applications/mod_spandsp/mod_spandsp_fax.c | 89 +++++++++++--------- 1 files changed, 50 insertions(+), 39 deletions(-) hooks/post-receive -- From git at svn.freeswitch.org Fri Jan 28 22:19:10 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Fri, 28 Jan 2011 13:19:10 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1640-gf05fe55 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via f05fe55594ffca6edc8f4e74204650aa219ed1ac (commit) from 08f494b80802aacf101705382f149ca4b028eb57 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit f05fe55594ffca6edc8f4e74204650aa219ed1ac Author: Raymond Chandler Date: Fri Jan 28 14:19:07 2011 -0500 test diff --git a/conf/freeswitch.xml b/conf/freeswitch.xml index 80e7728..6ed99ef 100644 --- a/conf/freeswitch.xml +++ b/conf/freeswitch.xml @@ -64,4 +64,3 @@ - ----------------------------------------------------------------------- Summary of changes: conf/freeswitch.xml | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) hooks/post-receive -- From git at svn.freeswitch.org Fri Jan 28 22:20:25 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Fri, 28 Jan 2011 13:20:25 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1641-g9b0c16b Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 9b0c16b5d48a7b9d0ea15ac429a8ca4c8eef8693 (commit) from f05fe55594ffca6edc8f4e74204650aa219ed1ac (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 9b0c16b5d48a7b9d0ea15ac429a8ca4c8eef8693 Author: Raymond Chandler Date: Fri Jan 28 14:20:21 2011 -0500 test diff --git a/conf/freeswitch.xml b/conf/freeswitch.xml index 6ed99ef..5fc9402 100644 --- a/conf/freeswitch.xml +++ b/conf/freeswitch.xml @@ -63,4 +63,3 @@ - ----------------------------------------------------------------------- Summary of changes: conf/freeswitch.xml | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) hooks/post-receive -- From git at svn.freeswitch.org Fri Jan 28 22:21:34 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Fri, 28 Jan 2011 13:21:34 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1642-g68b2756 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 68b2756970bd4280eba700b7439afdff374fd9e3 (commit) from 9b0c16b5d48a7b9d0ea15ac429a8ca4c8eef8693 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 68b2756970bd4280eba700b7439afdff374fd9e3 Author: Raymond Chandler Date: Fri Jan 28 14:21:31 2011 -0500 test diff --git a/conf/freeswitch.xml b/conf/freeswitch.xml index 5fc9402..6ed99ef 100644 --- a/conf/freeswitch.xml +++ b/conf/freeswitch.xml @@ -63,3 +63,4 @@ + ----------------------------------------------------------------------- Summary of changes: conf/freeswitch.xml | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) hooks/post-receive -- From git at svn.freeswitch.org Fri Jan 28 22:24:13 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Fri, 28 Jan 2011 13:24:13 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1643-g97a2b4f Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 97a2b4f9025099bdab5718a13ee36d15a6152411 (commit) from 68b2756970bd4280eba700b7439afdff374fd9e3 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 97a2b4f9025099bdab5718a13ee36d15a6152411 Author: Raymond Chandler Date: Fri Jan 28 14:24:07 2011 -0500 test diff --git a/conf/freeswitch.xml b/conf/freeswitch.xml index 6ed99ef..80e7728 100644 --- a/conf/freeswitch.xml +++ b/conf/freeswitch.xml @@ -64,3 +64,4 @@ + ----------------------------------------------------------------------- Summary of changes: conf/freeswitch.xml | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Fri Jan 28 22:46:30 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 13:46:30 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1630-g4b94154 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 (commit) from b889b44f1d632810662359f6becce869056a076c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 Author: Anthony Minessale Date: Thu Jan 27 10:34:05 2011 -0600 fix out of place parens in logic test diff --git a/src/switch_channel.c b/src/switch_channel.c index 918ad82..de472a9 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -2564,8 +2564,8 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_ring_ready_value(swi char *app; switch_event_t *event; - if (!switch_channel_test_flag(channel, CF_RING_READY) && !switch_channel_test_flag(channel, CF_EARLY_MEDIA && - !switch_channel_test_flag(channel, CF_ANSWERED))) { + if (!switch_channel_test_flag(channel, CF_RING_READY) && + !switch_channel_test_flag(channel, CF_EARLY_MEDIA) && !switch_channel_test_flag(channel, CF_ANSWERED)) { switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_channel_get_uuid(channel), SWITCH_LOG_NOTICE, "Ring-Ready %s!\n", channel->name); switch_channel_set_flag_value(channel, CF_RING_READY, rv); if (channel->caller_profile && channel->caller_profile->times) { ----------------------------------------------------------------------- Summary of changes: src/switch_channel.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Fri Jan 28 23:11:25 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 14:11:25 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1630-g4b94154 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 (commit) from b889b44f1d632810662359f6becce869056a076c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 Author: Anthony Minessale Date: Thu Jan 27 10:34:05 2011 -0600 fix out of place parens in logic test diff --git a/src/switch_channel.c b/src/switch_channel.c index 918ad82..de472a9 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -2564,8 +2564,8 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_ring_ready_value(swi char *app; switch_event_t *event; - if (!switch_channel_test_flag(channel, CF_RING_READY) && !switch_channel_test_flag(channel, CF_EARLY_MEDIA && - !switch_channel_test_flag(channel, CF_ANSWERED))) { + if (!switch_channel_test_flag(channel, CF_RING_READY) && + !switch_channel_test_flag(channel, CF_EARLY_MEDIA) && !switch_channel_test_flag(channel, CF_ANSWERED)) { switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_channel_get_uuid(channel), SWITCH_LOG_NOTICE, "Ring-Ready %s!\n", channel->name); switch_channel_set_flag_value(channel, CF_RING_READY, rv); if (channel->caller_profile && channel->caller_profile->times) { ----------------------------------------------------------------------- Summary of changes: src/switch_channel.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Fri Jan 28 23:12:01 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 14:12:01 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1630-g4b94154 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 (commit) from b889b44f1d632810662359f6becce869056a076c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 Author: Anthony Minessale Date: Thu Jan 27 10:34:05 2011 -0600 fix out of place parens in logic test diff --git a/src/switch_channel.c b/src/switch_channel.c index 918ad82..de472a9 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -2564,8 +2564,8 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_ring_ready_value(swi char *app; switch_event_t *event; - if (!switch_channel_test_flag(channel, CF_RING_READY) && !switch_channel_test_flag(channel, CF_EARLY_MEDIA && - !switch_channel_test_flag(channel, CF_ANSWERED))) { + if (!switch_channel_test_flag(channel, CF_RING_READY) && + !switch_channel_test_flag(channel, CF_EARLY_MEDIA) && !switch_channel_test_flag(channel, CF_ANSWERED)) { switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_channel_get_uuid(channel), SWITCH_LOG_NOTICE, "Ring-Ready %s!\n", channel->name); switch_channel_set_flag_value(channel, CF_RING_READY, rv); if (channel->caller_profile && channel->caller_profile->times) { ----------------------------------------------------------------------- Summary of changes: src/switch_channel.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Fri Jan 28 23:14:31 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 14:14:31 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1630-g4b94154 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 (commit) from b889b44f1d632810662359f6becce869056a076c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 Author: Anthony Minessale Date: Thu Jan 27 10:34:05 2011 -0600 fix out of place parens in logic test diff --git a/src/switch_channel.c b/src/switch_channel.c index 918ad82..de472a9 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -2564,8 +2564,8 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_ring_ready_value(swi char *app; switch_event_t *event; - if (!switch_channel_test_flag(channel, CF_RING_READY) && !switch_channel_test_flag(channel, CF_EARLY_MEDIA && - !switch_channel_test_flag(channel, CF_ANSWERED))) { + if (!switch_channel_test_flag(channel, CF_RING_READY) && + !switch_channel_test_flag(channel, CF_EARLY_MEDIA) && !switch_channel_test_flag(channel, CF_ANSWERED)) { switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_channel_get_uuid(channel), SWITCH_LOG_NOTICE, "Ring-Ready %s!\n", channel->name); switch_channel_set_flag_value(channel, CF_RING_READY, rv); if (channel->caller_profile && channel->caller_profile->times) { ----------------------------------------------------------------------- Summary of changes: src/switch_channel.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Fri Jan 28 23:14:31 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 14:14:31 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1630-g4b94154 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 (commit) from b889b44f1d632810662359f6becce869056a076c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 Author: Anthony Minessale Date: Thu Jan 27 10:34:05 2011 -0600 fix out of place parens in logic test diff --git a/src/switch_channel.c b/src/switch_channel.c index 918ad82..de472a9 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -2564,8 +2564,8 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_ring_ready_value(swi char *app; switch_event_t *event; - if (!switch_channel_test_flag(channel, CF_RING_READY) && !switch_channel_test_flag(channel, CF_EARLY_MEDIA && - !switch_channel_test_flag(channel, CF_ANSWERED))) { + if (!switch_channel_test_flag(channel, CF_RING_READY) && + !switch_channel_test_flag(channel, CF_EARLY_MEDIA) && !switch_channel_test_flag(channel, CF_ANSWERED)) { switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_channel_get_uuid(channel), SWITCH_LOG_NOTICE, "Ring-Ready %s!\n", channel->name); switch_channel_set_flag_value(channel, CF_RING_READY, rv); if (channel->caller_profile && channel->caller_profile->times) { ----------------------------------------------------------------------- Summary of changes: src/switch_channel.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Fri Jan 28 23:46:49 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 14:46:49 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1630-g4b94154 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 (commit) from b889b44f1d632810662359f6becce869056a076c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 Author: Anthony Minessale Date: Thu Jan 27 10:34:05 2011 -0600 fix out of place parens in logic test diff --git a/src/switch_channel.c b/src/switch_channel.c index 918ad82..de472a9 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -2564,8 +2564,8 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_ring_ready_value(swi char *app; switch_event_t *event; - if (!switch_channel_test_flag(channel, CF_RING_READY) && !switch_channel_test_flag(channel, CF_EARLY_MEDIA && - !switch_channel_test_flag(channel, CF_ANSWERED))) { + if (!switch_channel_test_flag(channel, CF_RING_READY) && + !switch_channel_test_flag(channel, CF_EARLY_MEDIA) && !switch_channel_test_flag(channel, CF_ANSWERED)) { switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_channel_get_uuid(channel), SWITCH_LOG_NOTICE, "Ring-Ready %s!\n", channel->name); switch_channel_set_flag_value(channel, CF_RING_READY, rv); if (channel->caller_profile && channel->caller_profile->times) { ----------------------------------------------------------------------- Summary of changes: src/switch_channel.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Fri Jan 28 23:48:11 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 14:48:11 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1630-g4b94154 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 (commit) from b889b44f1d632810662359f6becce869056a076c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 Author: Anthony Minessale Date: Thu Jan 27 10:34:05 2011 -0600 fix out of place parens in logic test diff --git a/src/switch_channel.c b/src/switch_channel.c index 918ad82..de472a9 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -2564,8 +2564,8 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_ring_ready_value(swi char *app; switch_event_t *event; - if (!switch_channel_test_flag(channel, CF_RING_READY) && !switch_channel_test_flag(channel, CF_EARLY_MEDIA && - !switch_channel_test_flag(channel, CF_ANSWERED))) { + if (!switch_channel_test_flag(channel, CF_RING_READY) && + !switch_channel_test_flag(channel, CF_EARLY_MEDIA) && !switch_channel_test_flag(channel, CF_ANSWERED)) { switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_channel_get_uuid(channel), SWITCH_LOG_NOTICE, "Ring-Ready %s!\n", channel->name); switch_channel_set_flag_value(channel, CF_RING_READY, rv); if (channel->caller_profile && channel->caller_profile->times) { ----------------------------------------------------------------------- Summary of changes: src/switch_channel.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Fri Jan 28 23:49:12 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 14:49:12 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1630-g4b94154 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 (commit) from b889b44f1d632810662359f6becce869056a076c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 Author: Anthony Minessale Date: Thu Jan 27 10:34:05 2011 -0600 fix out of place parens in logic test diff --git a/src/switch_channel.c b/src/switch_channel.c index 918ad82..de472a9 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -2564,8 +2564,8 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_ring_ready_value(swi char *app; switch_event_t *event; - if (!switch_channel_test_flag(channel, CF_RING_READY) && !switch_channel_test_flag(channel, CF_EARLY_MEDIA && - !switch_channel_test_flag(channel, CF_ANSWERED))) { + if (!switch_channel_test_flag(channel, CF_RING_READY) && + !switch_channel_test_flag(channel, CF_EARLY_MEDIA) && !switch_channel_test_flag(channel, CF_ANSWERED)) { switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_channel_get_uuid(channel), SWITCH_LOG_NOTICE, "Ring-Ready %s!\n", channel->name); switch_channel_set_flag_value(channel, CF_RING_READY, rv); if (channel->caller_profile && channel->caller_profile->times) { ----------------------------------------------------------------------- Summary of changes: src/switch_channel.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Fri Jan 28 23:50:44 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 14:50:44 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1630-g4b94154 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 (commit) from b889b44f1d632810662359f6becce869056a076c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 Author: Anthony Minessale Date: Thu Jan 27 10:34:05 2011 -0600 fix out of place parens in logic test diff --git a/src/switch_channel.c b/src/switch_channel.c index 918ad82..de472a9 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -2564,8 +2564,8 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_ring_ready_value(swi char *app; switch_event_t *event; - if (!switch_channel_test_flag(channel, CF_RING_READY) && !switch_channel_test_flag(channel, CF_EARLY_MEDIA && - !switch_channel_test_flag(channel, CF_ANSWERED))) { + if (!switch_channel_test_flag(channel, CF_RING_READY) && + !switch_channel_test_flag(channel, CF_EARLY_MEDIA) && !switch_channel_test_flag(channel, CF_ANSWERED)) { switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_channel_get_uuid(channel), SWITCH_LOG_NOTICE, "Ring-Ready %s!\n", channel->name); switch_channel_set_flag_value(channel, CF_RING_READY, rv); if (channel->caller_profile && channel->caller_profile->times) { ----------------------------------------------------------------------- Summary of changes: src/switch_channel.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Fri Jan 28 23:52:09 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 14:52:09 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1630-g4b94154 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 (commit) from b889b44f1d632810662359f6becce869056a076c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 Author: Anthony Minessale Date: Thu Jan 27 10:34:05 2011 -0600 fix out of place parens in logic test diff --git a/src/switch_channel.c b/src/switch_channel.c index 918ad82..de472a9 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -2564,8 +2564,8 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_ring_ready_value(swi char *app; switch_event_t *event; - if (!switch_channel_test_flag(channel, CF_RING_READY) && !switch_channel_test_flag(channel, CF_EARLY_MEDIA && - !switch_channel_test_flag(channel, CF_ANSWERED))) { + if (!switch_channel_test_flag(channel, CF_RING_READY) && + !switch_channel_test_flag(channel, CF_EARLY_MEDIA) && !switch_channel_test_flag(channel, CF_ANSWERED)) { switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_channel_get_uuid(channel), SWITCH_LOG_NOTICE, "Ring-Ready %s!\n", channel->name); switch_channel_set_flag_value(channel, CF_RING_READY, rv); if (channel->caller_profile && channel->caller_profile->times) { ----------------------------------------------------------------------- Summary of changes: src/switch_channel.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Fri Jan 28 23:52:12 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 14:52:12 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1635-g314a2a1 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 314a2a1e2061ef321fa5f9b32a9c70ef0040cdb8 (commit) from 48c02b7cd2770f6aee1d6e89f5ecfe207231f398 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 314a2a1e2061ef321fa5f9b32a9c70ef0040cdb8 Author: Brian West Date: Thu Jan 27 10:40:49 2011 -0600 FS-3004 diff --git a/src/mod/applications/mod_spandsp/mod_spandsp_fax.c b/src/mod/applications/mod_spandsp/mod_spandsp_fax.c index 21c6a68..4dd936b 100644 --- a/src/mod/applications/mod_spandsp/mod_spandsp_fax.c +++ b/src/mod/applications/mod_spandsp/mod_spandsp_fax.c @@ -40,6 +40,9 @@ #define MAX_FEC_ENTRIES 4 #define MAX_FEC_SPAN 4 +#define SPANDSP_EVENT_TXFAXRESULT "spandsp::txfaxresult" +#define SPANDSP_EVENT_RXFAXRESULT "spandsp::rxfaxresult" + /***************************************************************************** OUR DEFINES AND STRUCTS *****************************************************************************/ @@ -305,7 +308,14 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_core_session_t *session; switch_channel_t *channel; pvt_t *pvt; - char *tmp; + char *fax_document_transferred_pages = NULL; + char *fax_document_total_pages = NULL; + char *fax_image_resolution = NULL; + char *fax_image_size = NULL; + char *fax_bad_rows = NULL; + char *fax_transfer_rate = NULL; + char *fax_result_code = NULL; + switch_event_t *event; pvt = (pvt_t *) user_data; switch_assert(pvt); @@ -353,13 +363,12 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "==============================================================================\n"); /* - Set our channel variables + Set our channel variables, variables are also used in event */ - tmp = switch_mprintf("%i", result); - if (tmp) { - switch_channel_set_variable(channel, "fax_result_code", tmp); - switch_safe_free(tmp); + fax_result_code = switch_core_session_sprintf(session, "%i", result); + if (fax_result_code) { + switch_channel_set_variable(channel, "fax_result_code", fax_result_code); } switch_channel_set_variable(channel, "fax_result_text", t30_completion_code_to_str(result)); @@ -368,49 +377,56 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_channel_set_variable(channel, "fax_local_station_id", local_ident); switch_channel_set_variable(channel, "fax_remote_station_id", far_ident); - tmp = switch_mprintf("%i", pvt->app_mode == FUNCTION_TX ? t.pages_tx : t.pages_rx); - if (tmp) { - switch_channel_set_variable(channel, "fax_document_transferred_pages", tmp); - switch_safe_free(tmp); + fax_document_transferred_pages = switch_core_session_sprintf(session, "%i", pvt->app_mode == FUNCTION_TX ? t.pages_tx : t.pages_rx); + if (fax_document_transferred_pages) { + switch_channel_set_variable(channel, "fax_document_transferred_pages", fax_document_transferred_pages); } - tmp = switch_mprintf("%i", t.pages_in_file); - if (tmp) { - switch_channel_set_variable(channel, "fax_document_total_pages", tmp); - switch_safe_free(tmp); + fax_document_total_pages = switch_core_session_sprintf(session, "%i", t.pages_in_file); + if (fax_document_total_pages) { + switch_channel_set_variable(channel, "fax_document_total_pages", fax_document_total_pages); } - tmp = switch_mprintf("%ix%i", t.x_resolution, t.y_resolution); - if (tmp) { - switch_channel_set_variable(channel, "fax_image_resolution", tmp); - switch_safe_free(tmp); + fax_image_resolution = switch_core_session_sprintf(session, "%ix%i", t.x_resolution, t.y_resolution); + if (fax_image_resolution) { + switch_channel_set_variable(channel, "fax_image_resolution", fax_image_resolution); } - tmp = switch_mprintf("%d", t.image_size); - if (tmp) { - switch_channel_set_variable(channel, "fax_image_size", tmp); - switch_safe_free(tmp); + fax_image_size = switch_core_session_sprintf(session, "%d", t.image_size); + if (fax_image_size) { + switch_channel_set_variable(channel, "fax_image_size", fax_image_size); } - tmp = switch_mprintf("%d", t.bad_rows); - if (tmp) { - switch_channel_set_variable(channel, "fax_bad_rows", tmp); - switch_safe_free(tmp); + fax_bad_rows = switch_core_session_sprintf(session, "%d", t.bad_rows); + if (fax_bad_rows) { + switch_channel_set_variable(channel, "fax_bad_rows", fax_bad_rows); } - tmp = switch_mprintf("%i", t.bit_rate); - if (tmp) { - switch_channel_set_variable(channel, "fax_transfer_rate", tmp); - switch_safe_free(tmp); + fax_transfer_rate = switch_core_session_sprintf(session, "%i", t.bit_rate); + if (fax_transfer_rate) { + switch_channel_set_variable(channel, "fax_transfer_rate", fax_transfer_rate); } /* switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); */ pvt->done = 1; - /* - TODO Fire events - */ + /* Fire event */ + + if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, pvt->app_mode == FUNCTION_TX ? SPANDSP_EVENT_TXFAXRESULT : SPANDSP_EVENT_RXFAXRESULT) == SWITCH_STATUS_SUCCESS) { + 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-document-total-pages", fax_document_total_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); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-bad-rows", fax_bad_rows); + 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-result-code", fax_result_code); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-result-text", t30_completion_code_to_str(result)); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-ecm-used", (t.error_correcting_mode) ? "on" : "off"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-local-station-id", local_ident); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-remote-station-id", far_ident); + switch_core_session_queue_private_event(session, &event, SWITCH_FALSE); + } } static int t38_tx_packet_handler(t38_core_state_t *s, void *user_data, const uint8_t *buf, int len, int count) @@ -1026,7 +1042,6 @@ void mod_spandsp_fax_process_fax(switch_core_session_t *session, const char *dat switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Fax TX filename not set.\n"); goto done; } else if (pvt->app_mode == FUNCTION_RX) { - char *fname; const char *prefix; switch_time_t time; @@ -1036,11 +1051,7 @@ void mod_spandsp_fax_process_fax(switch_core_session_t *session, const char *dat prefix = globals.prepend_string; } - fname = switch_mprintf("%s/%s-%ld-%ld.tif", globals.spool, prefix, globals.total_sessions, time); - if (fname) { - pvt->filename = switch_core_session_strdup(session, fname); - switch_safe_free(fname); - } else { + if (!(pvt->filename = switch_core_session_sprintf(session, "%s/%s-%ld-%ld.tif", globals.spool, prefix, globals.total_sessions, time))) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Cannot automatically set fax RX destination file\n"); goto done; } ----------------------------------------------------------------------- Summary of changes: src/mod/applications/mod_spandsp/mod_spandsp_fax.c | 89 +++++++++++--------- 1 files changed, 50 insertions(+), 39 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Sat Jan 29 00:00:40 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 15:00:40 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1630-g4b94154 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 (commit) from b889b44f1d632810662359f6becce869056a076c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 Author: Anthony Minessale Date: Thu Jan 27 10:34:05 2011 -0600 fix out of place parens in logic test diff --git a/src/switch_channel.c b/src/switch_channel.c index 918ad82..de472a9 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -2564,8 +2564,8 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_ring_ready_value(swi char *app; switch_event_t *event; - if (!switch_channel_test_flag(channel, CF_RING_READY) && !switch_channel_test_flag(channel, CF_EARLY_MEDIA && - !switch_channel_test_flag(channel, CF_ANSWERED))) { + if (!switch_channel_test_flag(channel, CF_RING_READY) && + !switch_channel_test_flag(channel, CF_EARLY_MEDIA) && !switch_channel_test_flag(channel, CF_ANSWERED)) { switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_channel_get_uuid(channel), SWITCH_LOG_NOTICE, "Ring-Ready %s!\n", channel->name); switch_channel_set_flag_value(channel, CF_RING_READY, rv); if (channel->caller_profile && channel->caller_profile->times) { ----------------------------------------------------------------------- Summary of changes: src/switch_channel.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Sat Jan 29 00:00:44 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 15:00:44 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1635-g314a2a1 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 314a2a1e2061ef321fa5f9b32a9c70ef0040cdb8 (commit) from 48c02b7cd2770f6aee1d6e89f5ecfe207231f398 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 314a2a1e2061ef321fa5f9b32a9c70ef0040cdb8 Author: Brian West Date: Thu Jan 27 10:40:49 2011 -0600 FS-3004 diff --git a/src/mod/applications/mod_spandsp/mod_spandsp_fax.c b/src/mod/applications/mod_spandsp/mod_spandsp_fax.c index 21c6a68..4dd936b 100644 --- a/src/mod/applications/mod_spandsp/mod_spandsp_fax.c +++ b/src/mod/applications/mod_spandsp/mod_spandsp_fax.c @@ -40,6 +40,9 @@ #define MAX_FEC_ENTRIES 4 #define MAX_FEC_SPAN 4 +#define SPANDSP_EVENT_TXFAXRESULT "spandsp::txfaxresult" +#define SPANDSP_EVENT_RXFAXRESULT "spandsp::rxfaxresult" + /***************************************************************************** OUR DEFINES AND STRUCTS *****************************************************************************/ @@ -305,7 +308,14 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_core_session_t *session; switch_channel_t *channel; pvt_t *pvt; - char *tmp; + char *fax_document_transferred_pages = NULL; + char *fax_document_total_pages = NULL; + char *fax_image_resolution = NULL; + char *fax_image_size = NULL; + char *fax_bad_rows = NULL; + char *fax_transfer_rate = NULL; + char *fax_result_code = NULL; + switch_event_t *event; pvt = (pvt_t *) user_data; switch_assert(pvt); @@ -353,13 +363,12 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "==============================================================================\n"); /* - Set our channel variables + Set our channel variables, variables are also used in event */ - tmp = switch_mprintf("%i", result); - if (tmp) { - switch_channel_set_variable(channel, "fax_result_code", tmp); - switch_safe_free(tmp); + fax_result_code = switch_core_session_sprintf(session, "%i", result); + if (fax_result_code) { + switch_channel_set_variable(channel, "fax_result_code", fax_result_code); } switch_channel_set_variable(channel, "fax_result_text", t30_completion_code_to_str(result)); @@ -368,49 +377,56 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_channel_set_variable(channel, "fax_local_station_id", local_ident); switch_channel_set_variable(channel, "fax_remote_station_id", far_ident); - tmp = switch_mprintf("%i", pvt->app_mode == FUNCTION_TX ? t.pages_tx : t.pages_rx); - if (tmp) { - switch_channel_set_variable(channel, "fax_document_transferred_pages", tmp); - switch_safe_free(tmp); + fax_document_transferred_pages = switch_core_session_sprintf(session, "%i", pvt->app_mode == FUNCTION_TX ? t.pages_tx : t.pages_rx); + if (fax_document_transferred_pages) { + switch_channel_set_variable(channel, "fax_document_transferred_pages", fax_document_transferred_pages); } - tmp = switch_mprintf("%i", t.pages_in_file); - if (tmp) { - switch_channel_set_variable(channel, "fax_document_total_pages", tmp); - switch_safe_free(tmp); + fax_document_total_pages = switch_core_session_sprintf(session, "%i", t.pages_in_file); + if (fax_document_total_pages) { + switch_channel_set_variable(channel, "fax_document_total_pages", fax_document_total_pages); } - tmp = switch_mprintf("%ix%i", t.x_resolution, t.y_resolution); - if (tmp) { - switch_channel_set_variable(channel, "fax_image_resolution", tmp); - switch_safe_free(tmp); + fax_image_resolution = switch_core_session_sprintf(session, "%ix%i", t.x_resolution, t.y_resolution); + if (fax_image_resolution) { + switch_channel_set_variable(channel, "fax_image_resolution", fax_image_resolution); } - tmp = switch_mprintf("%d", t.image_size); - if (tmp) { - switch_channel_set_variable(channel, "fax_image_size", tmp); - switch_safe_free(tmp); + fax_image_size = switch_core_session_sprintf(session, "%d", t.image_size); + if (fax_image_size) { + switch_channel_set_variable(channel, "fax_image_size", fax_image_size); } - tmp = switch_mprintf("%d", t.bad_rows); - if (tmp) { - switch_channel_set_variable(channel, "fax_bad_rows", tmp); - switch_safe_free(tmp); + fax_bad_rows = switch_core_session_sprintf(session, "%d", t.bad_rows); + if (fax_bad_rows) { + switch_channel_set_variable(channel, "fax_bad_rows", fax_bad_rows); } - tmp = switch_mprintf("%i", t.bit_rate); - if (tmp) { - switch_channel_set_variable(channel, "fax_transfer_rate", tmp); - switch_safe_free(tmp); + fax_transfer_rate = switch_core_session_sprintf(session, "%i", t.bit_rate); + if (fax_transfer_rate) { + switch_channel_set_variable(channel, "fax_transfer_rate", fax_transfer_rate); } /* switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); */ pvt->done = 1; - /* - TODO Fire events - */ + /* Fire event */ + + if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, pvt->app_mode == FUNCTION_TX ? SPANDSP_EVENT_TXFAXRESULT : SPANDSP_EVENT_RXFAXRESULT) == SWITCH_STATUS_SUCCESS) { + 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-document-total-pages", fax_document_total_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); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-bad-rows", fax_bad_rows); + 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-result-code", fax_result_code); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-result-text", t30_completion_code_to_str(result)); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-ecm-used", (t.error_correcting_mode) ? "on" : "off"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-local-station-id", local_ident); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-remote-station-id", far_ident); + switch_core_session_queue_private_event(session, &event, SWITCH_FALSE); + } } static int t38_tx_packet_handler(t38_core_state_t *s, void *user_data, const uint8_t *buf, int len, int count) @@ -1026,7 +1042,6 @@ void mod_spandsp_fax_process_fax(switch_core_session_t *session, const char *dat switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Fax TX filename not set.\n"); goto done; } else if (pvt->app_mode == FUNCTION_RX) { - char *fname; const char *prefix; switch_time_t time; @@ -1036,11 +1051,7 @@ void mod_spandsp_fax_process_fax(switch_core_session_t *session, const char *dat prefix = globals.prepend_string; } - fname = switch_mprintf("%s/%s-%ld-%ld.tif", globals.spool, prefix, globals.total_sessions, time); - if (fname) { - pvt->filename = switch_core_session_strdup(session, fname); - switch_safe_free(fname); - } else { + if (!(pvt->filename = switch_core_session_sprintf(session, "%s/%s-%ld-%ld.tif", globals.spool, prefix, globals.total_sessions, time))) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Cannot automatically set fax RX destination file\n"); goto done; } ----------------------------------------------------------------------- Summary of changes: src/mod/applications/mod_spandsp/mod_spandsp_fax.c | 89 +++++++++++--------- 1 files changed, 50 insertions(+), 39 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Sat Jan 29 00:03:34 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 15:03:34 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1630-g4b94154 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 (commit) from b889b44f1d632810662359f6becce869056a076c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 Author: Anthony Minessale Date: Thu Jan 27 10:34:05 2011 -0600 fix out of place parens in logic test diff --git a/src/switch_channel.c b/src/switch_channel.c index 918ad82..de472a9 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -2564,8 +2564,8 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_ring_ready_value(swi char *app; switch_event_t *event; - if (!switch_channel_test_flag(channel, CF_RING_READY) && !switch_channel_test_flag(channel, CF_EARLY_MEDIA && - !switch_channel_test_flag(channel, CF_ANSWERED))) { + if (!switch_channel_test_flag(channel, CF_RING_READY) && + !switch_channel_test_flag(channel, CF_EARLY_MEDIA) && !switch_channel_test_flag(channel, CF_ANSWERED)) { switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_channel_get_uuid(channel), SWITCH_LOG_NOTICE, "Ring-Ready %s!\n", channel->name); switch_channel_set_flag_value(channel, CF_RING_READY, rv); if (channel->caller_profile && channel->caller_profile->times) { ----------------------------------------------------------------------- Summary of changes: src/switch_channel.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Sat Jan 29 00:03:53 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 15:03:53 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1635-g314a2a1 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 314a2a1e2061ef321fa5f9b32a9c70ef0040cdb8 (commit) from 48c02b7cd2770f6aee1d6e89f5ecfe207231f398 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 314a2a1e2061ef321fa5f9b32a9c70ef0040cdb8 Author: Brian West Date: Thu Jan 27 10:40:49 2011 -0600 FS-3004 diff --git a/src/mod/applications/mod_spandsp/mod_spandsp_fax.c b/src/mod/applications/mod_spandsp/mod_spandsp_fax.c index 21c6a68..4dd936b 100644 --- a/src/mod/applications/mod_spandsp/mod_spandsp_fax.c +++ b/src/mod/applications/mod_spandsp/mod_spandsp_fax.c @@ -40,6 +40,9 @@ #define MAX_FEC_ENTRIES 4 #define MAX_FEC_SPAN 4 +#define SPANDSP_EVENT_TXFAXRESULT "spandsp::txfaxresult" +#define SPANDSP_EVENT_RXFAXRESULT "spandsp::rxfaxresult" + /***************************************************************************** OUR DEFINES AND STRUCTS *****************************************************************************/ @@ -305,7 +308,14 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_core_session_t *session; switch_channel_t *channel; pvt_t *pvt; - char *tmp; + char *fax_document_transferred_pages = NULL; + char *fax_document_total_pages = NULL; + char *fax_image_resolution = NULL; + char *fax_image_size = NULL; + char *fax_bad_rows = NULL; + char *fax_transfer_rate = NULL; + char *fax_result_code = NULL; + switch_event_t *event; pvt = (pvt_t *) user_data; switch_assert(pvt); @@ -353,13 +363,12 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "==============================================================================\n"); /* - Set our channel variables + Set our channel variables, variables are also used in event */ - tmp = switch_mprintf("%i", result); - if (tmp) { - switch_channel_set_variable(channel, "fax_result_code", tmp); - switch_safe_free(tmp); + fax_result_code = switch_core_session_sprintf(session, "%i", result); + if (fax_result_code) { + switch_channel_set_variable(channel, "fax_result_code", fax_result_code); } switch_channel_set_variable(channel, "fax_result_text", t30_completion_code_to_str(result)); @@ -368,49 +377,56 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_channel_set_variable(channel, "fax_local_station_id", local_ident); switch_channel_set_variable(channel, "fax_remote_station_id", far_ident); - tmp = switch_mprintf("%i", pvt->app_mode == FUNCTION_TX ? t.pages_tx : t.pages_rx); - if (tmp) { - switch_channel_set_variable(channel, "fax_document_transferred_pages", tmp); - switch_safe_free(tmp); + fax_document_transferred_pages = switch_core_session_sprintf(session, "%i", pvt->app_mode == FUNCTION_TX ? t.pages_tx : t.pages_rx); + if (fax_document_transferred_pages) { + switch_channel_set_variable(channel, "fax_document_transferred_pages", fax_document_transferred_pages); } - tmp = switch_mprintf("%i", t.pages_in_file); - if (tmp) { - switch_channel_set_variable(channel, "fax_document_total_pages", tmp); - switch_safe_free(tmp); + fax_document_total_pages = switch_core_session_sprintf(session, "%i", t.pages_in_file); + if (fax_document_total_pages) { + switch_channel_set_variable(channel, "fax_document_total_pages", fax_document_total_pages); } - tmp = switch_mprintf("%ix%i", t.x_resolution, t.y_resolution); - if (tmp) { - switch_channel_set_variable(channel, "fax_image_resolution", tmp); - switch_safe_free(tmp); + fax_image_resolution = switch_core_session_sprintf(session, "%ix%i", t.x_resolution, t.y_resolution); + if (fax_image_resolution) { + switch_channel_set_variable(channel, "fax_image_resolution", fax_image_resolution); } - tmp = switch_mprintf("%d", t.image_size); - if (tmp) { - switch_channel_set_variable(channel, "fax_image_size", tmp); - switch_safe_free(tmp); + fax_image_size = switch_core_session_sprintf(session, "%d", t.image_size); + if (fax_image_size) { + switch_channel_set_variable(channel, "fax_image_size", fax_image_size); } - tmp = switch_mprintf("%d", t.bad_rows); - if (tmp) { - switch_channel_set_variable(channel, "fax_bad_rows", tmp); - switch_safe_free(tmp); + fax_bad_rows = switch_core_session_sprintf(session, "%d", t.bad_rows); + if (fax_bad_rows) { + switch_channel_set_variable(channel, "fax_bad_rows", fax_bad_rows); } - tmp = switch_mprintf("%i", t.bit_rate); - if (tmp) { - switch_channel_set_variable(channel, "fax_transfer_rate", tmp); - switch_safe_free(tmp); + fax_transfer_rate = switch_core_session_sprintf(session, "%i", t.bit_rate); + if (fax_transfer_rate) { + switch_channel_set_variable(channel, "fax_transfer_rate", fax_transfer_rate); } /* switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); */ pvt->done = 1; - /* - TODO Fire events - */ + /* Fire event */ + + if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, pvt->app_mode == FUNCTION_TX ? SPANDSP_EVENT_TXFAXRESULT : SPANDSP_EVENT_RXFAXRESULT) == SWITCH_STATUS_SUCCESS) { + 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-document-total-pages", fax_document_total_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); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-bad-rows", fax_bad_rows); + 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-result-code", fax_result_code); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-result-text", t30_completion_code_to_str(result)); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-ecm-used", (t.error_correcting_mode) ? "on" : "off"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-local-station-id", local_ident); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-remote-station-id", far_ident); + switch_core_session_queue_private_event(session, &event, SWITCH_FALSE); + } } static int t38_tx_packet_handler(t38_core_state_t *s, void *user_data, const uint8_t *buf, int len, int count) @@ -1026,7 +1042,6 @@ void mod_spandsp_fax_process_fax(switch_core_session_t *session, const char *dat switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Fax TX filename not set.\n"); goto done; } else if (pvt->app_mode == FUNCTION_RX) { - char *fname; const char *prefix; switch_time_t time; @@ -1036,11 +1051,7 @@ void mod_spandsp_fax_process_fax(switch_core_session_t *session, const char *dat prefix = globals.prepend_string; } - fname = switch_mprintf("%s/%s-%ld-%ld.tif", globals.spool, prefix, globals.total_sessions, time); - if (fname) { - pvt->filename = switch_core_session_strdup(session, fname); - switch_safe_free(fname); - } else { + if (!(pvt->filename = switch_core_session_sprintf(session, "%s/%s-%ld-%ld.tif", globals.spool, prefix, globals.total_sessions, time))) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Cannot automatically set fax RX destination file\n"); goto done; } ----------------------------------------------------------------------- Summary of changes: src/mod/applications/mod_spandsp/mod_spandsp_fax.c | 89 +++++++++++--------- 1 files changed, 50 insertions(+), 39 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Sat Jan 29 00:05:49 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 15:05:49 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1630-g4b94154 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 (commit) from b889b44f1d632810662359f6becce869056a076c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 Author: Anthony Minessale Date: Thu Jan 27 10:34:05 2011 -0600 fix out of place parens in logic test diff --git a/src/switch_channel.c b/src/switch_channel.c index 918ad82..de472a9 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -2564,8 +2564,8 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_ring_ready_value(swi char *app; switch_event_t *event; - if (!switch_channel_test_flag(channel, CF_RING_READY) && !switch_channel_test_flag(channel, CF_EARLY_MEDIA && - !switch_channel_test_flag(channel, CF_ANSWERED))) { + if (!switch_channel_test_flag(channel, CF_RING_READY) && + !switch_channel_test_flag(channel, CF_EARLY_MEDIA) && !switch_channel_test_flag(channel, CF_ANSWERED)) { switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_channel_get_uuid(channel), SWITCH_LOG_NOTICE, "Ring-Ready %s!\n", channel->name); switch_channel_set_flag_value(channel, CF_RING_READY, rv); if (channel->caller_profile && channel->caller_profile->times) { ----------------------------------------------------------------------- Summary of changes: src/switch_channel.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Sat Jan 29 00:06:07 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 15:06:07 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1635-g314a2a1 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 314a2a1e2061ef321fa5f9b32a9c70ef0040cdb8 (commit) from 48c02b7cd2770f6aee1d6e89f5ecfe207231f398 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 314a2a1e2061ef321fa5f9b32a9c70ef0040cdb8 Author: Brian West Date: Thu Jan 27 10:40:49 2011 -0600 FS-3004 diff --git a/src/mod/applications/mod_spandsp/mod_spandsp_fax.c b/src/mod/applications/mod_spandsp/mod_spandsp_fax.c index 21c6a68..4dd936b 100644 --- a/src/mod/applications/mod_spandsp/mod_spandsp_fax.c +++ b/src/mod/applications/mod_spandsp/mod_spandsp_fax.c @@ -40,6 +40,9 @@ #define MAX_FEC_ENTRIES 4 #define MAX_FEC_SPAN 4 +#define SPANDSP_EVENT_TXFAXRESULT "spandsp::txfaxresult" +#define SPANDSP_EVENT_RXFAXRESULT "spandsp::rxfaxresult" + /***************************************************************************** OUR DEFINES AND STRUCTS *****************************************************************************/ @@ -305,7 +308,14 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_core_session_t *session; switch_channel_t *channel; pvt_t *pvt; - char *tmp; + char *fax_document_transferred_pages = NULL; + char *fax_document_total_pages = NULL; + char *fax_image_resolution = NULL; + char *fax_image_size = NULL; + char *fax_bad_rows = NULL; + char *fax_transfer_rate = NULL; + char *fax_result_code = NULL; + switch_event_t *event; pvt = (pvt_t *) user_data; switch_assert(pvt); @@ -353,13 +363,12 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "==============================================================================\n"); /* - Set our channel variables + Set our channel variables, variables are also used in event */ - tmp = switch_mprintf("%i", result); - if (tmp) { - switch_channel_set_variable(channel, "fax_result_code", tmp); - switch_safe_free(tmp); + fax_result_code = switch_core_session_sprintf(session, "%i", result); + if (fax_result_code) { + switch_channel_set_variable(channel, "fax_result_code", fax_result_code); } switch_channel_set_variable(channel, "fax_result_text", t30_completion_code_to_str(result)); @@ -368,49 +377,56 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_channel_set_variable(channel, "fax_local_station_id", local_ident); switch_channel_set_variable(channel, "fax_remote_station_id", far_ident); - tmp = switch_mprintf("%i", pvt->app_mode == FUNCTION_TX ? t.pages_tx : t.pages_rx); - if (tmp) { - switch_channel_set_variable(channel, "fax_document_transferred_pages", tmp); - switch_safe_free(tmp); + fax_document_transferred_pages = switch_core_session_sprintf(session, "%i", pvt->app_mode == FUNCTION_TX ? t.pages_tx : t.pages_rx); + if (fax_document_transferred_pages) { + switch_channel_set_variable(channel, "fax_document_transferred_pages", fax_document_transferred_pages); } - tmp = switch_mprintf("%i", t.pages_in_file); - if (tmp) { - switch_channel_set_variable(channel, "fax_document_total_pages", tmp); - switch_safe_free(tmp); + fax_document_total_pages = switch_core_session_sprintf(session, "%i", t.pages_in_file); + if (fax_document_total_pages) { + switch_channel_set_variable(channel, "fax_document_total_pages", fax_document_total_pages); } - tmp = switch_mprintf("%ix%i", t.x_resolution, t.y_resolution); - if (tmp) { - switch_channel_set_variable(channel, "fax_image_resolution", tmp); - switch_safe_free(tmp); + fax_image_resolution = switch_core_session_sprintf(session, "%ix%i", t.x_resolution, t.y_resolution); + if (fax_image_resolution) { + switch_channel_set_variable(channel, "fax_image_resolution", fax_image_resolution); } - tmp = switch_mprintf("%d", t.image_size); - if (tmp) { - switch_channel_set_variable(channel, "fax_image_size", tmp); - switch_safe_free(tmp); + fax_image_size = switch_core_session_sprintf(session, "%d", t.image_size); + if (fax_image_size) { + switch_channel_set_variable(channel, "fax_image_size", fax_image_size); } - tmp = switch_mprintf("%d", t.bad_rows); - if (tmp) { - switch_channel_set_variable(channel, "fax_bad_rows", tmp); - switch_safe_free(tmp); + fax_bad_rows = switch_core_session_sprintf(session, "%d", t.bad_rows); + if (fax_bad_rows) { + switch_channel_set_variable(channel, "fax_bad_rows", fax_bad_rows); } - tmp = switch_mprintf("%i", t.bit_rate); - if (tmp) { - switch_channel_set_variable(channel, "fax_transfer_rate", tmp); - switch_safe_free(tmp); + fax_transfer_rate = switch_core_session_sprintf(session, "%i", t.bit_rate); + if (fax_transfer_rate) { + switch_channel_set_variable(channel, "fax_transfer_rate", fax_transfer_rate); } /* switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); */ pvt->done = 1; - /* - TODO Fire events - */ + /* Fire event */ + + if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, pvt->app_mode == FUNCTION_TX ? SPANDSP_EVENT_TXFAXRESULT : SPANDSP_EVENT_RXFAXRESULT) == SWITCH_STATUS_SUCCESS) { + 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-document-total-pages", fax_document_total_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); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-bad-rows", fax_bad_rows); + 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-result-code", fax_result_code); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-result-text", t30_completion_code_to_str(result)); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-ecm-used", (t.error_correcting_mode) ? "on" : "off"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-local-station-id", local_ident); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-remote-station-id", far_ident); + switch_core_session_queue_private_event(session, &event, SWITCH_FALSE); + } } static int t38_tx_packet_handler(t38_core_state_t *s, void *user_data, const uint8_t *buf, int len, int count) @@ -1026,7 +1042,6 @@ void mod_spandsp_fax_process_fax(switch_core_session_t *session, const char *dat switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Fax TX filename not set.\n"); goto done; } else if (pvt->app_mode == FUNCTION_RX) { - char *fname; const char *prefix; switch_time_t time; @@ -1036,11 +1051,7 @@ void mod_spandsp_fax_process_fax(switch_core_session_t *session, const char *dat prefix = globals.prepend_string; } - fname = switch_mprintf("%s/%s-%ld-%ld.tif", globals.spool, prefix, globals.total_sessions, time); - if (fname) { - pvt->filename = switch_core_session_strdup(session, fname); - switch_safe_free(fname); - } else { + if (!(pvt->filename = switch_core_session_sprintf(session, "%s/%s-%ld-%ld.tif", globals.spool, prefix, globals.total_sessions, time))) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Cannot automatically set fax RX destination file\n"); goto done; } ----------------------------------------------------------------------- Summary of changes: src/mod/applications/mod_spandsp/mod_spandsp_fax.c | 89 +++++++++++--------- 1 files changed, 50 insertions(+), 39 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Sat Jan 29 00:08:51 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 15:08:51 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1630-g4b94154 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 (commit) from b889b44f1d632810662359f6becce869056a076c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 Author: Anthony Minessale Date: Thu Jan 27 10:34:05 2011 -0600 fix out of place parens in logic test diff --git a/src/switch_channel.c b/src/switch_channel.c index 918ad82..de472a9 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -2564,8 +2564,8 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_ring_ready_value(swi char *app; switch_event_t *event; - if (!switch_channel_test_flag(channel, CF_RING_READY) && !switch_channel_test_flag(channel, CF_EARLY_MEDIA && - !switch_channel_test_flag(channel, CF_ANSWERED))) { + if (!switch_channel_test_flag(channel, CF_RING_READY) && + !switch_channel_test_flag(channel, CF_EARLY_MEDIA) && !switch_channel_test_flag(channel, CF_ANSWERED)) { switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_channel_get_uuid(channel), SWITCH_LOG_NOTICE, "Ring-Ready %s!\n", channel->name); switch_channel_set_flag_value(channel, CF_RING_READY, rv); if (channel->caller_profile && channel->caller_profile->times) { ----------------------------------------------------------------------- Summary of changes: src/switch_channel.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Sat Jan 29 00:08:55 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 15:08:55 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1635-g314a2a1 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 314a2a1e2061ef321fa5f9b32a9c70ef0040cdb8 (commit) from 48c02b7cd2770f6aee1d6e89f5ecfe207231f398 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 314a2a1e2061ef321fa5f9b32a9c70ef0040cdb8 Author: Brian West Date: Thu Jan 27 10:40:49 2011 -0600 FS-3004 diff --git a/src/mod/applications/mod_spandsp/mod_spandsp_fax.c b/src/mod/applications/mod_spandsp/mod_spandsp_fax.c index 21c6a68..4dd936b 100644 --- a/src/mod/applications/mod_spandsp/mod_spandsp_fax.c +++ b/src/mod/applications/mod_spandsp/mod_spandsp_fax.c @@ -40,6 +40,9 @@ #define MAX_FEC_ENTRIES 4 #define MAX_FEC_SPAN 4 +#define SPANDSP_EVENT_TXFAXRESULT "spandsp::txfaxresult" +#define SPANDSP_EVENT_RXFAXRESULT "spandsp::rxfaxresult" + /***************************************************************************** OUR DEFINES AND STRUCTS *****************************************************************************/ @@ -305,7 +308,14 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_core_session_t *session; switch_channel_t *channel; pvt_t *pvt; - char *tmp; + char *fax_document_transferred_pages = NULL; + char *fax_document_total_pages = NULL; + char *fax_image_resolution = NULL; + char *fax_image_size = NULL; + char *fax_bad_rows = NULL; + char *fax_transfer_rate = NULL; + char *fax_result_code = NULL; + switch_event_t *event; pvt = (pvt_t *) user_data; switch_assert(pvt); @@ -353,13 +363,12 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "==============================================================================\n"); /* - Set our channel variables + Set our channel variables, variables are also used in event */ - tmp = switch_mprintf("%i", result); - if (tmp) { - switch_channel_set_variable(channel, "fax_result_code", tmp); - switch_safe_free(tmp); + fax_result_code = switch_core_session_sprintf(session, "%i", result); + if (fax_result_code) { + switch_channel_set_variable(channel, "fax_result_code", fax_result_code); } switch_channel_set_variable(channel, "fax_result_text", t30_completion_code_to_str(result)); @@ -368,49 +377,56 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_channel_set_variable(channel, "fax_local_station_id", local_ident); switch_channel_set_variable(channel, "fax_remote_station_id", far_ident); - tmp = switch_mprintf("%i", pvt->app_mode == FUNCTION_TX ? t.pages_tx : t.pages_rx); - if (tmp) { - switch_channel_set_variable(channel, "fax_document_transferred_pages", tmp); - switch_safe_free(tmp); + fax_document_transferred_pages = switch_core_session_sprintf(session, "%i", pvt->app_mode == FUNCTION_TX ? t.pages_tx : t.pages_rx); + if (fax_document_transferred_pages) { + switch_channel_set_variable(channel, "fax_document_transferred_pages", fax_document_transferred_pages); } - tmp = switch_mprintf("%i", t.pages_in_file); - if (tmp) { - switch_channel_set_variable(channel, "fax_document_total_pages", tmp); - switch_safe_free(tmp); + fax_document_total_pages = switch_core_session_sprintf(session, "%i", t.pages_in_file); + if (fax_document_total_pages) { + switch_channel_set_variable(channel, "fax_document_total_pages", fax_document_total_pages); } - tmp = switch_mprintf("%ix%i", t.x_resolution, t.y_resolution); - if (tmp) { - switch_channel_set_variable(channel, "fax_image_resolution", tmp); - switch_safe_free(tmp); + fax_image_resolution = switch_core_session_sprintf(session, "%ix%i", t.x_resolution, t.y_resolution); + if (fax_image_resolution) { + switch_channel_set_variable(channel, "fax_image_resolution", fax_image_resolution); } - tmp = switch_mprintf("%d", t.image_size); - if (tmp) { - switch_channel_set_variable(channel, "fax_image_size", tmp); - switch_safe_free(tmp); + fax_image_size = switch_core_session_sprintf(session, "%d", t.image_size); + if (fax_image_size) { + switch_channel_set_variable(channel, "fax_image_size", fax_image_size); } - tmp = switch_mprintf("%d", t.bad_rows); - if (tmp) { - switch_channel_set_variable(channel, "fax_bad_rows", tmp); - switch_safe_free(tmp); + fax_bad_rows = switch_core_session_sprintf(session, "%d", t.bad_rows); + if (fax_bad_rows) { + switch_channel_set_variable(channel, "fax_bad_rows", fax_bad_rows); } - tmp = switch_mprintf("%i", t.bit_rate); - if (tmp) { - switch_channel_set_variable(channel, "fax_transfer_rate", tmp); - switch_safe_free(tmp); + fax_transfer_rate = switch_core_session_sprintf(session, "%i", t.bit_rate); + if (fax_transfer_rate) { + switch_channel_set_variable(channel, "fax_transfer_rate", fax_transfer_rate); } /* switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); */ pvt->done = 1; - /* - TODO Fire events - */ + /* Fire event */ + + if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, pvt->app_mode == FUNCTION_TX ? SPANDSP_EVENT_TXFAXRESULT : SPANDSP_EVENT_RXFAXRESULT) == SWITCH_STATUS_SUCCESS) { + 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-document-total-pages", fax_document_total_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); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-bad-rows", fax_bad_rows); + 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-result-code", fax_result_code); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-result-text", t30_completion_code_to_str(result)); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-ecm-used", (t.error_correcting_mode) ? "on" : "off"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-local-station-id", local_ident); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-remote-station-id", far_ident); + switch_core_session_queue_private_event(session, &event, SWITCH_FALSE); + } } static int t38_tx_packet_handler(t38_core_state_t *s, void *user_data, const uint8_t *buf, int len, int count) @@ -1026,7 +1042,6 @@ void mod_spandsp_fax_process_fax(switch_core_session_t *session, const char *dat switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Fax TX filename not set.\n"); goto done; } else if (pvt->app_mode == FUNCTION_RX) { - char *fname; const char *prefix; switch_time_t time; @@ -1036,11 +1051,7 @@ void mod_spandsp_fax_process_fax(switch_core_session_t *session, const char *dat prefix = globals.prepend_string; } - fname = switch_mprintf("%s/%s-%ld-%ld.tif", globals.spool, prefix, globals.total_sessions, time); - if (fname) { - pvt->filename = switch_core_session_strdup(session, fname); - switch_safe_free(fname); - } else { + if (!(pvt->filename = switch_core_session_sprintf(session, "%s/%s-%ld-%ld.tif", globals.spool, prefix, globals.total_sessions, time))) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Cannot automatically set fax RX destination file\n"); goto done; } ----------------------------------------------------------------------- Summary of changes: src/mod/applications/mod_spandsp/mod_spandsp_fax.c | 89 +++++++++++--------- 1 files changed, 50 insertions(+), 39 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Sat Jan 29 00:10:22 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 15:10:22 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1630-g4b94154 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 (commit) from b889b44f1d632810662359f6becce869056a076c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 Author: Anthony Minessale Date: Thu Jan 27 10:34:05 2011 -0600 fix out of place parens in logic test diff --git a/src/switch_channel.c b/src/switch_channel.c index 918ad82..de472a9 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -2564,8 +2564,8 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_ring_ready_value(swi char *app; switch_event_t *event; - if (!switch_channel_test_flag(channel, CF_RING_READY) && !switch_channel_test_flag(channel, CF_EARLY_MEDIA && - !switch_channel_test_flag(channel, CF_ANSWERED))) { + if (!switch_channel_test_flag(channel, CF_RING_READY) && + !switch_channel_test_flag(channel, CF_EARLY_MEDIA) && !switch_channel_test_flag(channel, CF_ANSWERED)) { switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_channel_get_uuid(channel), SWITCH_LOG_NOTICE, "Ring-Ready %s!\n", channel->name); switch_channel_set_flag_value(channel, CF_RING_READY, rv); if (channel->caller_profile && channel->caller_profile->times) { ----------------------------------------------------------------------- Summary of changes: src/switch_channel.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Sat Jan 29 00:10:26 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 15:10:26 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1635-g314a2a1 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 314a2a1e2061ef321fa5f9b32a9c70ef0040cdb8 (commit) from 48c02b7cd2770f6aee1d6e89f5ecfe207231f398 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 314a2a1e2061ef321fa5f9b32a9c70ef0040cdb8 Author: Brian West Date: Thu Jan 27 10:40:49 2011 -0600 FS-3004 diff --git a/src/mod/applications/mod_spandsp/mod_spandsp_fax.c b/src/mod/applications/mod_spandsp/mod_spandsp_fax.c index 21c6a68..4dd936b 100644 --- a/src/mod/applications/mod_spandsp/mod_spandsp_fax.c +++ b/src/mod/applications/mod_spandsp/mod_spandsp_fax.c @@ -40,6 +40,9 @@ #define MAX_FEC_ENTRIES 4 #define MAX_FEC_SPAN 4 +#define SPANDSP_EVENT_TXFAXRESULT "spandsp::txfaxresult" +#define SPANDSP_EVENT_RXFAXRESULT "spandsp::rxfaxresult" + /***************************************************************************** OUR DEFINES AND STRUCTS *****************************************************************************/ @@ -305,7 +308,14 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_core_session_t *session; switch_channel_t *channel; pvt_t *pvt; - char *tmp; + char *fax_document_transferred_pages = NULL; + char *fax_document_total_pages = NULL; + char *fax_image_resolution = NULL; + char *fax_image_size = NULL; + char *fax_bad_rows = NULL; + char *fax_transfer_rate = NULL; + char *fax_result_code = NULL; + switch_event_t *event; pvt = (pvt_t *) user_data; switch_assert(pvt); @@ -353,13 +363,12 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "==============================================================================\n"); /* - Set our channel variables + Set our channel variables, variables are also used in event */ - tmp = switch_mprintf("%i", result); - if (tmp) { - switch_channel_set_variable(channel, "fax_result_code", tmp); - switch_safe_free(tmp); + fax_result_code = switch_core_session_sprintf(session, "%i", result); + if (fax_result_code) { + switch_channel_set_variable(channel, "fax_result_code", fax_result_code); } switch_channel_set_variable(channel, "fax_result_text", t30_completion_code_to_str(result)); @@ -368,49 +377,56 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_channel_set_variable(channel, "fax_local_station_id", local_ident); switch_channel_set_variable(channel, "fax_remote_station_id", far_ident); - tmp = switch_mprintf("%i", pvt->app_mode == FUNCTION_TX ? t.pages_tx : t.pages_rx); - if (tmp) { - switch_channel_set_variable(channel, "fax_document_transferred_pages", tmp); - switch_safe_free(tmp); + fax_document_transferred_pages = switch_core_session_sprintf(session, "%i", pvt->app_mode == FUNCTION_TX ? t.pages_tx : t.pages_rx); + if (fax_document_transferred_pages) { + switch_channel_set_variable(channel, "fax_document_transferred_pages", fax_document_transferred_pages); } - tmp = switch_mprintf("%i", t.pages_in_file); - if (tmp) { - switch_channel_set_variable(channel, "fax_document_total_pages", tmp); - switch_safe_free(tmp); + fax_document_total_pages = switch_core_session_sprintf(session, "%i", t.pages_in_file); + if (fax_document_total_pages) { + switch_channel_set_variable(channel, "fax_document_total_pages", fax_document_total_pages); } - tmp = switch_mprintf("%ix%i", t.x_resolution, t.y_resolution); - if (tmp) { - switch_channel_set_variable(channel, "fax_image_resolution", tmp); - switch_safe_free(tmp); + fax_image_resolution = switch_core_session_sprintf(session, "%ix%i", t.x_resolution, t.y_resolution); + if (fax_image_resolution) { + switch_channel_set_variable(channel, "fax_image_resolution", fax_image_resolution); } - tmp = switch_mprintf("%d", t.image_size); - if (tmp) { - switch_channel_set_variable(channel, "fax_image_size", tmp); - switch_safe_free(tmp); + fax_image_size = switch_core_session_sprintf(session, "%d", t.image_size); + if (fax_image_size) { + switch_channel_set_variable(channel, "fax_image_size", fax_image_size); } - tmp = switch_mprintf("%d", t.bad_rows); - if (tmp) { - switch_channel_set_variable(channel, "fax_bad_rows", tmp); - switch_safe_free(tmp); + fax_bad_rows = switch_core_session_sprintf(session, "%d", t.bad_rows); + if (fax_bad_rows) { + switch_channel_set_variable(channel, "fax_bad_rows", fax_bad_rows); } - tmp = switch_mprintf("%i", t.bit_rate); - if (tmp) { - switch_channel_set_variable(channel, "fax_transfer_rate", tmp); - switch_safe_free(tmp); + fax_transfer_rate = switch_core_session_sprintf(session, "%i", t.bit_rate); + if (fax_transfer_rate) { + switch_channel_set_variable(channel, "fax_transfer_rate", fax_transfer_rate); } /* switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); */ pvt->done = 1; - /* - TODO Fire events - */ + /* Fire event */ + + if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, pvt->app_mode == FUNCTION_TX ? SPANDSP_EVENT_TXFAXRESULT : SPANDSP_EVENT_RXFAXRESULT) == SWITCH_STATUS_SUCCESS) { + 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-document-total-pages", fax_document_total_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); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-bad-rows", fax_bad_rows); + 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-result-code", fax_result_code); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-result-text", t30_completion_code_to_str(result)); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-ecm-used", (t.error_correcting_mode) ? "on" : "off"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-local-station-id", local_ident); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-remote-station-id", far_ident); + switch_core_session_queue_private_event(session, &event, SWITCH_FALSE); + } } static int t38_tx_packet_handler(t38_core_state_t *s, void *user_data, const uint8_t *buf, int len, int count) @@ -1026,7 +1042,6 @@ void mod_spandsp_fax_process_fax(switch_core_session_t *session, const char *dat switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Fax TX filename not set.\n"); goto done; } else if (pvt->app_mode == FUNCTION_RX) { - char *fname; const char *prefix; switch_time_t time; @@ -1036,11 +1051,7 @@ void mod_spandsp_fax_process_fax(switch_core_session_t *session, const char *dat prefix = globals.prepend_string; } - fname = switch_mprintf("%s/%s-%ld-%ld.tif", globals.spool, prefix, globals.total_sessions, time); - if (fname) { - pvt->filename = switch_core_session_strdup(session, fname); - switch_safe_free(fname); - } else { + if (!(pvt->filename = switch_core_session_sprintf(session, "%s/%s-%ld-%ld.tif", globals.spool, prefix, globals.total_sessions, time))) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Cannot automatically set fax RX destination file\n"); goto done; } ----------------------------------------------------------------------- Summary of changes: src/mod/applications/mod_spandsp/mod_spandsp_fax.c | 89 +++++++++++--------- 1 files changed, 50 insertions(+), 39 deletions(-) hooks/post-receive -- From git at svn.freeswitch.org Sat Jan 29 00:12:33 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Fri, 28 Jan 2011 15:12:33 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1647-g9986f4e Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 9986f4ebf2a0c40cc99bc7f9f03f2dec6ae74645 (commit) via 6d3abd41cadef3a2bff8175487c094c80d7d9cf7 (commit) from b3ac44f555a80f8278c5f915cfb36766903905a4 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 9986f4ebf2a0c40cc99bc7f9f03f2dec6ae74645 Merge: 6d3abd4 b3ac44f Author: Raymond Chandler Date: Fri Jan 28 16:12:07 2011 -0500 Merge branch 'master' of fs-git:freeswitch commit 6d3abd41cadef3a2bff8175487c094c80d7d9cf7 Author: Raymond Chandler Date: Fri Jan 28 16:11:55 2011 -0500 TEST-001 diff --git a/conf/freeswitch.xml b/conf/freeswitch.xml index 6ed99ef..5fc9402 100644 --- a/conf/freeswitch.xml +++ b/conf/freeswitch.xml @@ -63,4 +63,3 @@ - ----------------------------------------------------------------------- Summary of changes: conf/freeswitch.xml | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Sat Jan 29 00:40:25 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 15:40:25 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1645-g6d3abd4 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated discards b3ac44f555a80f8278c5f915cfb36766903905a4 (commit) via 6d3abd41cadef3a2bff8175487c094c80d7d9cf7 (commit) This update added new revisions after undoing existing revisions. That is to say, the old revision is not a strict subset of the new revision. This situation occurs when you --force push a change and generate a repository containing something like this: * -- * -- B -- O -- O -- O (b3ac44f555a80f8278c5f915cfb36766903905a4) \ N -- N -- N (6d3abd41cadef3a2bff8175487c094c80d7d9cf7) When this happens we assume that you've already had alert emails for all of the O revisions, and so we here report only the revisions in the N branch from the common base, B. Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 6d3abd41cadef3a2bff8175487c094c80d7d9cf7 Author: Raymond Chandler Date: Fri Jan 28 16:11:55 2011 -0500 TEST-001 diff --git a/conf/freeswitch.xml b/conf/freeswitch.xml index 6ed99ef..5fc9402 100644 --- a/conf/freeswitch.xml +++ b/conf/freeswitch.xml @@ -63,4 +63,3 @@ - ----------------------------------------------------------------------- Summary of changes: conf/freeswitch.xml | 1 - src/mod/event_handlers/mod_snmp/subagent.c | 27 ++++++--------------------- 2 files changed, 6 insertions(+), 22 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Sat Jan 29 00:40:28 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 15:40:28 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1647-g9986f4e Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 9986f4ebf2a0c40cc99bc7f9f03f2dec6ae74645 (commit) via b3ac44f555a80f8278c5f915cfb36766903905a4 (commit) from 6d3abd41cadef3a2bff8175487c094c80d7d9cf7 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 9986f4ebf2a0c40cc99bc7f9f03f2dec6ae74645 Merge: 6d3abd4 b3ac44f Author: Raymond Chandler Date: Fri Jan 28 16:12:07 2011 -0500 Merge branch 'master' of fs-git:freeswitch commit b3ac44f555a80f8278c5f915cfb36766903905a4 Author: Daniel Swarbrick Date: Fri Jan 28 20:36:06 2011 +0100 add support for getting current call count diff --git a/src/mod/event_handlers/mod_snmp/subagent.c b/src/mod/event_handlers/mod_snmp/subagent.c index 8f08baf..bad3dc6 100644 --- a/src/mod/event_handlers/mod_snmp/subagent.c +++ b/src/mod/event_handlers/mod_snmp/subagent.c @@ -49,6 +49,14 @@ void init_subagent(void) } +static int sql_count_callback(void *pArg, int argc, char **argv, char **columnNames) +{ + uint32_t *count = (uint32_t *) pArg; + *count = atoi(argv[0]); + return 0; +} + + int handle_identity(netsnmp_mib_handler *handler, netsnmp_handler_registration *reginfo, netsnmp_agent_request_info *reqinfo, netsnmp_request_info *requests) { netsnmp_request_info *request = NULL; @@ -113,13 +121,20 @@ int handle_systemStats(netsnmp_mib_handler *handler, netsnmp_handler_registratio snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val)); break; case SS_CURRENT_CALLS: - /* - * This is zero for now, since there is no convenient way to get total call - * count (not to be confused with session count), without touching the - * database. - */ - int_val = 0; + { + switch_cache_db_handle_t *dbh; + char sql[1024] = "", hostname[256] = ""; + + if (switch_core_db_handle(&dbh) != SWITCH_STATUS_SUCCESS) { + return SNMP_ERR_GENERR; + } + + gethostname(hostname, sizeof(hostname)); + sprintf(sql, "SELECT COUNT(*) FROM calls WHERE hostname='%s'", hostname); + switch_cache_db_execute_sql_callback(dbh, sql, sql_count_callback, &int_val, NULL); snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val)); + switch_cache_db_release_db_handle(&dbh); + } break; case SS_SESSIONS_PER_SECOND: switch_core_session_ctl(SCSC_LAST_SPS, &int_val); ----------------------------------------------------------------------- Summary of changes: src/mod/event_handlers/mod_snmp/subagent.c | 27 +++++++++++++++++++++------ 1 files changed, 21 insertions(+), 6 deletions(-) hooks/post-receive -- From git at svn.freeswitch.org Sat Jan 29 00:42:25 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Fri, 28 Jan 2011 15:42:25 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1648-ge6e4bce Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated discards 068d36a5c95c5a4143f423b7c36cbe6d5cea36d5 (commit) via e6e4bcea734fbfb54b901ff8b1107ddfe76b7010 (commit) This update added new revisions after undoing existing revisions. That is to say, the old revision is not a strict subset of the new revision. This situation occurs when you --force push a change and generate a repository containing something like this: * -- * -- B -- O -- O -- O (068d36a5c95c5a4143f423b7c36cbe6d5cea36d5) \ N -- N -- N (e6e4bcea734fbfb54b901ff8b1107ddfe76b7010) When this happens we assume that you've already had alert emails for all of the O revisions, and so we here report only the revisions in the N branch from the common base, B. Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit e6e4bcea734fbfb54b901ff8b1107ddfe76b7010 Author: Raymond Chandler Date: Fri Jan 28 16:42:15 2011 -0500 TEST-002 diff --git a/conf/freeswitch.xml b/conf/freeswitch.xml index 5fc9402..6914128 100644 --- a/conf/freeswitch.xml +++ b/conf/freeswitch.xml @@ -61,5 +61,4 @@ - ----------------------------------------------------------------------- Summary of changes: conf/freeswitch.xml | 1 - src/mod/event_handlers/mod_snmp/FREESWITCH-MIB | 84 ------------- src/mod/event_handlers/mod_snmp/mod_snmp.c | 2 +- src/mod/event_handlers/mod_snmp/subagent.c | 150 ++---------------------- src/mod/event_handlers/mod_snmp/subagent.h | 22 +---- 5 files changed, 12 insertions(+), 247 deletions(-) hooks/post-receive -- From git at svn.freeswitch.org Sat Jan 29 00:42:29 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Fri, 28 Jan 2011 15:42:29 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1650-gbe3483b Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via be3483b924a674e4c4f0f05734e7e4917634f3ca (commit) via 068d36a5c95c5a4143f423b7c36cbe6d5cea36d5 (commit) from e6e4bcea734fbfb54b901ff8b1107ddfe76b7010 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit be3483b924a674e4c4f0f05734e7e4917634f3ca Merge: e6e4bce 068d36a Author: Raymond Chandler Date: Fri Jan 28 16:42:20 2011 -0500 Merge branch 'master' of fs-git:freeswitch commit 068d36a5c95c5a4143f423b7c36cbe6d5cea36d5 Author: Daniel Swarbrick Date: Fri Jan 28 22:32:14 2011 +0100 partial implementation of channel list via snmp diff --git a/src/mod/event_handlers/mod_snmp/FREESWITCH-MIB b/src/mod/event_handlers/mod_snmp/FREESWITCH-MIB index 9584c8b..11c3999 100644 --- a/src/mod/event_handlers/mod_snmp/FREESWITCH-MIB +++ b/src/mod/event_handlers/mod_snmp/FREESWITCH-MIB @@ -107,4 +107,88 @@ maxSessionsPerSecond OBJECT-TYPE "Maximum permissible sessions per second" ::= { systemStats 7 } + +ChannelEntry ::= SEQUENCE { + chanUUID DisplayString, + chanDirection DisplayString, + chanCreated DisplayString, + chanName DisplayString, + chanState DisplayString, + chanCIDName DisplayString, + chanCIDNum DisplayString +} + +channelList OBJECT-TYPE + SYNTAX SEQUENCE OF ChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing a list of active channels" + ::= { core 9 } + +channelEntry OBJECT-TYPE + SYNTAX ChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A channel entry" + INDEX { chanIndex } + ::= { channelList 1 } + +chanUUID OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The channel UUID." + ::= { channelEntry 1 } + +chanDirection OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The channel direction." + ::= { channelEntry 2 } + +chanCreated OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel creation timestamp." + ::= { channelEntry 3 } + +chanName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The channel name." + ::= { channelEntry 4 } + +chanState OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The channel state." + ::= { channelEntry 5 } + +chanCIDName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The channel caller ID name." + ::= { channelEntry 6 } + +chanCIDNum OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The channel caller ID number." + ::= { channelEntry 7 } + END diff --git a/src/mod/event_handlers/mod_snmp/mod_snmp.c b/src/mod/event_handlers/mod_snmp/mod_snmp.c index 56c7be1..d415d4f 100644 --- a/src/mod/event_handlers/mod_snmp/mod_snmp.c +++ b/src/mod/event_handlers/mod_snmp/mod_snmp.c @@ -109,7 +109,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_snmp_load) */ netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_AGENTX_PING_INTERVAL, 2); - init_subagent(); + init_subagent(pool); init_snmp("mod_snmp"); return status; diff --git a/src/mod/event_handlers/mod_snmp/subagent.c b/src/mod/event_handlers/mod_snmp/subagent.c index bad3dc6..7b9faa7 100644 --- a/src/mod/event_handlers/mod_snmp/subagent.c +++ b/src/mod/event_handlers/mod_snmp/subagent.c @@ -36,27 +36,108 @@ #include #include "subagent.h" +netsnmp_table_registration_info *ch_table_info; +netsnmp_tdata *ch_table; +netsnmp_handler_registration *ch_reginfo; +uint32_t idx; -void init_subagent(void) + +static int sql_count_callback(void *pArg, int argc, char **argv, char **columnNames) { - static oid identity_oid[] = { 1,3,6,1,4,1,27880,1,1 }; - static oid systemStats_oid[] = { 1,3,6,1,4,1,27880,1,2 }; + uint32_t *count = (uint32_t *) pArg; + *count = atoi(argv[0]); + return 0; +} - DEBUGMSGTL(("init_subagent", "Initializing\n")); - netsnmp_register_scalar_group(netsnmp_create_handler_registration("identity", handle_identity, identity_oid, OID_LENGTH(identity_oid), HANDLER_CAN_RONLY), 1, 2); - netsnmp_register_scalar_group(netsnmp_create_handler_registration("systemStats", handle_systemStats, systemStats_oid, OID_LENGTH(systemStats_oid), HANDLER_CAN_RONLY), 1, 7); +static int channelList_callback(void *pArg, int argc, char **argv, char **columnNames) +{ + chan_entry_t *entry; + netsnmp_tdata_row *row; + + switch_zmalloc(entry, sizeof(chan_entry_t)); + if (!entry) + return 0; + + row = netsnmp_tdata_create_row(); + if (!row) { + switch_safe_free(entry); + return 0; + } + row->data = entry; + + entry->idx = idx++; + strncpy(entry->uuid, argv[0], sizeof(entry->uuid)); + strncpy(entry->direction, argv[1], sizeof(entry->direction)); + strncpy(entry->created, argv[2], sizeof(entry->created)); + strncpy(entry->name, argv[4], sizeof(entry->name)); + strncpy(entry->state, argv[5], sizeof(entry->state)); + strncpy(entry->cid_name, argv[6], sizeof(entry->cid_name)); + strncpy(entry->cid_num, argv[7], sizeof(entry->cid_num)); + + netsnmp_tdata_row_add_index(row, ASN_INTEGER, &entry->idx, sizeof(entry->idx)); + netsnmp_tdata_add_row(ch_table, row); + return 0; } -static int sql_count_callback(void *pArg, int argc, char **argv, char **columnNames) +void channelList_free(netsnmp_cache *cache, void *magic) { - uint32_t *count = (uint32_t *) pArg; - *count = atoi(argv[0]); + netsnmp_tdata_row *row = netsnmp_tdata_row_first(ch_table); + + /* Delete table rows one by one */ + while (row) { + netsnmp_tdata_remove_and_delete_row(ch_table, row); + switch_safe_free(row->data); + row = netsnmp_tdata_row_first(ch_table); + } +} + + +int channelList_load(netsnmp_cache *cache, void *vmagic) +{ + switch_cache_db_handle_t *dbh; + char sql[1024] = "", hostname[256] = ""; + + channelList_free(cache, NULL); + + if (switch_core_db_handle(&dbh) != SWITCH_STATUS_SUCCESS) { + return 0; + } + + idx = 1; + gethostname(hostname, sizeof(hostname)); + sprintf(sql, "SELECT * FROM channels WHERE hostname='%s' ORDER BY created_epoch", hostname); + switch_cache_db_execute_sql_callback(dbh, sql, channelList_callback, NULL, NULL); + + switch_cache_db_release_db_handle(&dbh); + return 0; } +void init_subagent(switch_memory_pool_t *pool) +{ + static oid identity_oid[] = { 1,3,6,1,4,1,27880,1,1 }; + static oid systemStats_oid[] = { 1,3,6,1,4,1,27880,1,2 }; + static oid channelList_oid[] = { 1,3,6,1,4,1,27880,1,9 }; + + DEBUGMSGTL(("init_subagent", "mod_snmp subagent initializing\n")); + + netsnmp_register_scalar_group(netsnmp_create_handler_registration("identity", handle_identity, identity_oid, OID_LENGTH(identity_oid), HANDLER_CAN_RONLY), 1, 2); + netsnmp_register_scalar_group(netsnmp_create_handler_registration("systemStats", handle_systemStats, systemStats_oid, OID_LENGTH(systemStats_oid), HANDLER_CAN_RONLY), 1, 7); + + ch_table_info = switch_core_alloc(pool, sizeof(netsnmp_table_registration_info)); + netsnmp_table_helper_add_index(ch_table_info, ASN_INTEGER); + ch_table_info->min_column = 1; + ch_table_info->max_column = 7; + ch_table = netsnmp_tdata_create_table("channelList", 0); + ch_reginfo = netsnmp_create_handler_registration("channelList", handle_channelList, channelList_oid, OID_LENGTH(channelList_oid), HANDLER_CAN_RONLY); + netsnmp_tdata_register(ch_reginfo, ch_table, ch_table_info); + netsnmp_inject_handler(ch_reginfo, netsnmp_get_cache_handler(5, channelList_load, channelList_free, channelList_oid, OID_LENGTH(channelList_oid))); +} + + int handle_identity(netsnmp_mib_handler *handler, netsnmp_handler_registration *reginfo, netsnmp_agent_request_info *reqinfo, netsnmp_request_info *requests) { netsnmp_request_info *request = NULL; @@ -97,7 +178,7 @@ int handle_systemStats(netsnmp_mib_handler *handler, netsnmp_handler_registratio netsnmp_request_info *request = NULL; oid subid; switch_time_t uptime; - uint32_t int_val; + uint32_t int_val = 0; switch(reqinfo->mode) { case MODE_GET: @@ -160,6 +241,55 @@ int handle_systemStats(netsnmp_mib_handler *handler, netsnmp_handler_registratio } +int handle_channelList(netsnmp_mib_handler *handler, netsnmp_handler_registration *reginfo, netsnmp_agent_request_info *reqinfo, netsnmp_request_info *requests) +{ + netsnmp_request_info *request; + netsnmp_table_request_info *table_info; + chan_entry_t *entry; + + switch (reqinfo->mode) { + case MODE_GET: + for (request = requests; request; request = request->next) { + table_info = netsnmp_extract_table_info(request); + entry = (chan_entry_t *) netsnmp_tdata_extract_entry(request); + + switch (table_info->colnum) { + case CH_UUID: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->uuid, strlen(entry->uuid)); + break; + case CH_DIRECTION: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->direction, strlen(entry->direction)); + break; + case CH_CREATED: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->created, strlen(entry->created)); + break; + case CH_NAME: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->name, strlen(entry->name)); + break; + case CH_STATE: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->state, strlen(entry->state)); + break; + case CH_CID_NAME: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->cid_name, strlen(entry->cid_name)); + break; + case CH_CID_NUM: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->cid_num, strlen(entry->cid_num)); + break; + default: + snmp_log(LOG_WARNING, "Unregistered OID-suffix requested (%d)\n", table_info->colnum); + netsnmp_set_request_error(reqinfo, request, SNMP_NOSUCHOBJECT); + } + } + break; + default: + /* we should never get here, so this is a really bad error */ + snmp_log(LOG_ERR, "Unknown mode (%d) in handle_foo\n", reqinfo->mode ); + return SNMP_ERR_GENERR; + } + + return SNMP_ERR_NOERROR; +} + /* For Emacs: * Local Variables: diff --git a/src/mod/event_handlers/mod_snmp/subagent.h b/src/mod/event_handlers/mod_snmp/subagent.h index 3315378..0070b2c 100644 --- a/src/mod/event_handlers/mod_snmp/subagent.h +++ b/src/mod/event_handlers/mod_snmp/subagent.h @@ -14,9 +14,29 @@ #define SS_SESSIONS_PER_SECOND 6 #define SS_MAX_SESSIONS_PER_SECOND 7 +/* .1.3.6.1.4.1.27880.1.9 */ +#define CH_UUID 1 +#define CH_DIRECTION 2 +#define CH_CREATED 3 +#define CH_NAME 4 +#define CH_STATE 5 +#define CH_CID_NAME 6 +#define CH_CID_NUM 7 -void init_subagent(void); +typedef struct { + uint32_t idx; + char uuid[38]; + char direction[32]; + char created[128]; + char name[1024]; + char state[64]; + char cid_name[1024]; + char cid_num[256]; +} chan_entry_t; + +void init_subagent(switch_memory_pool_t *pool); Netsnmp_Node_Handler handle_identity; Netsnmp_Node_Handler handle_systemStats; +Netsnmp_Node_Handler handle_channelList; #endif /* subagent_H */ ----------------------------------------------------------------------- Summary of changes: src/mod/event_handlers/mod_snmp/FREESWITCH-MIB | 84 +++++++++++++ src/mod/event_handlers/mod_snmp/mod_snmp.c | 2 +- src/mod/event_handlers/mod_snmp/subagent.c | 150 ++++++++++++++++++++++-- src/mod/event_handlers/mod_snmp/subagent.h | 22 ++++- 4 files changed, 246 insertions(+), 12 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Sat Jan 29 00:53:43 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 15:53:43 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1645-g6d3abd4 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated discards b3ac44f555a80f8278c5f915cfb36766903905a4 (commit) via 6d3abd41cadef3a2bff8175487c094c80d7d9cf7 (commit) This update added new revisions after undoing existing revisions. That is to say, the old revision is not a strict subset of the new revision. This situation occurs when you --force push a change and generate a repository containing something like this: * -- * -- B -- O -- O -- O (b3ac44f555a80f8278c5f915cfb36766903905a4) \ N -- N -- N (6d3abd41cadef3a2bff8175487c094c80d7d9cf7) When this happens we assume that you've already had alert emails for all of the O revisions, and so we here report only the revisions in the N branch from the common base, B. Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 6d3abd41cadef3a2bff8175487c094c80d7d9cf7 Author: Raymond Chandler Date: Fri Jan 28 16:11:55 2011 -0500 TEST-001 diff --git a/conf/freeswitch.xml b/conf/freeswitch.xml index 6ed99ef..5fc9402 100644 --- a/conf/freeswitch.xml +++ b/conf/freeswitch.xml @@ -63,4 +63,3 @@ - ----------------------------------------------------------------------- Summary of changes: conf/freeswitch.xml | 1 - src/mod/event_handlers/mod_snmp/subagent.c | 27 ++++++--------------------- 2 files changed, 6 insertions(+), 22 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Sat Jan 29 00:53:46 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 15:53:46 -0600 Subject: [Freeswitch-trunk] [GIT] branch master updated. git2svn-syncpoint-master-1647-g9986f4e Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, master has been updated via 9986f4ebf2a0c40cc99bc7f9f03f2dec6ae74645 (commit) via b3ac44f555a80f8278c5f915cfb36766903905a4 (commit) from 6d3abd41cadef3a2bff8175487c094c80d7d9cf7 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 9986f4ebf2a0c40cc99bc7f9f03f2dec6ae74645 Merge: 6d3abd4 b3ac44f Author: Raymond Chandler Date: Fri Jan 28 16:12:07 2011 -0500 Merge branch 'master' of fs-git:freeswitch commit b3ac44f555a80f8278c5f915cfb36766903905a4 Author: Daniel Swarbrick Date: Fri Jan 28 20:36:06 2011 +0100 add support for getting current call count diff --git a/src/mod/event_handlers/mod_snmp/subagent.c b/src/mod/event_handlers/mod_snmp/subagent.c index 8f08baf..bad3dc6 100644 --- a/src/mod/event_handlers/mod_snmp/subagent.c +++ b/src/mod/event_handlers/mod_snmp/subagent.c @@ -49,6 +49,14 @@ void init_subagent(void) } +static int sql_count_callback(void *pArg, int argc, char **argv, char **columnNames) +{ + uint32_t *count = (uint32_t *) pArg; + *count = atoi(argv[0]); + return 0; +} + + int handle_identity(netsnmp_mib_handler *handler, netsnmp_handler_registration *reginfo, netsnmp_agent_request_info *reqinfo, netsnmp_request_info *requests) { netsnmp_request_info *request = NULL; @@ -113,13 +121,20 @@ int handle_systemStats(netsnmp_mib_handler *handler, netsnmp_handler_registratio snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val)); break; case SS_CURRENT_CALLS: - /* - * This is zero for now, since there is no convenient way to get total call - * count (not to be confused with session count), without touching the - * database. - */ - int_val = 0; + { + switch_cache_db_handle_t *dbh; + char sql[1024] = "", hostname[256] = ""; + + if (switch_core_db_handle(&dbh) != SWITCH_STATUS_SUCCESS) { + return SNMP_ERR_GENERR; + } + + gethostname(hostname, sizeof(hostname)); + sprintf(sql, "SELECT COUNT(*) FROM calls WHERE hostname='%s'", hostname); + switch_cache_db_execute_sql_callback(dbh, sql, sql_count_callback, &int_val, NULL); snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val)); + switch_cache_db_release_db_handle(&dbh); + } break; case SS_SESSIONS_PER_SECOND: switch_core_session_ctl(SCSC_LAST_SPS, &int_val); ----------------------------------------------------------------------- Summary of changes: src/mod/event_handlers/mod_snmp/subagent.c | 27 +++++++++++++++++++++------ 1 files changed, 21 insertions(+), 6 deletions(-) hooks/post-receive -- From svnnotify at freeswitch.org Sat Jan 29 00:56:29 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 15:56:29 -0600 Subject: [Freeswitch-trunk] [GIT]FreeSWITCH branch master updated. git2svn-syncpoint-master-1645-g6d3abd4 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "FreeSWITCH". The branch, master has been updated discards b3ac44f555a80f8278c5f915cfb36766903905a4 (commit) via 6d3abd41cadef3a2bff8175487c094c80d7d9cf7 (commit) This update added new revisions after undoing existing revisions. That is to say, the old revision is not a strict subset of the new revision. This situation occurs when you --force push a change and generate a repository containing something like this: * -- * -- B -- O -- O -- O (b3ac44f555a80f8278c5f915cfb36766903905a4) \ N -- N -- N (6d3abd41cadef3a2bff8175487c094c80d7d9cf7) When this happens we assume that you've already had alert emails for all of the O revisions, and so we here report only the revisions in the N branch from the common base, B. Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 6d3abd41cadef3a2bff8175487c094c80d7d9cf7 Author: Raymond Chandler Date: Fri Jan 28 16:11:55 2011 -0500 TEST-001 diff --git a/conf/freeswitch.xml b/conf/freeswitch.xml index 6ed99ef..5fc9402 100644 --- a/conf/freeswitch.xml +++ b/conf/freeswitch.xml @@ -63,4 +63,3 @@ - ----------------------------------------------------------------------- Summary of changes: conf/freeswitch.xml | 1 - src/mod/event_handlers/mod_snmp/subagent.c | 27 ++++++--------------------- 2 files changed, 6 insertions(+), 22 deletions(-) hooks/post-receive -- FreeSWITCH From svnnotify at freeswitch.org Sat Jan 29 00:56:33 2011 From: svnnotify at freeswitch.org (svnnotify at freeswitch.org) Date: Fri, 28 Jan 2011 15:56:33 -0600 Subject: [Freeswitch-trunk] [GIT]FreeSWITCH branch master updated. git2svn-syncpoint-master-1647-g9986f4e Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "FreeSWITCH". The branch, master has been updated via 9986f4ebf2a0c40cc99bc7f9f03f2dec6ae74645 (commit) via b3ac44f555a80f8278c5f915cfb36766903905a4 (commit) from 6d3abd41cadef3a2bff8175487c094c80d7d9cf7 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 9986f4ebf2a0c40cc99bc7f9f03f2dec6ae74645 Merge: 6d3abd4 b3ac44f Author: Raymond Chandler Date: Fri Jan 28 16:12:07 2011 -0500 Merge branch 'master' of fs-git:freeswitch commit b3ac44f555a80f8278c5f915cfb36766903905a4 Author: Daniel Swarbrick Date: Fri Jan 28 20:36:06 2011 +0100 add support for getting current call count diff --git a/src/mod/event_handlers/mod_snmp/subagent.c b/src/mod/event_handlers/mod_snmp/subagent.c index 8f08baf..bad3dc6 100644 --- a/src/mod/event_handlers/mod_snmp/subagent.c +++ b/src/mod/event_handlers/mod_snmp/subagent.c @@ -49,6 +49,14 @@ void init_subagent(void) } +static int sql_count_callback(void *pArg, int argc, char **argv, char **columnNames) +{ + uint32_t *count = (uint32_t *) pArg; + *count = atoi(argv[0]); + return 0; +} + + int handle_identity(netsnmp_mib_handler *handler, netsnmp_handler_registration *reginfo, netsnmp_agent_request_info *reqinfo, netsnmp_request_info *requests) { netsnmp_request_info *request = NULL; @@ -113,13 +121,20 @@ int handle_systemStats(netsnmp_mib_handler *handler, netsnmp_handler_registratio snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val)); break; case SS_CURRENT_CALLS: - /* - * This is zero for now, since there is no convenient way to get total call - * count (not to be confused with session count), without touching the - * database. - */ - int_val = 0; + { + switch_cache_db_handle_t *dbh; + char sql[1024] = "", hostname[256] = ""; + + if (switch_core_db_handle(&dbh) != SWITCH_STATUS_SUCCESS) { + return SNMP_ERR_GENERR; + } + + gethostname(hostname, sizeof(hostname)); + sprintf(sql, "SELECT COUNT(*) FROM calls WHERE hostname='%s'", hostname); + switch_cache_db_execute_sql_callback(dbh, sql, sql_count_callback, &int_val, NULL); snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val)); + switch_cache_db_release_db_handle(&dbh); + } break; case SS_SESSIONS_PER_SECOND: switch_core_session_ctl(SCSC_LAST_SPS, &int_val); ----------------------------------------------------------------------- Summary of changes: src/mod/event_handlers/mod_snmp/subagent.c | 27 +++++++++++++++++++++------ 1 files changed, 21 insertions(+), 6 deletions(-) hooks/post-receive -- FreeSWITCH From git at svn.freeswitch.org Sat Jan 29 11:09:41 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Sat, 29 Jan 2011 02:09:41 -0600 Subject: [Freeswitch-trunk] [GIT]FreeSWITCH branch master updated. git2svn-syncpoint-master-1651-g49a5eff Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "FreeSWITCH". The branch, master has been updated via 49a5effcdf2cea9e0ddcf146cf3fe85d1872e654 (commit) from be3483b924a674e4c4f0f05734e7e4917634f3ca (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 49a5effcdf2cea9e0ddcf146cf3fe85d1872e654 Author: Marc Olivier Chouinard Date: Sat Jan 29 03:09:06 2011 -0500 mod_callcenter: Add error response for queue load and queue reload (FS-2988) diff --git a/src/mod/applications/mod_callcenter/mod_callcenter.c b/src/mod/applications/mod_callcenter/mod_callcenter.c index d1de632..61305bb 100644 --- a/src/mod/applications/mod_callcenter/mod_callcenter.c +++ b/src/mod/applications/mod_callcenter/mod_callcenter.c @@ -2625,8 +2625,10 @@ SWITCH_STANDARD_API(cc_config_api_function) cc_queue_t *queue = NULL; if ((queue = get_queue(queue_name))) { queue_rwunlock(queue); + stream->write_function(stream, "%s", "+OK\n"); + } else { + stream->write_function(stream, "%s", "-ERR Invalid Queue not found!\n"); } - stream->write_function(stream, "%s", "+OK\n"); } } else if (action && !strcasecmp(action, "unload")) { if (argc-initial_argc < 1) { @@ -2648,8 +2650,10 @@ SWITCH_STANDARD_API(cc_config_api_function) destroy_queue(queue_name, SWITCH_FALSE); if ((queue = get_queue(queue_name))) { queue_rwunlock(queue); + stream->write_function(stream, "%s", "+OK\n"); + } else { + stream->write_function(stream, "%s", "-ERR Invalid Queue not found!\n"); } - stream->write_function(stream, "%s", "+OK\n"); } } else if (action && !strcasecmp(action, "list")) { if (argc-initial_argc < 1) { @@ -2671,7 +2675,6 @@ SWITCH_STANDARD_API(cc_config_api_function) goto done; } else { const char *queue_name = argv[0 + initial_argc]; - struct list_result cbt; cbt.row_process = 0; cbt.stream = stream; ----------------------------------------------------------------------- Summary of changes: .../applications/mod_callcenter/mod_callcenter.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) hooks/post-receive -- FreeSWITCH From git at svn.freeswitch.org Sat Jan 29 22:55:13 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Sat, 29 Jan 2011 13:55:13 -0600 Subject: [Freeswitch-trunk] [GIT]FreeSWITCH branch master updated. git2svn-syncpoint-master-1652-g2ad81ac Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "FreeSWITCH". The branch, master has been updated via 2ad81ac82f3c3c989e4d7d11f788c43c2c6f20d8 (commit) from 49a5effcdf2cea9e0ddcf146cf3fe85d1872e654 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 2ad81ac82f3c3c989e4d7d11f788c43c2c6f20d8 Author: Anthony Minessale Date: Sat Jan 29 13:43:59 2011 -0600 fix || where it should be or in sql stmt that may cause stray records in the calls table diff --git a/src/switch_core_sqldb.c b/src/switch_core_sqldb.c index 4167b4a..35311c9 100644 --- a/src/switch_core_sqldb.c +++ b/src/switch_core_sqldb.c @@ -1160,15 +1160,14 @@ static void core_event_handler(switch_event_t *event) case SWITCH_EVENT_CHANNEL_DESTROY: { const char *uuid = switch_event_get_header(event, "unique-id"); - const char *sig = switch_event_get_header(event, "signal_bridge"); if (uuid) { new_sql() = switch_mprintf("delete from channels where uuid='%q' and hostname='%q'", uuid, switch_core_get_variable("hostname")); - if (switch_true(sig)) { - new_sql() = switch_mprintf("delete from calls where (caller_uuid='%q' || callee_uuid='%q') and hostname='%q'", - uuid, uuid, switch_core_get_variable("hostname")); - } + + new_sql() = switch_mprintf("delete from calls where (caller_uuid='%q' or callee_uuid='%q') and hostname='%q'", + uuid, uuid, switch_core_get_variable("hostname")); + } } break; @@ -1410,7 +1409,7 @@ static void core_event_handler(switch_event_t *event) } break; case SWITCH_EVENT_CHANNEL_UNBRIDGE: - new_sql() = switch_mprintf("delete from calls where caller_uuid='%s' and hostname='%q'", + new_sql() = switch_mprintf("delete from calls where (caller_uuid='%s' or callee_uuid='%q') and hostname='%q'", switch_event_get_header_nil(event, "caller-unique-id"), switch_core_get_variable("hostname")); break; case SWITCH_EVENT_SHUTDOWN: ----------------------------------------------------------------------- Summary of changes: src/switch_core_sqldb.c | 11 +++++------ 1 files changed, 5 insertions(+), 6 deletions(-) hooks/post-receive -- FreeSWITCH From git at svn.freeswitch.org Mon Jan 31 17:42:05 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Mon, 31 Jan 2011 08:42:05 -0600 Subject: [Freeswitch-trunk] [GIT]FreeSWITCH branch master updated. git2svn-syncpoint-master-1653-gc8f5c66 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "FreeSWITCH". The branch, master has been updated via c8f5c66c3520ecda8f8dbc07dc01f1d4035058e4 (commit) from 2ad81ac82f3c3c989e4d7d11f788c43c2c6f20d8 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit c8f5c66c3520ecda8f8dbc07dc01f1d4035058e4 Author: Daniel Swarbrick Date: Mon Jan 31 15:41:58 2011 +0100 mostly complete implementation of channel list via SNMP diff --git a/src/mod/event_handlers/mod_snmp/FREESWITCH-MIB b/src/mod/event_handlers/mod_snmp/FREESWITCH-MIB index 11c3999..8448526 100644 --- a/src/mod/event_handlers/mod_snmp/FREESWITCH-MIB +++ b/src/mod/event_handlers/mod_snmp/FREESWITCH-MIB @@ -3,11 +3,14 @@ FREESWITCH-MIB DEFINITIONS ::= BEGIN IMPORTS OBJECT-TYPE, MODULE-IDENTITY, Integer32, Gauge32, Counter32, Counter64, TimeTicks, - enterprises, + enterprises FROM SNMPv2-SMI - DisplayString + DisplayString, DateAndTime FROM SNMPv2-TC + + InetAddressType, InetAddress + FROM INET-ADDRESS-MIB ; @@ -109,13 +112,27 @@ maxSessionsPerSecond OBJECT-TYPE ChannelEntry ::= SEQUENCE { - chanUUID DisplayString, - chanDirection DisplayString, - chanCreated DisplayString, - chanName DisplayString, - chanState DisplayString, - chanCIDName DisplayString, - chanCIDNum DisplayString + chanIndex Integer32, + chanUUID DisplayString, + chanDirection DisplayString, + chanCreated DateAndTime, + chanName DisplayString, + chanState DisplayString, + chanCIDName DisplayString, + chanCIDNum DisplayString, + chanInetAddressType InetAddressType, + chanInetAddress InetAddress, + chanDest DisplayString, + chanApplication DisplayString, + chanAppData DisplayString, + chanDialplan DisplayString, + chanContext DisplayString, + chanReadCodec DisplayString, + chanReadRate Gauge32, + chanReadBitRate Gauge32, + chanWriteCodec DisplayString, + chanWriteRate Gauge32, + chanWriteBitRate Gauge32 } channelList OBJECT-TYPE @@ -135,60 +152,172 @@ channelEntry OBJECT-TYPE INDEX { chanIndex } ::= { channelList 1 } +chanIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel SNMP index." + ::= { channelEntry 1 } + chanUUID OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION - "The channel UUID." - ::= { channelEntry 1 } + "Channel UUID." + ::= { channelEntry 2 } chanDirection OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION - "The channel direction." - ::= { channelEntry 2 } + "Channel direction." + ::= { channelEntry 3 } chanCreated OBJECT-TYPE - SYNTAX DisplayString + SYNTAX DateAndTime MAX-ACCESS read-only STATUS current DESCRIPTION "Channel creation timestamp." - ::= { channelEntry 3 } + ::= { channelEntry 4 } chanName OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION - "The channel name." - ::= { channelEntry 4 } + "Channel name." + ::= { channelEntry 5 } chanState OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION - "The channel state." - ::= { channelEntry 5 } + "Channel state." + ::= { channelEntry 6 } chanCIDName OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION - "The channel caller ID name." - ::= { channelEntry 6 } + "Channel caller ID name." + ::= { channelEntry 7 } chanCIDNum OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION - "The channel caller ID number." - ::= { channelEntry 7 } + "Channel caller ID number." + ::= { channelEntry 8 } + +chanInetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel originator's IP address type (IPv4 or IPv6)." + ::= { channelEntry 9 } + +chanInetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel originator's IP address." + ::= { channelEntry 10 } + +chanDest OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel destination." + ::= { channelEntry 11 } + +chanApplication OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel application." + ::= { channelEntry 12 } + +chanAppData OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel application data." + ::= { channelEntry 13 } + +chanDialplan OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel dialplan." + ::= { channelEntry 14 } + +chanContext OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel dialplan context." + ::= { channelEntry 15 } + +chanReadCodec OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel read codec." + ::= { channelEntry 16 } + +chanReadRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel read samples per second." + ::= { channelEntry 17 } + +chanReadBitRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel read bits per second." + ::= { channelEntry 18 } + +chanWriteCodec OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel write codec." + ::= { channelEntry 19 } + +chanWriteRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel write samples per second." + ::= { channelEntry 20 } + +chanWriteBitRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel write bits per second." + ::= { channelEntry 21 } END diff --git a/src/mod/event_handlers/mod_snmp/subagent.c b/src/mod/event_handlers/mod_snmp/subagent.c index 7b9faa7..43975ee 100644 --- a/src/mod/event_handlers/mod_snmp/subagent.c +++ b/src/mod/event_handlers/mod_snmp/subagent.c @@ -42,6 +42,17 @@ netsnmp_handler_registration *ch_reginfo; uint32_t idx; +static void time_t_to_datetime(time_t epoch, char *buf, switch_size_t buflen) +{ + struct tm *dt; + uint16_t year; + + dt = gmtime(&epoch); + year = dt->tm_year + 1900; + switch_snprintf(buf, buflen, "%c%c%c%c%c%c%c%c+%c%c", year >> 8, year & 0xff, dt->tm_mon + 1, dt->tm_mday, dt->tm_hour, dt->tm_min, dt->tm_sec, 0, 0, 0); +} + + static int sql_count_callback(void *pArg, int argc, char **argv, char **columnNames) { uint32_t *count = (uint32_t *) pArg; @@ -69,11 +80,31 @@ static int channelList_callback(void *pArg, int argc, char **argv, char **column entry->idx = idx++; strncpy(entry->uuid, argv[0], sizeof(entry->uuid)); strncpy(entry->direction, argv[1], sizeof(entry->direction)); - strncpy(entry->created, argv[2], sizeof(entry->created)); + entry->created_epoch = atoi(argv[3]); strncpy(entry->name, argv[4], sizeof(entry->name)); strncpy(entry->state, argv[5], sizeof(entry->state)); strncpy(entry->cid_name, argv[6], sizeof(entry->cid_name)); strncpy(entry->cid_num, argv[7], sizeof(entry->cid_num)); + strncpy(entry->dest, argv[9], sizeof(entry->dest)); + strncpy(entry->application, argv[10], sizeof(entry->application)); + strncpy(entry->application_data, argv[11], sizeof(entry->application_data)); + strncpy(entry->dialplan, argv[12], sizeof(entry->dialplan)); + strncpy(entry->context, argv[13], sizeof(entry->context)); + strncpy(entry->read_codec, argv[14], sizeof(entry->read_codec)); + entry->read_rate = atoi(argv[15]); + entry->read_bitrate = atoi(argv[16]); + strncpy(entry->write_codec, argv[17], sizeof(entry->write_codec)); + entry->write_rate = atoi(argv[18]); + entry->write_bitrate = atoi(argv[19]); + + memset(&entry->ip_addr, 0, sizeof(entry->ip_addr)); + if (strchr(argv[8], ':')) { + switch_inet_pton(AF_INET6, argv[8], &entry->ip_addr); + entry->addr_family = AF_INET6; + } else { + switch_inet_pton(AF_INET, argv[8], &entry->ip_addr); + entry->addr_family = AF_INET; + } netsnmp_tdata_row_add_index(row, ASN_INTEGER, &entry->idx, sizeof(entry->idx)); netsnmp_tdata_add_row(ch_table, row); @@ -128,9 +159,9 @@ void init_subagent(switch_memory_pool_t *pool) netsnmp_register_scalar_group(netsnmp_create_handler_registration("systemStats", handle_systemStats, systemStats_oid, OID_LENGTH(systemStats_oid), HANDLER_CAN_RONLY), 1, 7); ch_table_info = switch_core_alloc(pool, sizeof(netsnmp_table_registration_info)); - netsnmp_table_helper_add_index(ch_table_info, ASN_INTEGER); - ch_table_info->min_column = 1; - ch_table_info->max_column = 7; + netsnmp_table_helper_add_indexes(ch_table_info, ASN_INTEGER, 0); + ch_table_info->min_column = CH_INDEX; + ch_table_info->max_column = CH_WRITE_BITRATE; ch_table = netsnmp_tdata_create_table("channelList", 0); ch_reginfo = netsnmp_create_handler_registration("channelList", handle_channelList, channelList_oid, OID_LENGTH(channelList_oid), HANDLER_CAN_RONLY); netsnmp_tdata_register(ch_reginfo, ch_table, ch_table_info); @@ -191,15 +222,15 @@ int handle_systemStats(netsnmp_mib_handler *handler, netsnmp_handler_registratio break; case SS_SESSIONS_SINCE_STARTUP: int_val = switch_core_session_id() - 1; - snmp_set_var_typed_value(requests->requestvb, ASN_COUNTER, (u_char *) &int_val, sizeof(int_val)); + snmp_set_var_typed_integer(requests->requestvb, ASN_COUNTER, int_val); break; case SS_CURRENT_SESSIONS: int_val = switch_core_session_count(); - snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val)); + snmp_set_var_typed_integer(requests->requestvb, ASN_GAUGE, int_val); break; case SS_MAX_SESSIONS: switch_core_session_ctl(SCSC_MAX_SESSIONS, &int_val); - snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val)); + snmp_set_var_typed_integer(requests->requestvb, ASN_GAUGE, int_val); break; case SS_CURRENT_CALLS: { @@ -213,17 +244,17 @@ int handle_systemStats(netsnmp_mib_handler *handler, netsnmp_handler_registratio gethostname(hostname, sizeof(hostname)); sprintf(sql, "SELECT COUNT(*) FROM calls WHERE hostname='%s'", hostname); switch_cache_db_execute_sql_callback(dbh, sql, sql_count_callback, &int_val, NULL); - snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val)); + snmp_set_var_typed_integer(requests->requestvb, ASN_GAUGE, int_val); switch_cache_db_release_db_handle(&dbh); } break; case SS_SESSIONS_PER_SECOND: switch_core_session_ctl(SCSC_LAST_SPS, &int_val); - snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val)); + snmp_set_var_typed_integer(requests->requestvb, ASN_GAUGE, int_val); break; case SS_MAX_SESSIONS_PER_SECOND: switch_core_session_ctl(SCSC_SPS, &int_val); - snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val)); + snmp_set_var_typed_integer(requests->requestvb, ASN_GAUGE, int_val); break; default: snmp_log(LOG_WARNING, "Unregistered OID-suffix requested (%d)\n", (int) subid); @@ -246,6 +277,7 @@ int handle_channelList(netsnmp_mib_handler *handler, netsnmp_handler_registratio netsnmp_request_info *request; netsnmp_table_request_info *table_info; chan_entry_t *entry; + char dt_str[12]; switch (reqinfo->mode) { case MODE_GET: @@ -254,6 +286,9 @@ int handle_channelList(netsnmp_mib_handler *handler, netsnmp_handler_registratio entry = (chan_entry_t *) netsnmp_tdata_extract_entry(request); switch (table_info->colnum) { + case CH_INDEX: + snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER, entry->idx); + break; case CH_UUID: snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->uuid, strlen(entry->uuid)); break; @@ -261,7 +296,8 @@ int handle_channelList(netsnmp_mib_handler *handler, netsnmp_handler_registratio snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->direction, strlen(entry->direction)); break; case CH_CREATED: - snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->created, strlen(entry->created)); + time_t_to_datetime(entry->created_epoch, (char *) &dt_str, sizeof(dt_str)); + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) &dt_str, sizeof(dt_str)); break; case CH_NAME: snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->name, strlen(entry->name)); @@ -275,6 +311,53 @@ int handle_channelList(netsnmp_mib_handler *handler, netsnmp_handler_registratio case CH_CID_NUM: snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->cid_num, strlen(entry->cid_num)); break; + case CH_IP_ADDR_TYPE: + if (entry->addr_family == AF_INET6) { + snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER, INETADDRESSTYPE_IPV6); + } else { + snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER, INETADDRESSTYPE_IPV4); + } + break; + case CH_IP_ADDR: + if (entry->addr_family == AF_INET6) { + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) &entry->ip_addr.v6, sizeof(entry->ip_addr.v6)); + } else { + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) &entry->ip_addr.v4, sizeof(entry->ip_addr.v4)); + } + break; + case CH_DEST: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->dest, strlen(entry->dest)); + break; + case CH_APPLICATION: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->application, strlen(entry->application)); + break; + case CH_APPLICATION_DATA: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->application_data, strlen(entry->application_data)); + break; + case CH_DIALPLAN: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->dialplan, strlen(entry->dialplan)); + break; + case CH_CONTEXT: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->context, strlen(entry->context)); + break; + case CH_READ_CODEC: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->read_codec, strlen(entry->read_codec)); + break; + case CH_READ_RATE: + snmp_set_var_typed_value(request->requestvb, ASN_GAUGE, (u_char *) &entry->read_rate, sizeof(entry->read_rate)); + break; + case CH_READ_BITRATE: + snmp_set_var_typed_value(request->requestvb, ASN_GAUGE, (u_char *) &entry->read_bitrate, sizeof(entry->read_bitrate)); + break; + case CH_WRITE_CODEC: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->write_codec, strlen(entry->write_codec)); + break; + case CH_WRITE_RATE: + snmp_set_var_typed_value(request->requestvb, ASN_GAUGE, (u_char *) &entry->write_rate, sizeof(entry->write_rate)); + break; + case CH_WRITE_BITRATE: + snmp_set_var_typed_value(request->requestvb, ASN_GAUGE, (u_char *) &entry->write_bitrate, sizeof(entry->write_bitrate)); + break; default: snmp_log(LOG_WARNING, "Unregistered OID-suffix requested (%d)\n", table_info->colnum); netsnmp_set_request_error(reqinfo, request, SNMP_NOSUCHOBJECT); diff --git a/src/mod/event_handlers/mod_snmp/subagent.h b/src/mod/event_handlers/mod_snmp/subagent.h index 0070b2c..5da87a6 100644 --- a/src/mod/event_handlers/mod_snmp/subagent.h +++ b/src/mod/event_handlers/mod_snmp/subagent.h @@ -15,23 +15,58 @@ #define SS_MAX_SESSIONS_PER_SECOND 7 /* .1.3.6.1.4.1.27880.1.9 */ -#define CH_UUID 1 -#define CH_DIRECTION 2 -#define CH_CREATED 3 -#define CH_NAME 4 -#define CH_STATE 5 -#define CH_CID_NAME 6 -#define CH_CID_NUM 7 +#define CH_INDEX 1 +#define CH_UUID 2 +#define CH_DIRECTION 3 +#define CH_CREATED 4 +#define CH_NAME 5 +#define CH_STATE 6 +#define CH_CID_NAME 7 +#define CH_CID_NUM 8 +#define CH_IP_ADDR_TYPE 9 +#define CH_IP_ADDR 10 +#define CH_DEST 11 +#define CH_APPLICATION 12 +#define CH_APPLICATION_DATA 13 +#define CH_DIALPLAN 14 +#define CH_CONTEXT 15 +#define CH_READ_CODEC 16 +#define CH_READ_RATE 17 +#define CH_READ_BITRATE 18 +#define CH_WRITE_CODEC 19 +#define CH_WRITE_RATE 20 +#define CH_WRITE_BITRATE 21 + +/* Why aren't these in net-snmp-includes.h ? */ +#define INETADDRESSTYPE_UNKNOWN 0 +#define INETADDRESSTYPE_IPV4 1 +#define INETADDRESSTYPE_IPV6 2 +#define INETADDRESSTYPE_IPV4Z 3 +#define INETADDRESSTYPE_IPV6Z 4 +#define INETADDRESSTYPE_DNS 16 typedef struct { uint32_t idx; char uuid[38]; char direction[32]; - char created[128]; + time_t created_epoch; char name[1024]; char state[64]; char cid_name[1024]; char cid_num[256]; + ip_t ip_addr; + uint8_t addr_family; + char dest[1024]; + char application[128]; + char application_data[4096]; + char dialplan[128]; + char context[128]; + char read_codec[128]; + uint32_t read_rate; + uint32_t read_bitrate; + char write_codec[128]; + uint32_t write_rate; + uint32_t write_bitrate; } chan_entry_t; void init_subagent(switch_memory_pool_t *pool); ----------------------------------------------------------------------- Summary of changes: src/mod/event_handlers/mod_snmp/FREESWITCH-MIB | 175 ++++++++++++++++++++--- src/mod/event_handlers/mod_snmp/subagent.c | 105 +++++++++++++-- src/mod/event_handlers/mod_snmp/subagent.h | 51 ++++++- 3 files changed, 289 insertions(+), 42 deletions(-) hooks/post-receive -- FreeSWITCH From git at svn.freeswitch.org Mon Jan 31 19:12:43 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Mon, 31 Jan 2011 10:12:43 -0600 Subject: [Freeswitch-trunk] [GIT]FreeSWITCH branch master updated. git2svn-syncpoint-master-1654-g256a82d Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "FreeSWITCH". The branch, master has been updated via 256a82dbf2d7f4b4e1d7527f1e6a15d8d0d38a21 (commit) from c8f5c66c3520ecda8f8dbc07dc01f1d4035058e4 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 256a82dbf2d7f4b4e1d7527f1e6a15d8d0d38a21 Author: Jeff Lenk Date: Mon Jan 31 10:12:28 2011 -0600 OPENZAP-140 VS2010 build cleanup diff --git a/libs/freetdm/msvc/testboost/testboost.2010.vcxproj b/libs/freetdm/msvc/testboost/testboost.2010.vcxproj index 6206148..314440b 100644 --- a/libs/freetdm/msvc/testboost/testboost.2010.vcxproj +++ b/libs/freetdm/msvc/testboost/testboost.2010.vcxproj @@ -105,7 +105,7 @@ 4100;%(DisableSpecificWarnings) - ..\..\debug\freetdm.lib;%(AdditionalDependencies) + %(AdditionalDependencies) true Console false @@ -162,7 +162,7 @@ 4100;%(DisableSpecificWarnings) - freetdm.lib;%(AdditionalDependencies) + %(AdditionalDependencies) true Console false @@ -199,7 +199,7 @@ MachineX64 - freetdm.lib;%(AdditionalDependencies) + %(AdditionalDependencies) ../../$(PlatformName)\$(Configuration);%(AdditionalLibraryDirectories) diff --git a/libs/freetdm/msvc/testboost/testsangomaboost.2010.vcxproj b/libs/freetdm/msvc/testboost/testsangomaboost.2010.vcxproj index 5994da6..4077a60 100644 --- a/libs/freetdm/msvc/testboost/testsangomaboost.2010.vcxproj +++ b/libs/freetdm/msvc/testboost/testsangomaboost.2010.vcxproj @@ -105,7 +105,7 @@ 4100;%(DisableSpecificWarnings) - ..\..\debug\freetdm.lib;%(AdditionalDependencies) + %(AdditionalDependencies) true Console false @@ -162,7 +162,7 @@ 4100;%(DisableSpecificWarnings) - freetdm.lib;%(AdditionalDependencies) + %(AdditionalDependencies) true Console false @@ -199,7 +199,7 @@ MachineX64 - freetdm.lib;%(AdditionalDependencies) + %(AdditionalDependencies) ../../$(PlatformName)\$(Configuration);%(AdditionalLibraryDirectories) diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.2010.vcxproj b/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.2010.vcxproj index 78689c3..684e432 100644 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.2010.vcxproj +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.2010.vcxproj @@ -61,11 +61,11 @@ <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\ - $(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ true - $(SolutionDir)$(Configuration)\ - $(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ false $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ @@ -102,7 +102,7 @@ 4100;%(DisableSpecificWarnings) - freetdm.lib;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir);%(AdditionalLibraryDirectories) true Windows @@ -151,7 +151,7 @@ 4100;%(DisableSpecificWarnings) - freetdm.lib;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir);%(AdditionalLibraryDirectories) true Windows diff --git a/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.2010.vcxproj b/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.2010.vcxproj index 40d0a73..a21be22 100644 --- a/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.2010.vcxproj +++ b/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.2010.vcxproj @@ -61,14 +61,14 @@ <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\ - $(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ true $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ true - $(SolutionDir)$(Configuration)\ - $(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ false $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ ----------------------------------------------------------------------- Summary of changes: libs/freetdm/msvc/testboost/testboost.2010.vcxproj | 6 +++--- .../msvc/testboost/testsangomaboost.2010.vcxproj | 6 +++--- .../ftmod_sangoma_boost.2010.vcxproj | 12 ++++++------ .../ftmod/ftmod_wanpipe/ftmod_wanpipe.2010.vcxproj | 8 ++++---- 4 files changed, 16 insertions(+), 16 deletions(-) hooks/post-receive -- FreeSWITCH From git at svn.freeswitch.org Mon Jan 31 23:15:52 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Mon, 31 Jan 2011 14:15:52 -0600 Subject: [Freeswitch-trunk] [GIT]FreeSWITCH branch master updated. v1.0.6-1119-gacd56d2 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "FreeSWITCH". The branch, master has been updated discards 256a82dbf2d7f4b4e1d7527f1e6a15d8d0d38a21 (commit) discards c8f5c66c3520ecda8f8dbc07dc01f1d4035058e4 (commit) discards 2ad81ac82f3c3c989e4d7d11f788c43c2c6f20d8 (commit) discards 49a5effcdf2cea9e0ddcf146cf3fe85d1872e654 (commit) discards be3483b924a674e4c4f0f05734e7e4917634f3ca (commit) discards e6e4bcea734fbfb54b901ff8b1107ddfe76b7010 (commit) discards 068d36a5c95c5a4143f423b7c36cbe6d5cea36d5 (commit) discards 9986f4ebf2a0c40cc99bc7f9f03f2dec6ae74645 (commit) discards 6d3abd41cadef3a2bff8175487c094c80d7d9cf7 (commit) discards b3ac44f555a80f8278c5f915cfb36766903905a4 (commit) discards 9e6503a482ff533ff214b01a07c3432be14ff1ce (commit) discards 97a2b4f9025099bdab5718a13ee36d15a6152411 (commit) discards 68b2756970bd4280eba700b7439afdff374fd9e3 (commit) discards 9b0c16b5d48a7b9d0ea15ac429a8ca4c8eef8693 (commit) discards f05fe55594ffca6edc8f4e74204650aa219ed1ac (commit) discards 08f494b80802aacf101705382f149ca4b028eb57 (commit) discards daa28cfccae9b171221408f3af4f8c10283e67b3 (commit) discards c64b78577f65b586ff6d7af711c79d0427fc61c5 (commit) discards 9ade16e9291aa74b4483bb9b9d9db266e082f7cc (commit) discards 314a2a1e2061ef321fa5f9b32a9c70ef0040cdb8 (commit) discards 48c02b7cd2770f6aee1d6e89f5ecfe207231f398 (commit) discards f954d21ab8f84ea3518525d6f8a5a25c5cd39d6b (commit) discards f8254f81607c9b2fe8ece3c48cb6dff700bcbead (commit) discards 608be370bcca24023ee9d05ee4a99c133044f0d3 (commit) discards 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 (commit) discards b889b44f1d632810662359f6becce869056a076c (commit) discards 22c05ad542e3a36dd7dbb71bef5aca5ff009b1b9 (commit) discards 008e527c0f5c86e20521c4ebacf69adcb269b08a (commit) discards 425df0c78389d30561a7f025a1a3e3b2fbc5e413 (commit) discards a01814794c1fb49b77a6015edc8e1ad6c925bae3 (commit) discards 9ffca057f109725986b741cb6019dce620c056b7 (commit) discards 6f58e6aa425283137effa286d7f8638aa035aff4 (commit) discards 0e0431ecc66d04236cf4940b65977bad424fdc86 (commit) discards 7c624767116b30dc9074c1cfbbe7c3a5771950f9 (commit) discards 83d5cd6ff6f2f6e23c09ee387098a59d7764a84f (commit) discards 4b731fd64c1bf16a0da20f1c10de8d382faed3a4 (commit) discards 636c1ecb4e9cace5967390a8a8125fa783f6d0b9 (commit) discards 02d1af647bac6b937de02608d53ea1831f51b968 (commit) discards 28465f38a08df99a76864bbf6a9ae5e4e7bcd720 (commit) discards d164a79764c49dd11bbffcd26d6ca98770181c67 (commit) discards e78f2bfb5d5f17d0646f0bc2a9fad03546eac646 (commit) discards 9509befbfa43810dcde11532663561838d267f2c (commit) discards 0d098a5110e095bb9334196978289e081d5a022b (commit) discards 80a6279993f2369e79e70bc9b61bfcaf2f3e5f4c (commit) discards 7ce63feadf86bf4321aa184311996d010aab59f8 (commit) discards 6477d3f87e32cc623638073fc1983ebfc4fa54cd (commit) discards 24bcd10582193ef6dac5a124ad03323066e355f8 (commit) discards 4eb5bbf41c3fcb6bfd33704a18bd2e7e52acd437 (commit) discards 976859bb45f08382424c9c4b0dbf6acb3fba64fb (commit) discards a8f5bf60a87fb27420846bd9d9af5e61f1f947d6 (commit) discards 6e4c30ea377728107e0747d614565eca964fa1d3 (commit) discards 7a1dcb69581ba593f3dc3868c94c1124c41e64f3 (commit) discards 6294bc1620c94785f23bf6ae6966aaa67cf34c7f (commit) discards 0e37dcb5db19592d28eb771edb4a0d394f5275ac (commit) discards b88cd3457a847cf05564df51bd8a60036b15bfd8 (commit) discards 9adac7c6988df8436c634edaaa13ae39067f8df7 (commit) discards 5316bcd9dc648b3874ebddea75ed6f34431c7f35 (commit) discards 9fe440b2fe63935331b148ffc1d3c7a5ddffa20b (commit) discards 8d6d52e015411649e0591eb7ad667885523b99c3 (commit) discards 4eccdfef58a64652ae2a1f0a7a1f11ae55346420 (commit) discards f5dafc9911eb892e0ac557bc892638cc9fb67014 (commit) discards e0ed0008b1712d00f21d8fedce32eeb531e5da82 (commit) discards 3fa3e11ca23f788841e00aef8342e1718675477d (commit) discards 3dd9d5c0a399757059c60d9d8c751b97383da676 (commit) discards 1cf79386c80712311c656a166b9dec5847857266 (commit) discards e086b80632bad6c3afb24320d2fcb74304897a9c (commit) discards accc28528009361b4b1e268431d6e2b94112020a (commit) discards 6e2b1bd328607b2f0d5175b57389dfd2c3c62066 (commit) discards c91b409caa37a115a46f60f7b3725d7dd1b3c50e (commit) discards 1561ad2ca695058c79183c07c59fe1dab825deff (commit) discards 74de704973086d5cf360578ad9eac5977cfa4770 (commit) discards 2e18c5b4d9fc583b76b4c8e4470579b1a21845ae (commit) discards 7fbc47f83a5bf455b6ece49deb7771d144bbce4c (commit) discards 1c95ad98cd1c0e966b738796e74923db8919b754 (commit) discards fd984d03bb629d08ac4192c5a1d3432e94ceb3d5 (commit) discards 70700617d3d6bd45904a81be443fe28aa7fd0387 (commit) discards d743baefedfbe679a647013adc2718defef90718 (commit) discards 1da8339ffb5719ba92ececeb27b6c335f3e6b4aa (commit) discards 0cf1d54a05319be2f388e5f2dbb1bfd75a2a9043 (commit) discards 978cb111e7971eceb238d396124e10424b148a6c (commit) discards 9bb344783d39da5dc3e57d48b59f551ba9a2fa4d (commit) discards 7d13655b747ef6f3577138f55ed48ec8c2fa11a5 (commit) discards 0fdc272b25c7918359ae5b0f27277ff1926bcb75 (commit) discards 7fb1abf7583a22d88f91b2c933a6a379970efbcc (commit) discards 6fd468043b284ee30085cf86be16ba99725d6462 (commit) discards bc2d331feb7c7e736f2d1289a11518053177a6f4 (commit) discards 5ffc6b437d86c800519432359277afb39e604c5e (commit) discards 1fcffcfbc3fe6c2f21e5767fc760fdbc0c89aa68 (commit) discards ea9021a24a6ce0606a2c12f3cab8f2bf0fc12db3 (commit) discards afc027473f7fc8a3ec233fb1848f728fc94f56b6 (commit) discards bd39ad2269d302748fd55e96431b221ba6c7be6b (commit) discards 54c0d6f7c41d3bc882ff339af8c01545e03606a9 (commit) discards 9c8ce46b908e78662d970ce20fa38c2f7b710df1 (commit) discards 163dd056605065b2f8221e95a75e422c0f034f05 (commit) discards c64f4753b3003a1b091678850f272669926ff12c (commit) discards 137de401218c834262b0941e8b47de600a2c9052 (commit) discards 9a545bd0c9534eb6e6f7579a1b5f0e57d0a7ee6c (commit) discards 51985ca69a1f050b3c724043e01582500882882c (commit) discards 44ac5d8b99e035b14a0eac9943dff5886c061017 (commit) discards 07fa8a4a72460bf77eac238de0b634896f8d90ca (commit) discards 4c5426f2fbf65d1130fee044f4e4acd83f0a4fc7 (commit) discards 0a38d7761e1099b4e369da8948f22ac7c0c8d184 (commit) discards 1db40e60e4675ce363855ba429ceadd90e800f1c (commit) discards 190bd61d8a74678135396f28940655114d9b6513 (commit) discards b683bb6585165c29ef883b41b97400d8ebc550df (commit) discards 90e87a481145242bf661de4a96a7ccda1476034e (commit) discards 10b38944f6e51f33e3d0092ea1dcf3e88538a5a7 (commit) discards 54879c381e287b6cf0344c08086bf9d8faf686de (commit) discards af0dc500ae8639d2b19c9a1a55937e7bb6f27db2 (commit) discards 7438e24d1ab38317d73ace94150573fb84778f59 (commit) discards de49305ad501b4bba758679be7b5e80b68eba1cf (commit) discards 99cab144b5bc0d7b304a490f27bab6a28cead815 (commit) discards f3082c7d75926e77062bc83c0318979e89ad0857 (commit) discards 6fc0bb088654437771b89e42c90f6196d14acad6 (commit) discards 585cb68ad4ecf011380d35199bd4609a36b503cd (commit) discards 6734fe711bbc69dc999f237a1865a3013a1d762b (commit) discards 018a3800b4cec46e0cebb6707497bac8045d654b (commit) discards a020724030c651aed8e427511b8dc79c4ae7a661 (commit) discards cc06fdb5fae26a01914cbbeb8ae306bd17ab01b2 (commit) discards 7eceff48a2b8fc9590816748c63f9563e7929488 (commit) discards 68bf642c1134c63e89c204bd953c30381de8488d (commit) discards e6a25e85783cf7bfc21f45c8fb6802bd2dd40546 (commit) discards 245b88578cd3d7065bd96641fe09acc0c93e3e72 (commit) discards a41974e580d7d73b7e22e9f927a75e84d3cdafd0 (commit) discards f06298f163fd29e3a27f3088d77da645b11bcf6f (commit) discards 04d565281938ca24ffe5c82cda177624f221cd30 (commit) discards 029d68ce47c5990d809716b88c65e924259e1f68 (commit) discards ecfa33e9e4b3b10b0535dc7fd52bd69be43269fb (commit) discards 73110296854d38bbb1bce0f016668a04b3b7f871 (commit) discards a4df823c3df6fd456b2c75d0945ffc60c8259239 (commit) discards 7b01cbbca406aa4d11fd12de56d3310a16033b1f (commit) discards 57b410eba6247b7a2805d9588963435946512a0c (commit) discards 4ee4c67003b7b0159ae5b980dc1ae1fb7a335f5d (commit) discards 33bb9b834d4a563413e52b6010de8fe7555716d3 (commit) discards 6126383ca47ace0ae6497cf9efd4cc41e87dd11a (commit) discards 7a04104d6f748ab2ed8bb880cad8b47fbaefe580 (commit) discards dff01c07f14a5c78048a7b71f64bb56fb353b46b (commit) discards e6e6ba9f3861fabf0153568f13d577731a0c82a8 (commit) discards bba8aefca0b4b2eb7ccf86c2958b6cad397403ab (commit) discards 03ae958ce40b529709dbaf4a304be2ba3f6454b1 (commit) discards b2359797668addf5e79ce4de36f1cf62cc93136d (commit) discards c6bdb303d43383f4d3474f54e5dbf2b6d699f2bd (commit) discards 2e0747272fcc686851efb2fd804ee2bf78960f5d (commit) discards 8458adebbb814ed3a38493bbd5af6b5a7531939e (commit) discards d9c5634507118428b27dea28bb3950beb4da9741 (commit) discards a6db66ef36c05d0989343fdb8dd5bd8860754839 (commit) discards 9c7b507d06123aedd5842e2d7bc8eae42bd5e566 (commit) discards fe1711fdbab9ccf7c1565c0309fe7609fcfe1afc (commit) discards 1b91f811bdba30759946c23132579fc55f3579a1 (commit) discards 138fdc83c6a4f614b657629b2937f78485a78a26 (commit) discards a10125b8c3661123d99ed77cb3224eb4fdee5854 (commit) discards fb017a52d183ded3db8e01eec5e29b127ccb2ad0 (commit) discards 159ae98979fcfe78f497dc38e2f6daad8a1d87cd (commit) discards 54de293b0582bde9db579bc8de8ce8d6ab4750d2 (commit) discards 7d1e664dc86c1b533bf70ad688fc58bbc0438073 (commit) discards d2c34232ab046c9d8a004d8a1d919731a94cc70a (commit) discards 1d6d9601d0dc0e8ba7d3136e700c0f899baf330c (commit) discards 771caca78d5964486dad09c0f9f93fc08cf76785 (commit) discards eb88304a1680890d2644a3f0d14f38896e164e33 (commit) discards 3594419622409870f8ea947101452f4169d3546e (commit) discards 946f47f1899203e3c8e1d1470b8708260c1b4538 (commit) discards 8a26a6f6d2ab7f8964c5199723d02507d2292415 (commit) discards cf253c35bc8de814e7c5b3f5e88bd9988556dbdb (commit) discards 45340d8017c1915e4353961022e8c08d1f1eb7a8 (commit) discards 316963c5941d387b12de505d2e418c1788018b09 (commit) discards 10109165b75dacb1a53fee2da0d4fa232abaeef0 (commit) discards 85e107a56e1cab1658fb6b0c8e04b9dbe8514d61 (commit) discards ef880c53b2dc730e212af914e1ac4fc9753eb5d2 (commit) discards f5c5fd9cc34dfad048b9f1218a36a1d5f165ae27 (commit) discards d41e6498f19e100eb8e9241784bb271b1e66c831 (commit) discards a9eb0aa6efd0aff8ab64e597429757fdf1939c46 (commit) discards 54421f591015496fd3c0c3da7a5221a84ab7c8e3 (commit) discards 6f103acd796ebcd7c0001a8d58568a3d77d2b3e6 (commit) discards b55db357d93c72ca712feb1e3ee91b60f026bdbf (commit) discards 4fd043e3fb69a55dee43353547f2fb1fa24e7788 (commit) discards fcc912a991a9513cc605ea0f3a24f96c2c4ccdfd (commit) discards 62941f69d8d3f32856e136e49eff7f5c5f4135bd (commit) discards f8cb2961826c053cd168e4b440c44bd52c7af5d2 (commit) discards baac734ec4b9088c69f87170b3a63f9f0257983d (commit) discards 74a01d23bc4661e2a4dfc1eca5df62a735332072 (commit) discards 21f8605d6871680e90a8eee76be1abb2a52e2761 (commit) discards e42c423c9275ec5aec8499c4035978087fc84c02 (commit) discards a9366e4485c2990c394e86d9de3a9c9e098e4aba (commit) discards 29daaa07b0cdab12ce856c7520cde5270c68effc (commit) discards 3f1a7dc5b530f843df84348f80a03f5439f71c99 (commit) discards 22ba5b35602df8b210732330ebe1cfdc7fa71002 (commit) discards a95a4eeee8910f87f0ea1156148834a56e4e6edf (commit) discards 83ce26b226416b20416eeff70aaabade876920b8 (commit) discards 719416f66b1757d33364b6ffb37119e29596a5ae (commit) discards 300348916ed9417dd16e7fa041ba56676ae08f1b (commit) discards a8b2840f2b3a634ebda4a601700c8502c2611045 (commit) discards 285ac684d7f5f9e8367d292d0c7f43a6a61705e3 (commit) discards 01024acee13d2d6343bee07f8b6de3e8a1efeb82 (commit) discards b3fc001e6cfcfd9219374d13f996981405506118 (commit) discards 2cfd09c35c65f181822e9e3cbe797118a45a84a3 (commit) discards 40aa1d90f33ed122ae2b228ab02948145b54bf7c (commit) discards a743263afbcbf30e6345e4cceded760579680760 (commit) discards 545ba61226d0ae2a581a89d60435ae5621c4ebc9 (commit) discards cd13030f25cc66b56edeb80c6631920a9aa970ff (commit) discards 1a08df9b20d4b5c0e5bfc0ffe6d0b8d380aefd72 (commit) discards 85c22d10e2dc8f2d8303e4fd11219d9c4b09ccb5 (commit) discards 9462f53c90beec68111bcd137f9415532aad5509 (commit) discards 0132cd3fc7dad74f480f01694d8db89207707020 (commit) discards 70697b8835145a800f035c667f5c0f7defdc97ca (commit) discards 3018400461fb6e162bef812e00dc321d0e638c90 (commit) discards 81f01f0ee7ed5bef174ee5e47e3932192b74f805 (commit) discards a3499c534383dbd62df150b78b815719fedbf16a (commit) discards 46853d7f3d08b20ba518d7b596e6082a2d8d9945 (commit) discards b09c32c19a04a82a81c1bd532fe59dcb6a923f73 (commit) discards 309ced0eace881a2cddcf6807fe467c914ac9bb9 (commit) discards 4272dcbff507adbb02a4d6f56375420f58cfb510 (commit) discards 2091e33dbe7b6b24251833ffd7d3a5c73d61e50d (commit) discards b262f44ce241f84f9616cf92f2072fd7612cc944 (commit) discards 27869d7a265aacdee54933fce0aff5cb0d404d11 (commit) discards 96ac90adce931a3a28c768e102b863637c8ba98d (commit) discards 231fbe5e7ac693fd3d05fd0c65aecc2a98416580 (commit) discards d3e7c2a63d8bccaf21ee54abe1f2c05e9beca7ae (commit) discards 422ee12aaa0802f3de6e23c21baae9d9b4a9372c (commit) discards 181b543b0ca349a8a081eab141ed7077467cedea (commit) discards e06feedd9e478defd1b9a897245f54e896fc8608 (commit) discards ae70ea0c13dbccc1842bfb8b1708e705a8f9d662 (commit) discards 32b8f1008eedbafb7210164fdebf80c98c9911a4 (commit) discards becf16c58ce72445cfc81ece0e29c10627f417ab (commit) discards ac736e4e45e735479465a53c807530356ea6e667 (commit) discards ca6327fa456f7a9a299a44420c71548b5e2cc944 (commit) discards eb84fc772fb1ec44de8b5c6ab0ebbc912f2705fa (commit) discards d79cf48475f2bbfd3c28c7931d22b2e2736e9ebe (commit) discards 5bb525e1eaf65a9784e97e9929b98ac846703e4d (commit) discards 2c595a6ce04c714b51fc8986315ff68cd463fb35 (commit) discards 2f7caaf2cb10e1cad8cad5ccf27dddf0fa97ed99 (commit) discards 4b04032bd8c984c4cf4cc6dbcebe9144d7eed853 (commit) discards f574db09583479fb85dbbbfb9a376843c700669b (commit) discards 98fa4a914c83228a8ac6c29d93839713a39a3392 (commit) discards 8f9ddb5a8966602810a5a49aba70723f13b8393d (commit) discards 3734f4cd441a6bc9595e83338cf29c5af24ed9c7 (commit) discards 1aa6bc6eec5be2cc16ef5b130a5cc213bff634be (commit) discards 23d9a237dcf72b8e65376ae8f547dc1ad5939719 (commit) discards 35776314d0a073775f5dbba1e81362d3e012d507 (commit) discards 342678698c137f2df295efee88f4b0a0f91b734d (commit) discards 9ee13b723e0ec150e03dae569c71f370b4491405 (commit) discards 5254df0466fd8213905b52f7f6a0ab6c2c8cc862 (commit) discards a90b4fea347b4705a40a6ff3fefc0014fee0b33f (commit) discards 7c3fd20104a5ec2a7bedfc2893c33259f894b68c (commit) discards a390e046b7d9e67e2fac8adcfd6c47c1011c01bb (commit) discards b9a446c54ed6e16c52a71f89ce3029c9e906cdb0 (commit) discards 47c1b6d96ab853341efea272efe0ae5a60e97634 (commit) discards 1334d02ac0913370a5ee77d63dd7b64fbb0a3f89 (commit) discards 5c02639b5acf48ead80045f50e841c1c43f36d34 (commit) discards 4a6b4e86f16a25074cc0f77fc7ddbda36f5cbfc4 (commit) discards e6070feeab6940a3566a59a7802f003fa4181093 (commit) discards fc77d19b7bc6c64eadbd37f9715a79431f897379 (commit) discards 8b7fd76d3de084e581e994ffa171d1f6653a4d55 (commit) discards df090a2a6b1042b8c575ecce241c021e16a792be (commit) discards 66ce95a93049404324a382d307730c3aa4a1e443 (commit) discards a3d66bb4f075cb8b073aac6a84f3651ebec9aadd (commit) discards 7b28994121b820e24c48e80c11ff5149f16245d3 (commit) discards 80f3281c095f772b32eb1e042d267a089204b8e5 (commit) discards aab453f52a37cfc43230e67c713ff7d605e7dd16 (commit) discards 93bbbe96af98a6e4ab2ae5a48e68690b44bc103c (commit) discards 935f2c42141eb78c3fd13ace50900bd99b905dd0 (commit) discards 8ecf30807556ee3f614f4f2e5181dc5bbfbfdf81 (commit) discards 2632af929d8c63447a482e16ca92f6d2c5dc1ebf (commit) discards 09e6fd3f4ee5069491034fb150405fe7ad61fe3f (commit) discards 45a32dda3d09878fe07659002fd192ed8dca3575 (commit) discards ced63c35167d5f6c52583b5e70da1b2cf669c8ef (commit) discards ec57dc7ab76e5765bbd50905e47a1cac2aad38ba (commit) discards 6f5a0e9ff5984aed4b99b7a04a6cb1339b86e3b1 (commit) discards 2be3175ae91924a3e7460f67f0aecd927d6f2661 (commit) discards 9ab7473cb97248efa46acda5a44f0e1a1207c646 (commit) discards fe0d8d1ec508d96d6edc08ec610f142633e896bf (commit) discards f79f9766ba35f8d488b4ba33c7814fc3c30de7f7 (commit) discards e897646e1557282d6cfbf6c0c66d048222f7942e (commit) discards 24febbea8e29c75d6dcfaea6d7bd871c0592d207 (commit) discards 39d58e0452f9af4b67f4c9d1056a49cc765ef000 (commit) discards 0e31a974d4d4f2ac881a51c04ccd17a64d38eb0b (commit) discards a0d36d8f9d77af56925b90eee70ec5955e33e58a (commit) discards 0f95b870358742aed11e43fffb958251c8e19994 (commit) discards 18feeb106786fd38616c18387da024baaf0b31ab (commit) discards 5401c604935c496892875411cdeb53d32ac246ea (commit) discards cc198a6e91ee0314b6121433ac4828970d18be54 (commit) discards 05a82ca61866638ffb6ddceaefd61f2a5057f788 (commit) discards 25bc8fe3e88d66070ff1ddcebf67f125ac16f617 (commit) discards f625fe3b01666817859a761e9386a6dcccbfe940 (commit) discards 10257c7d5d6b8f15c2e57af2c9c096e48a3877dd (commit) discards 97a68c50d91b115e4cec42ea5a060470c88f5a23 (commit) discards 903d13648184bbc94030ce381ffbf9b7702e7dce (commit) discards c4e350ab0cfec3c7500cf196b712874f90d562b0 (commit) discards 0920645d1f1b7f647a9849b6bbdaffeb07c162b1 (commit) discards 534d3bcb2990503d8a739fcbc3362457fcc55568 (commit) discards 39ff276c1c495e303e9dfcd70e2169950af3cc04 (commit) discards 4f4294327d2941b0634cb4acaa7f35288a9b1f09 (commit) discards 08955a2b29f50aea6fd2391d6064ad76208743f2 (commit) discards 650393fb90f79cfbbe9bc4b89f0d0dbdd9e9c3da (commit) discards 55da2afa7f1395c3ec20a6ac5836955264bb0162 (commit) discards 6fb1e5d9c1221d4943b52a284668c7435596268f (commit) discards c854fe518adb53683cb0336a9f1f722b9208e42c (commit) discards 090864fa3997cf697f046200e1ea813464ec79d8 (commit) discards 81608da0067cb1bca2f718e4973e83af9371a659 (commit) discards 1d8a9297118f86ba40c0d2cc9f86b32552191acd (commit) discards 86e7cdc5d1c6d8d8f173d4e5c921c9588f75679f (commit) discards 49a524b79ba74a8bb37092a7b8bf60821fe8e3ba (commit) discards 479f3de26be7267368a3ea912b0b52085884c55e (commit) discards 0b8a9049f58bdb5ba224f74095fada7af4689ac6 (commit) discards 844ac2201c4e98f19de695328334e7288197df65 (commit) discards f6eab64c5c8eb76484f0502eb99c4dbefbbda7ef (commit) discards 27f5340d6ddda512f7d5d12b088f177e6aa38d28 (commit) discards 903b2901dbd09e9ebbc6dffced4faa8cda166a11 (commit) discards 5eb951aa302676d2bebd74f630fece440db3b32f (commit) discards 430dfdacabcb07feb4f4c1aa6ad5a57e97a3e250 (commit) discards 7f81c3cc3c44ecba08bf58d219740190de3f55e9 (commit) discards 4e95227f39b3af92e03eab1e7808eb2d031dbdff (commit) discards 93630948e4efac18ad3f065365831a3cdb7407bd (commit) discards 5d5485708d614c16740b48919f85dafc014cd14f (commit) discards d24af1e1c2c49bd8486ec8b29a12a6e11565feaa (commit) discards 4268bf84b06a66c98803e4998116390ea5d24da7 (commit) discards 55dbbcf195b9ad150cf0d77c39693fe1e5f1009e (commit) discards 82297de7532cbc6043d77f541772f942cde2039f (commit) discards 836604cfd3bc5c0990961a14a22c31baeef0c9fe (commit) discards da5b3822a4decadd818b1b493b78635eef4067a4 (commit) discards c06a835822049c32a043d2824fe0c8cd05ed7524 (commit) discards 08769e97b2344682a6ce856b2a69ea2e1bc34b37 (commit) discards cd28c4fc98d8d59fe5c9537d3a4288d5ec89a8a6 (commit) discards 568013bc6085d17a97db07822ff26df40cab3788 (commit) discards fa5ec0e553cdf8d41018e1a14a62613134624678 (commit) discards 75198fe4cb130f3d6d0d43f50882188879a59f6f (commit) discards 656ecc1bc06ec99182a6b7dfb516c8ff14c3b84e (commit) discards d8c7913b98c9309e5a12eeac52620696d8bf231c (commit) discards a797a93feb8cc0f746f0dba404b9c9bc2dbb8f62 (commit) discards 4098b4e289115440a7baa1bdd889d27bece2caf7 (commit) discards 9be9d799f388a8b146f65fb272f5fe3d58993a1c (commit) discards 40aa182e3083f6d418da46ec2ae3e6853f5c9c14 (commit) discards 03f5d55fc95d9c3ea2516e8d7a852d1a73cc0eac (commit) discards 34a0ca50960a152c3ca9cee5099f6aa9109f7735 (commit) discards 751e0291ee9bb99119fec0c1cb5814919ec5d8f7 (commit) discards 7e880ee33e35986a7435d9e1bfc6e2558b2a9e56 (commit) discards ad1d1d2bab2716b9f7f4b7de2922dc2fb242780c (commit) discards 3910889aec891e96179a8f748e594857588fb389 (commit) discards 3e32e6ad7b63a16135bf0b2355608e86a46b9795 (commit) discards 5b752c54a7c6c6368c97cf458340c71634c3ab39 (commit) discards bc0414a8b533568bdbc84bdd78d288f056e8b231 (commit) discards 818887f9d3d5095f6a5e29c0d72b0bd9385707e4 (commit) discards 248fe20dcc59a38afea330b39ceb8f4aeb248b94 (commit) discards 3a8ce05cc667dce575eec4d4aad8ea36cc62b877 (commit) discards eaf9a41f52c5b88db7004baa03edc13a07fca0a2 (commit) discards 358a3192c55816d012a2d727a88924788ea1afb8 (commit) discards 4f89b514cd5c71e43e44a20a0da7ca58bedff5b1 (commit) discards 525b0978caebd16184020edc935a60832095e9e9 (commit) discards 0ab67997f9a267d53c1a40ccdfc86b8cfbf840a0 (commit) discards b61f72906882b0f1d1538c1e21502e0fc5581282 (commit) discards 90e58696fec3dc29f64eb43aa872a5ae9081e6e3 (commit) discards a971e7de708d954db27ab8a8dfdcca2fbc7e077f (commit) discards fe005bddd7eaf6bb2f8e3569b5f7563265c00052 (commit) discards b49c366efb37d9eebd9f597d2bafb27d3709115f (commit) discards 48ed9c2c5d5a5833096ca9f476b40d997dcefd6f (commit) discards 651acc62f7ddcab09992ba9f98f66ae8303e7d93 (commit) discards 4d7e4f1ec20bb0091ac3a978d3927c0191f93ccd (commit) discards 638cbf16ccf1403db0c39104d18fc5d8ea194273 (commit) discards a3ea8a8f201ed18e87d4693bccbf298a1abfbdc4 (commit) discards 54359f1b7846819e1fb12fb580ce8c5ee69d74ba (commit) discards a1e425029c3a123d1b77d8e81acea873af81961e (commit) discards e80a40cf6835052ccf9750b6c89cd2fa4b776584 (commit) discards a3b01c195be3c1454c60e634477d8c825c60ac77 (commit) discards 665b12b1f534ab477b173eecfb05904f43e9cea7 (commit) discards ebb613352939291463cb84ea931e6e260de601da (commit) discards cdfa8bf7aec16823ec402254a185920e47582f5c (commit) discards fcd7515cb2b0fc641e34ff04dd31baa9d851e9b5 (commit) discards 723a598c24ffd6b70b67e1ee1864a87ba33ed1ce (commit) discards 7732a675988694f3f8c182b2dec51481e1652efd (commit) discards 94bd1a7f26df0f59652364e33f9e9b46729b036a (commit) discards f5c36acfe2437835254210061030f179050f62b2 (commit) discards e085fea23ec990470dd83d654c6639ed526420c7 (commit) discards 1d7a1bd1311fe633669c7d48ba65e51ccbff24db (commit) discards 4f9dd5e164b355d8b116a5f3cb0f0271c3366d10 (commit) discards 1b1dea020675d588053f0051b5236dd60d115b08 (commit) discards d29d83d74323fda1d8c6c50627dab5504c8441b8 (commit) discards 4f9bbdc41b587dba82a93b7937847a99666e6263 (commit) discards 4551ae51c3dcac7588962221d2dcbabe6792572c (commit) discards c2d7957142fbead7b71f2d183f5de2e6893ab874 (commit) discards 4144d518c60cd215915d9ab07a49425bbe701286 (commit) discards 092d22a2142e00245c93f9a5a6592176c00188a8 (commit) discards f804c75d99598cfce0d4e09c0fcef40bd8827f9d (commit) discards 38968d15fe3250bb86751ebb099fd6844c6346d3 (commit) discards a78922a21221b1c88ebfe0093c7a55bb4bfd6be7 (commit) discards 82ad5278b3fac8adeebbb32bf155d024d423c43c (commit) discards cfd6876c2127bd64b7c2ced80407b5b9f962549b (commit) discards b5b2f6134dcc06ba994b1f71d619b8b4a5626b1e (commit) discards a1a710482b8533d181bbf29eb67d2646036614ee (commit) discards 34690e47ff48f5c52b13cfb7b2c0226f3c0dc92e (commit) discards 11a7b1f9a0af11620eeda79ad0009df8bc65ee5a (commit) discards f4d52d4caae78359b59d97bf596a269e47f4def3 (commit) discards 9b70d9a7a565b7af2f6ee4511f687316d1ba5a48 (commit) discards 709c4e5f9729dfad0862fa2daaf2f0687d04a56f (commit) discards 1c4c84fc0ffdba48fd42154e7f0e85ddbb1c5ede (commit) discards b84b71defa49a715d04d9776a5f0c7040103d6db (commit) discards 299c139c3ec6c9b276cefce4d6f1568d0d7100dc (commit) discards dd4bad220ca1f4ddcacfe69e720e7d32b744b6f9 (commit) discards fcd6c54162a6270554de3b037c03398d7655732c (commit) discards 1f26f2f86ad63865a13df010cc3c62e34a2d6d55 (commit) discards 282b156207ccae94c8d80efec72c106cf7e3b4f2 (commit) discards 87818abeddf0bf47c32392ce0806965536a0f8dc (commit) discards 6fe762727acf216682470927a84023fbc559f0f7 (commit) discards 2b0bba8e94fd352904e5bc46c802488aa1d538ce (commit) discards 6066993d21568fa60b5319943f58931767513d99 (commit) discards aa69927b8fec99064da113bd6181dd38e82e0d46 (commit) discards a1a50c87ece4c26a389a8a879a04d4616a2c9e0f (commit) discards 57e1c4a8e89fb3abdac3ce523b384a79f91275a2 (commit) discards d349290f7b3f61e87bf47a683bffe9b056bd89f4 (commit) discards a5fa887259d895c83361a26ab072251f61afb6f7 (commit) discards f7f7b8096366fd892c5858358e8c1654326cb3c4 (commit) discards c81a94485765bd1a5a437c2d1e0d318733677786 (commit) discards 7c74af682e1c5b063aee1f1451692c2713742157 (commit) discards 2343708a9c13f942d0db94281a953215297d5b39 (commit) discards 668763f4907b1b6115827160037b867800224df6 (commit) discards ab0a2bfa034aa535de9dae1cf7cbf03224ad2bf3 (commit) discards 257c7edaf7d7e6151d11e5ef924d87a77f2c369b (commit) discards 6e2f07f1e63a3bba9721ccaebf2a4d03e02edc9b (commit) discards 9fd1c71b4bcd2f9bc0038fa576dc89688ecba9f3 (commit) discards ee562c82e1e3e321c2ece3b5970114a31b693f33 (commit) discards 1e0df408cfb343599e30df7ed41137431cdf4a51 (commit) discards 8f452bc5199c6964518f9b505fa904493b3814e9 (commit) discards 6b522089574944f85c94825f3b0bbc3ebfe8a715 (commit) discards bad1eb118358e0b814cde075388c4e342992e4bf (commit) discards 764b990849af53e9122bb513ce775df4c270eb14 (commit) discards 27ea959b4b3418cea08594ff2e31e9ae6ad10e09 (commit) discards d3a24be0baa8a98eabacef7b0ee7b3d088ada316 (commit) discards c2262aba2be55a9df2a14be5560ac0227516cd49 (commit) discards 917879fe65e0c7e438ea352bb6b87725edbd75d5 (commit) discards ae7279f1741234e4c3209c7eec9e743791df1087 (commit) discards 0f91359f3aec468fe5f3673c1048e8dc22556b9f (commit) discards 11642cce3cc7222514f32397549354bb9e217688 (commit) discards 0f937ca13415ee60fb636cdbb6e6e5121d4fcb63 (commit) discards 9db4a8265c8e43d36a3333f96e4cc13a8fc1c37c (commit) discards 6e24e8e67b345878553531205fbf0a2225f32349 (commit) discards a134136ee715f6b392ec8bf3c5b3e31af7953c18 (commit) discards 6014178b5b751c0d35a18f293fe1dec37fcf000d (commit) discards d6ec16804a62e15aad034d6c6e226748ca522817 (commit) discards 48a1ae3896561a0f57b0f362266b44526930b5f1 (commit) discards 43dd86fb96f8a20b405df6f6fda932ad6cc2e017 (commit) discards 7b1de56baa504c97cd42790fa3defc9f2182f9c1 (commit) discards 6b66a0516bcc4d7bd9461366ea7bf958b4ef9aeb (commit) discards dcce6bb510ccc2096350abba07ff9f9efb8e6b9f (commit) discards 37753892f1033f90bae6cbbfcedcd88d660fee9f (commit) discards a082c9e913bb3d777d29e4692a8a6e8afcd552e2 (commit) discards dfdf4e1e23e527e82c6bd1c44870fbe59d1db312 (commit) discards 871c871b80d314b08bdf82e40e5ea04193c0f5a6 (commit) discards 526436fd1f8c15b5a8bb82557245d56a5587c536 (commit) discards 2800ea199d6c233fe0aeee91de3be33dfee19607 (commit) discards 2081bf97b9836f5299c22edbb1ead077842ea2bc (commit) discards c44b7a74651d2b7ae896a9180ce1f84433c540ed (commit) discards 3ff07445d4846f5b6c7b5338b396e60d330074fd (commit) discards 43393f26d102ef63b24e776d33f53b5f44b84d3c (commit) discards 93cc3dc556939a99288b50d8324d0299d0c61b86 (commit) discards 00046ee0f232cdd4dd9b98c376ad849cbbb90147 (commit) discards 47c9773048f134eff7517ed73295deb34c671aeb (commit) discards ccbc2ed93c10ab5f791b2ae15cf68435bc1bb7fc (commit) discards c602e04ff6c96450bda06718505989931d128d9b (commit) discards 53346e494876aaa5af9b9adf39e7f510cac938ad (commit) discards a24b9c9f68709dcf7cdf226aa75eecdaaaad7b5c (commit) discards dd345b913bcec51f247da22bba045a227e7db320 (commit) discards 72f99898d2dc3dc3bdd7365d1c113462d4d139cb (commit) discards bb8d901c4f437c57b1c349575d5d93eea4fb4203 (commit) discards 715d250e171a94736b19019ac742f739899ad997 (commit) discards 20ba5da47991e2b00854ffb66985ce9388d412b2 (commit) discards dcdbeff9d80202ef8ab0c9a3aff73a09f407b53d (commit) discards a95af703237509fa55c07df6e381dd6b19550665 (commit) discards 0235f0ba0ef9822d9e289f17360ebdf8b7980824 (commit) discards ea2b4774441a594e71ad921fe4721318fa200159 (commit) discards 8e62bfcb95fb3f0eb68214c8cb2586a3cfe8de8e (commit) discards 102640ad7be96a2f23194cefbb1ca824416576dd (commit) discards 416f6388c3756b92b99bd36ab12de957cf55409b (commit) discards 2c8d5d8ec9833f02f6a7b58079dbeb71da0e2456 (commit) discards 8bb15b270c635a75f2bed3d007454171e7dbc73b (commit) discards 5fd5ee0d4889440f443446994dc74be157f78653 (commit) discards 3085523f568cad7c9cc720d1899783fd33128bb9 (commit) discards c4154633cca4b5b9764e192770d08c04f71a6970 (commit) discards e9958c5b0c37b44ff4dd644245412a526ba6118f (commit) discards 2324c299177be42375610c4928a3b77e60a8bf10 (commit) discards eafd7e5e15b2a5b6b28d75e107a1490e60e64563 (commit) discards f93897390bfc89ca54c35b6df0924c59e5d8aeca (commit) discards 1c01144c207d7462e93a6955a5cf129373e84df3 (commit) discards c6417fa2b389364f83e6bad6fdd4ff9f059b589e (commit) discards e5855be613158491cc3b29778c76bc4ff021a3d0 (commit) discards 56515c3a643eda32d8d527a215d4934e521e5e07 (commit) discards 1d668e25ab8bfbf92bdaebf11a2b756f22895b33 (commit) discards 6c6eab8c13d2d7dddcd078a25f8d64bf94cfa910 (commit) discards 905fdcc2488dfa0b8cc8bb4d2f0f199704a943b8 (commit) discards 36b2346445188c279b8d3da2c139a0ca862f2511 (commit) discards 739ac99e3b80a15c81def7f65e24b035a96b3602 (commit) discards 7997d24f33eaab50ed1e9068f8326e6e0dd706cf (commit) discards 6e310ef8fc0d5b7e00460b7603f6b5854aa61db1 (commit) discards 0e83cbe5cae49a326ce687d1079471dd072b915b (commit) discards 7e047c3fd12cf3d6a4fae02021ea561512041d8f (commit) discards d11c83b16e79f20d00082633d03c68fd0c6c0930 (commit) discards 7f8ba794c9d60d560968f8f61680d2fffd6c1b31 (commit) discards 0ca7930fa3270bd71e5781539afa7af8b9c975a4 (commit) discards 2e51b571b08d6573936ee787088a72df64d37f65 (commit) discards 28cab5ed46a140b70d92ea27214f445dfbd26467 (commit) discards cfeae1ba99b9c6a545a9c7608eca4b7ba1f22192 (commit) discards a2faee2023041cfc0cf41965b4a2447eb6d2c75a (commit) discards 321013efe74037a098e261bf805a426c27b75dbf (commit) discards 84c7fa2fbc43fadd37f406dc7cd6f20db1221386 (commit) discards cb2d073632211b8459ca29aba4785c875bbfc8ec (commit) discards dfecc914876b164ce64c53c4f048aa38ed65d9c5 (commit) discards 3a645dee60b50ee188cb3b0a34866c728003059e (commit) discards 6d21b59fee891e343e963e2dd13018f005bbdffb (commit) discards ce25c9186f38b75bcf9d4967210a8c07020cb0c4 (commit) discards b2a3bbff9bf470d4376680535150ee8cede158ff (commit) discards f87a32c66a059474f160a9055e7d582c424c152b (commit) discards 19c0026581f8bffc7fed0b97e31c7067475e7a65 (commit) discards e8792d0ad3742f5babdde4e1ec62cf97cc5deb66 (commit) discards 2f0105d0506a0101f546c8f27c4cb0d1a766ee5d (commit) discards 7b59313902498fa061bbb6b096ddd9fb3094774e (commit) discards 577d7b5538f3ce2017092cfec54532a10d3382b9 (commit) discards 009c41d460f1356c67240ff5ead72376f532a709 (commit) discards ee5d1c4dcf134a78756c74e2c3a91172f48bc240 (commit) discards 349e9d5913f953ec6a40b24b9ea4866cfd2eef43 (commit) discards dc5b964bb12b0a019f3f58fe7cc67ac3976b6d80 (commit) discards 55203ed0d72d28df807ea9f8d326e00cd77f5ee4 (commit) discards 19d1385714600212c47f06e8f4f0c7fa06e18c29 (commit) discards b7c80a8490e00ef1c76dc9eeb8627f92ffb18d48 (commit) discards c312454f0c3045ac34a1c0eeab0506b2230daafb (commit) discards d5470961642db233aba14432a66195b4acef370f (commit) discards bbf1cd1f437d4a90b2b8bf7b9017c3786b2777f5 (commit) discards ff07022c264c4414c5a51299b71429f8da2f37fa (commit) discards 1347983883fa8bc90400878af68b31f80242363c (commit) discards 6fdba3452a737d0385085ad7abe89b299d6f301c (commit) discards 666e9fc2c652ffac2c13a2959ee04f9bd34d5082 (commit) discards fb9a1b05accf3fb8a6eb3daa288fa3ffad822dd5 (commit) discards c5e2fc1571827e7bd861ce69a6878102fe16ef13 (commit) discards 98ed05cc9800c205389b0f286afddea923cab757 (commit) discards e96d8f163012d52314a966128dc9f63cc2430538 (commit) discards a94bbfe1df3e7498d3246096da510bd8c52d9917 (commit) discards e9dc863e21635111f6fdcc8c2d0c4fd6ab2f8e14 (commit) discards 8c057921f3e5c889cd148e461ffb67932dd78fbb (commit) discards ff455e63f2eaf9140894be1b45e1801d402fb0c3 (commit) discards 002181e143e5c56c554abeeb37c7611dcdad8536 (commit) discards 3406d05ba7fafb8e20f69bede72db3564bf8b198 (commit) discards 0b716f21b4caac60d01c58ef5471c97421fc2685 (commit) discards 86c484c134ca46edd572c3b46c6480ac9011292b (commit) discards fced79a4933560500a5710af3c48019da700948b (commit) discards 1a730cb715af3dd52e93c6680d63d04a0ebfd703 (commit) discards 6e24f55859138d092ac38506085676078162d0a3 (commit) discards c6e7988bf87c910ce19366c40694f1e14fd58cb3 (commit) discards 38ca557ad931559b4d58d8fc4de986a4ed1405ad (commit) discards 8016813234b471e5636bcff963f5a4ed3391d972 (commit) discards 7b371be267ebd4dd3b74b6a1d21304c0ac527731 (commit) discards d3ddd29e8bfc2b36f8c7c2d475c1d4cf630c8388 (commit) discards 502116e4a08d518cc119785e44049aa9e6a8059a (commit) discards 5ab19aaa23dac4771baadd1f2a2b874c8c630154 (commit) discards 3c747978f4b1dc395846e90f613fbf2acb6324db (commit) discards cfd4d52dd07085c2dab6e89f4c7be9a7b4f4287d (commit) discards a15f51d5772c47fe3a3e49542d227dad5e7e9944 (commit) discards e680c821297c26530b118ab4ef77f030b1f6e365 (commit) discards 36a84423e7c788a73348420ebcd9dcee95d34fd3 (commit) discards fa05585f1a55255ec937ed2cb3eb52743613b972 (commit) discards 87bb33ae3a79c7c6abb61d3e7b74c84b3562f30e (commit) discards 499eafb2e02f7d5359dc7d09aa635c7f4dbd3c69 (commit) discards 515e0ad175bbf5ec847669b3bd50fd46c9bdeea8 (commit) discards b02682bdbee84142708b4a8b97ca67ad4131ac9e (commit) discards 1ee94f343a5ae31e1d484ed51fc5b6dbc5f1e941 (commit) discards 5aba96e382793c2c4440a658f7c1797b6c8c2809 (commit) discards 14113f23b187bd1d25122544033b52c94d0ad905 (commit) discards 648a124c3f777bd79635ddf8e1d57b6c4c741cfc (commit) discards 997151838426d4f2de8c6f81a836fd0323cad17d (commit) discards 18299684bf953f6cc635938a2084bb333ab275ac (commit) discards 315441d219fa3accb4ad159e3e33226523b59cdd (commit) discards fc2f2790c0acc23d98e05fa8237052789990a72e (commit) discards bc44d99a45d816ed2787bd1b1dc7a586ddb1e5b7 (commit) discards 68cad2aa950472b209350febcf76c0d4f9c5ee99 (commit) discards e6250bcb9493aae8a3e8afdf1502c8417b110072 (commit) discards 972500fcc93f816e0a70fa7b64da6636607167e4 (commit) discards de23c6d375cef19961bcc82b9c3f79d32a95190f (commit) discards d6583acd3bd4992798092b32cd07679b3d6f18bf (commit) discards 15d18e7a15a80b6aa6f60ccc8c9fd49bf38659d0 (commit) discards 71a902d258cbea2302faf75b3bfa058567c49200 (commit) discards 32e28540db33d19109d32247d2395bb749cacf1b (commit) discards 72bcc01b1d975c6d2667cd4762addcff50f1b140 (commit) discards 37cdd5b93466811988b6a413165d579a9fa548f0 (commit) discards d25cb0282b1d6db944cd27eb7e87de484eab8225 (commit) discards 10885336264f64ad8b737b313aeb70089cd6e57b (commit) discards 60cb91b042cf62186a9f967ab668dfc6c919f6ae (commit) discards 6a36b8f33faa20d4c4b1aa516feb0c6bf30be429 (commit) discards 179fa43c9ea1f7d03a17a6cf1c56fb8c0e4c387e (commit) discards a40f92674f8fc7c07d531c5d6d11688c4b2aec05 (commit) discards 96e4a6b7d658c76592a97ae2ee755ba9025c0e5e (commit) discards b4cb165115eec01a83cd2ce9c00cb1b8cefd5e20 (commit) discards 5d288a9a4f3feee2eb2bcb536a6a131309d2c71d (commit) discards ceaa7b1c33beb255b371f5c942c6467ed74caedb (commit) discards d4f512083f14b0ff7058df292a16424be758d3ac (commit) discards 673fcb6572401d909a44f0a0d4bda9ee819a9027 (commit) discards 9350fb96265961fd87c1bcecdb4e0123cf77234f (commit) discards 34e44f92a193291a4a7303cd6f3e0b96e79ab080 (commit) discards b49072aed6847fcb74a157657f2773c5d29a6e94 (commit) discards 55229829360ba09ac30b45d2c1c364440dc0be8c (commit) discards 22df1818c4b15fc50a6a3050bc5123423fcf0fd3 (commit) discards de758ca22ae3fac9de2fb915fac5ddff00c86c19 (commit) discards 430556697e38ac616ca14fd73fe7bd08e2eeea93 (commit) discards 004cc9d7aa52ee541514490c66c5e517830be8b9 (commit) discards e37ce444dddf2764d40c22a35983edb7c55ce94f (commit) discards c05cae9f0a005a5bf43bbfe131ac5d82338935ee (commit) discards 3284c76150b383ba9b690c8519b75e6a5719cbfd (commit) discards 8f2ee97ed1d19b3985742a53e232ce5184458f61 (commit) discards e85ef4cebb9528cfad4cc31ea16743c6c293755f (commit) discards 7aa72b67df8beec7996e3f7532a234cb61e6e26b (commit) discards 3501087b4d314d7f194f3e705fde989d502a229b (commit) discards fdc31908faf217d2e3bd011ef84aaba2bbbe0680 (commit) discards 6e05e90caf09721a55deccff5f80ae8ad5a78a11 (commit) discards 50f2686fa1532158cb12d8b8f60dc04060f7ac53 (commit) discards 8b80661e405441761cf1525ed95d03069a2e03df (commit) discards 9cf15ac04b6f47ced2e6be14690301f73bbb76e8 (commit) discards f41ff727909317e2e3d4c11c5bccd8129d455ab6 (commit) discards a9af077eb5e9ff40dec23b9046829332dc73dbde (commit) discards 8d57adfc61a6a03594893441e5f2e3854331565b (commit) discards 74f34db2d5f1ea67cf9b6159190ab86b4c6a2e30 (commit) discards b156f4d03f6d3a65a59fe7d6f0217fca2c8fdf60 (commit) discards 5d7c09ed779cb5ee6c97ba75652d25e28f878fc3 (commit) discards 1e3a86310f2382664061d9e3b3540f20d93c2599 (commit) discards 1c636e800389c65b119e40193ac85354ac88194e (commit) discards a024f006de31afcf1b09845597d300f6cf4248ec (commit) discards c75e5150d11728372b4bbe335109aa0183ba7bf6 (commit) discards e505884e6cc007a1b962e2711fb9c961d064cf0c (commit) discards 230cef0fd1e1d81948faa57623c9ca0bd04b7a17 (commit) discards f5a9adae92e3ccf32c2a02dc32a182184c4b05d1 (commit) discards d6d6a9ed9e0db9a067e061fa73eada17b53cc760 (commit) discards dae177ec30bd62a59f3bff8423963ccb3160073d (commit) discards 8dd33bc8ccd25a227285627101f28305510086c0 (commit) discards 6faa4c91c32028476f5df9af271fd4c7447f2f64 (commit) discards 8cf1501203de1481089d3576333fe10278da23fe (commit) discards cf7d91a769c06accad064a1b41a98a28d4b138b9 (commit) discards 59ea4a1b9cf788f20166708ea02c33568acf93bd (commit) discards 7dbb4834e4654b7a0574b3da6337c4216edab9ea (commit) discards e0048ed24e7eee9cbfd07b7a9afc1d97941cd270 (commit) discards eab0318b7aae921520b974d2aa44081866fc04b6 (commit) discards a440210f44d2785ca795bae069e3fe1809738170 (commit) discards 2673bb77a0f4e4c2336e038a41f622a7af0f0bd8 (commit) discards 60ab93e36c95d28530434810962ef8b102c8691c (commit) discards d0f403b114d2d446cc7def0ed5acccd9b4b5280a (commit) discards 90b0718d5e3248413ac2a74b8bc7d81b3e925dfe (commit) discards 980692ba9496fc2329389d85c4347cbfae6a35bf (commit) discards 3dca1cb33209a00fb41dec062f79dee7ffac9b12 (commit) discards 1e2ce092b30f9c8abeda9237e2c63c16dd08f577 (commit) discards de66ad246f076e85ccbab4f1df0fbb23a9c86957 (commit) discards 12fc65f7a38d47c2ca2df24b5f0993ad40a3d4d9 (commit) discards 7039ba47a19c02907ce8b180739676eb7c5f42f7 (commit) discards 540d486fd05778575acda7cd743ad28a8e25b895 (commit) discards 04a092fab5232ab0ae0b3f7b2f2e913851a27fab (commit) discards 383395d12509d35b85dcd8383e53370247596544 (commit) discards 3dc8d5b09a8aefd19951f54ddbad153b3fb27877 (commit) discards 87d582614250e45c7a6834ffbf58911a34d0b674 (commit) discards 7dcddfa8817545833b39a53486e9fdc4e510e8b7 (commit) discards 71e8ed8180d50227cf324c218cd13039c51a51dd (commit) discards e1efaca21f344459a84ba5e0140b0f58df068b8e (commit) discards a5a4a7337ae256b9e7751fa1380e6991c0f1affc (commit) discards 13e8de4abaf594e90d795480f4d22fc5e61f7ed7 (commit) discards 5df1683c38851b71ac0f74fbf058e32437140c55 (commit) discards 1b7e4a0df9b886c42ca517c7577c88a763b8a075 (commit) discards 85d2395d26135a862b3bed07b316c0ebbf14b725 (commit) discards 6b52a43314824943a3ef19b86bd577d5729416eb (commit) discards 9d021b8dc4340e4f99f94984c8c7717d513d2e9c (commit) discards ca28a80658d50a9fab14f3022c40536b385b6b9b (commit) discards 43c91d5fce868bc7a6b9055494cd3e0d46ade964 (commit) discards 1cad9ed8a9a958080afaf7dd692520c4112d48ee (commit) discards 1ba98b02b9b2a44d1504f5c4546a7088907ed4eb (commit) discards 6b611662c26fbdd1ae96d71dadd243c48b725ab6 (commit) discards 92f43440729f16831fa9a3e840843486a942906e (commit) discards 2343f68597f7f5d2986aeef1f85f579add45b0c4 (commit) discards bc34a24d4c7a70f5b526252495a19ba5f3d2de86 (commit) discards 77a7f93d6799ebf7cfb433af7a78b2c7b6ace60d (commit) discards 82394b37687cb43ae3805d14a7ed9ca20da95a63 (commit) discards a669f76f786e2a74d3621cf5d4f9b0ad30d7e89a (commit) discards 35ba58e64994efa0a2c97a08b5164a5ea9f20679 (commit) discards b6d024eae617ac8fbc6330eda26435e2823f8d34 (commit) discards 086245a70103f87fc16eb294e23738cca95b1817 (commit) discards a1d6596ea627285828e5425282c60052c4a88b27 (commit) discards f0d15785924faa8a3de2fd9c3105a274e73b748b (commit) discards 15b5170b14396e1e17b6f75a3da01695cb49eff3 (commit) discards c4369fc84dc00348169f0e7adc9a0169d864ac96 (commit) discards 3d9ed976cd7fada0b0dc89cc3bff84c7d11a4419 (commit) discards cefedc0da9a8248cbebde655ecc73701d7cfcd1d (commit) discards 4fb2c5ca666692bd25428ba0210562808cc4ab47 (commit) discards 1f329ad521926c5af22a710a7e473daec0177f3e (commit) discards 93ab7fa91e652f4b7018f6f82e878864a965622c (commit) discards e3b070c88fa02406890b35e554f5c0ac1ad6aa36 (commit) discards 3caeb58533226ef42283e1709fa2d24295bfa3c9 (commit) discards 3934682e9b616f9117d70f05965e8c5f3bbc3269 (commit) discards a27bdf3f5b083f65aa1a7dbe66023e930cb59979 (commit) discards 302d5bb18f5604c180d1eb3c48b80929e1b306ae (commit) discards 5b15e03f30eabcba91b0c1bec09a489221bbaaaa (commit) discards 2a00d3ea1300ed918d713840c99b9313981f0799 (commit) discards ef4a4ed03498769c34bfbb22fce1e100a3e3b5e8 (commit) discards 469728a8656431e334e77d92d398cca05fa6c4a0 (commit) discards 006b3165cf7d0e512e4b3d7ed23c92f2bedb1d22 (commit) discards a523e7755c111023ec767e298206fd7657693b94 (commit) discards 136fc8aa954cf7154b75a72297e76b94cb92e3c3 (commit) discards bce61e7f926ca424c04340d217ac5ee3246fe454 (commit) discards 8b0421ff6815457ac9b21223db2bbe338cd782f0 (commit) discards 7630d47e0e9efb0cea1f2a2ae7f908fee43d80a3 (commit) discards ed5266d3ca944036165a26d06eac3a3fcd0b88a5 (commit) discards 74f04959b4e27f4af677c960c82637e874920395 (commit) discards 9a25519496cf5299b0d4d59ea1ca9da56b008432 (commit) discards 2572621bc914e30cc22e79749264d67882d0aaf8 (commit) discards ac2998b61f74e06100ca988eefdb608d312d1098 (commit) discards 8825b6eac893b8280e7323133469eb24b79ed8db (commit) discards 9a9373c0bb42cf0e57c1b08e661a14b2a7760369 (commit) discards 80174cf39fa6b29c45232b231f7f169224f975a7 (commit) discards f7279386e423d7f525211f9f929242ca1e4baf1b (commit) discards 7a7a387f551a8b2a52a64dd3590f73e29ee5112e (commit) discards 0b7a2d4c92501980983bd71365f339a674a86a3c (commit) discards d53db202435868cfac98ed0ce6fe537d84a4947d (commit) discards 8fd62850e4ba65a249900c044bdbf057e1117477 (commit) discards 17fc3bd62b640196825f3002732affaa9b22da85 (commit) discards 546a2961cb5fa1cf056b682c1a4553381d9ec75a (commit) discards 894dea2803a66ad933899b4377a9154ee3f16394 (commit) discards 2b126a1510abae4364341d29d49cb31711f2119b (commit) discards 80031c3e17d78c50d533644bd4bbbbbc181d6252 (commit) discards ef8682507650792e6a3c38b9a5612526ab0b1ecb (commit) discards 86657a6c0aefb1cb52f47c77aae38415bc584dfe (commit) discards 599a200509e4f164aa494e1798f61e8138d5d20a (commit) discards c7aefe934fc6d603b7756406528f6881af198b0b (commit) discards 54a3c95cb0aeb52ca1b8f6cbb80ca0e5d0afdf39 (commit) discards ca2370d0a6bd88a1121f242cf854dbb8c636a734 (commit) discards 1bd4de4fd95c4dc33a379f537f93ab36f4134d5f (commit) discards 5c747b699cfe3b2e19a3dc66a815cf7bfc9574a0 (commit) discards 2973776b6480309a5fe95aa8b2a3ba5151288c6b (commit) discards b8fb8acca152a5850b4a0fa4c0625f0094909059 (commit) discards 1b3c306636af7d136514e64c286219d9dfecf95e (commit) discards 3b0911aaf367fdd459c7ac6490d3328c8e241f09 (commit) discards 39155c614cc133e363f8fd91ff68c76a67615090 (commit) discards c9fa092a9ef7a48ee702a729da2d8c30f62e7d65 (commit) discards 535a578ef6bcb3e40aa9da3e87dcad59c751a003 (commit) discards 7433a1e5786f91f07f3b13f392596943062b4a13 (commit) discards ffbded67fdd5dc177d950be82951d3fa6208cf24 (commit) discards d32be19c00308d97821ee8e9cdad48a8b7f53228 (commit) discards 78036cdcecee3c585b54e819e4519b3b51ad8012 (commit) discards 597aa087db0633cea368360fdb3b552283ea3c7d (commit) discards e79488cf49c70b8d4a73b2c68934565d8427a07f (commit) discards c1e79295e4ff1b37147f97f866bc71a43464f443 (commit) discards c842466a6845ed3e81b292c67e456c006b72bc89 (commit) discards b7c82d4c2efa974e8c867826253732139f9fb385 (commit) discards c57c17604c175e9c154d2552c608087a4e98807d (commit) discards 37ce4003e129097e179f213c86e00b3307cc1738 (commit) discards 75bd5642105532f80101fc84849b96996d710a04 (commit) discards 6a9a27b791a231b970b37eadb1ebf927b0c30bea (commit) discards 143949941c6a1e4ae68c7ebd86957525caf2242a (commit) discards f987903e5ee275ff4afd27245f322e4b8d9eb8f3 (commit) discards 8b0e7d2496e53fd78aae4764c222e2dddfc4bc2a (commit) discards 9fbecc60bee1601cf7a53775ecaa7e97229cca43 (commit) discards 5eb172d9f3b3e718ac6e2ac3a61cf2412b82be61 (commit) discards b814dc17ce5aefded953fc7e30db257088f70475 (commit) discards 2b0189becad007b0683272a0a3d46a952cc520ed (commit) discards a5d53b8a38b770f702fa55d72e996ed54a32f181 (commit) discards 03dc3b7b8d734e5a916c0dd48c408e78e6f66f55 (commit) discards b017931c5eb6ea4065060e9b7f22e28274c87c15 (commit) discards 8b61fe440031ae1c66729c3d9f611a91511c8c8e (commit) discards a697462a589cab5f70e5608e33837bd6e4ada14c (commit) discards 17efb68d1d31deb7cc8d6fcabfc145e4d65da3f1 (commit) discards d73cd50e99529ad9572b5d2892736db292d8367f (commit) discards 6a948bd98bc29156774d09210fe07548fed3388b (commit) discards 4bdcebde822e58c9a5a15598619cbdfd87133a18 (commit) discards 473a04651c3971883cc413b1ee53f4c1ee3135ce (commit) discards e82828231e7634a06d0230df865bbcf5496f57b7 (commit) discards 89245dc5a1f6c4938fff0d760c4660e0bf7974c5 (commit) discards 364c156cdc3f078ba423208bc5c6bf0af85a471c (commit) discards 61bc810bf8f252bb33946cb23a8d66a78036569b (commit) discards dad92067daa6d882a640cccfbf503ec2f800085d (commit) discards 0bd8d187e0a58c708667416f63f30e30c344c295 (commit) discards ab246b9b58e1b1f1b511514511ea3ba49c1d94af (commit) discards 1526f83c091a549bd758b86b2237500e88db70e5 (commit) discards 9f183fa4b15ec9e5d2249f5da63dc2af3a25d9d2 (commit) discards 58c28aabc8c0ef3cd00087dbd67640cc85d34a71 (commit) discards 6e07995bee1b75c3d7f9e87baf2bb5377fdfee20 (commit) discards eb109a85d5b54b47e54567893cd714b857865984 (commit) discards 72710484b55f3dfe7c759c318dfd131d6c7542e3 (commit) discards 10cb487cb02917dfb563872a8146a67af88b20d9 (commit) discards c059649f8f9d812ec284150f410c0a6d0c77b2d7 (commit) discards e1e8417fde16bef30a79d96ed556d6ce986d17c4 (commit) discards 2f08cb6ad0ea966ac51e62d7f8dae8ef1d5088ed (commit) discards ce67a4d39b995398cb9899b5b4152560a48b45f8 (commit) discards 4a6be5477aaf72d732292b50674ce2d83947e8fd (commit) discards 05b3b327a4e89a410ad8e4f50fe8790a2942cbb3 (commit) discards 21c2a74840ee5413b822b254786310a14f2100f2 (commit) discards 8966b4ba6e84f54b8b8262d5cf30a65b686c136e (commit) discards 2f2ebb73c94dbe4e79a032f8937781fc30e53de4 (commit) discards 8aae09127344f4a518f8b3a30d9ddd6401aa59af (commit) discards af5f0a4acd0426d63791d8f1c7a18608de3955ff (commit) discards 04e854136675ba1369a73af712b12971d4ee9c69 (commit) discards 38f994206f075acf461b399f0e512ec5795b0083 (commit) discards ec8f2c2bc2b65457ab6c6684769463f54125d62e (commit) discards c109a89e4e81c57963c3cde28774243fce4203ed (commit) discards 89dbe0b0a09fa52f47f24884c969d1ed3ef6b6e8 (commit) discards 87edbed6bbcdb351b9502f66e78b01116ae1ab00 (commit) discards 22047f93377fac0c763934603001085428f74d3e (commit) discards cf398e1a442bc54c05d68837fcad6258cecc7dfe (commit) discards 8e142ff22abf13f98eb4355eb98ecc14eb6ce10f (commit) discards 0d87954a46b6fc98ebf29d5cf761a1e011ba48df (commit) discards 90c156243c89f582d242f13f332a6360659812e6 (commit) discards f1789ed5a23a8684a384ec6ce39f003716edfe2d (commit) discards 6dfd39c5f3186000b08a1fa500a98a4a04d65724 (commit) discards a9a31041d47b89c7837ea3bca705da91b40f6d48 (commit) discards 53c41c0463a332447fd5cf1007265dc45446beec (commit) discards 5973679e3536e50175176b26e29177a409580147 (commit) discards f61051af9118ffb67679b8f5634b318194cdbd88 (commit) discards 6c4f49a888f5953f977816fc9e2a9ce4ec8e1400 (commit) discards 2783face5ffe68b235e3a3be699bcacf1e56280a (commit) discards c74573cb16f8892666f16d36dbdc1fe1c5ef7c46 (commit) discards 5c128405b836188ba02f989c0c682fb77c6de2f9 (commit) discards 553255c63195ecbc87cdaa72394e425bc6a0f52a (commit) discards 15d02eb930b4b4673767581bb60c3ac115b5ecc8 (commit) discards 67fa716bfd78e7a0c78dbe817c8c33ebae4ebd1b (commit) discards 995c25051829899f64a6cb495b7913f0d78b2183 (commit) discards b004916036465d145d0388a1afb24d5471b48f64 (commit) discards 8c9f23ea566ac746eb4ed40cdd7816309dffaa45 (commit) discards d2fd5ba0aa2a968031dc0719576da3f9d63bcf31 (commit) discards 3c76811f0c41998069d21955a306baf3944c8ed0 (commit) discards de417e99f0c41421f701f86ee5e4e507868be81f (commit) discards 42a4a3dedfe762268d935e5fd5e5de6e0f1d024a (commit) discards 0a11b9b4333eb960038feca7972470f3770a5cce (commit) discards d96eb988ff7422dc72662b51ce1d0cbb036138e0 (commit) discards d4138959b2eac09313c420e158f2488ece7080d8 (commit) discards ad7c7f1323d64c255b88f13610fc9c0341f86dc1 (commit) discards 86509640e343da132c0a06461c0b9bdde7e6309c (commit) discards de7a9843996f31e29a08fa93e2bf7b600e76cad0 (commit) discards 5e562ed55fc48514f0d223b2e2076f84099f7a00 (commit) discards 4d41a0f3a2ddd74e0a95b31f3766a71f80d1045c (commit) discards 180f58a677a2ef49f71cbbe377f9eb177e6574e5 (commit) discards b32ceb3c228b33d5640cc5253f6e88d7b98baa60 (commit) discards b517ddd6d3f1090fec83fe91c508b5f8bb19dd2a (commit) discards fee2f1b701c5d454caf2e1ade91f75d7d234087a (commit) discards 5d28a8fa057d948464588226598e94f2c905d20f (commit) discards 05d1fd2a66e6acb73937a0adae23563f6ee6fae0 (commit) discards 1c1df1f77239b32701cdcabc9eb63f4974210d53 (commit) discards 5486b8c74d9b853cd74229689dc67800cd722c65 (commit) discards 21e1f69b982682c8d135a52193dee3450f9d53a4 (commit) discards 8be0cef9079ca3e2935798412739e7b83b1cc42c (commit) discards 4f343bf892d75f00d58d3886d07c937888dfe4f5 (commit) discards 9257e0f34459f6087d37843defdfadf75c72ac39 (commit) discards a9b2ced2aaa56311237c8437efde13f3d5342600 (commit) discards 055c78e61eb4a4de76404d11c221654dda2b301d (commit) discards c5070aaf52bb37ec63731e82be04f8e78057df21 (commit) discards 65be57d212e601de396d57821bb499a4d802a1c7 (commit) discards 0b377051af622ac8974e990f9244e9f69bee90ce (commit) discards 525f399812e389ec40556f8b4a9d1c9e5fe5d2a8 (commit) discards 68f18efe37248bd6797b055b31711ae1c7f2e782 (commit) discards 3acc5fdb642832bf2b91c06fadcd221660f6e6ae (commit) discards fcaf2677574df7fde795bb4e11f8d843ab383442 (commit) discards 97056b24c0fc975ac7a92d344992e13e6c0d320d (commit) discards a2add139638907d3c36ee935c2f0b51db7821fd0 (commit) discards b1e773e7873345ce327e9e736b2aec9e6cb69901 (commit) discards 9fa6fb5e022397c72e0f49511a89119e412b8558 (commit) discards 6cfce6f43d48867fcc601eba500253c631df906c (commit) discards caacb24500b1294a93cea6fa5345bd9605492c99 (commit) discards f3e55a26ef069a6ba5c3574b6c31a00d0299bbec (commit) discards 97c65a004ee9e9b88dad7ff4ac1b2ec893b8c5ba (commit) discards db91f0e81ff9cd6705f51dd58582d393aeeae267 (commit) discards 6941c6eb71cdb38fbcacae03c00a65d0b0c6724f (commit) discards 04e57577b3561e2fa76f86ff4053fad6b0f9c6b7 (commit) discards 0eb33e57617079f0d3d9a8891f99439d45ffd29a (commit) discards a09bce346eec10bd282385100dc1ec9733ba3c2e (commit) discards ced7c9ae43af218f2e02bf44032916498f7b90ab (commit) discards e98b4a6b8dccbd22e2bcccb04ae992633f7fee3c (commit) discards c1517e99d196754bd4089bfc4cdd344c126530e9 (commit) discards 0286af421bb0ff4f391f56938ebbb25e99e84b46 (commit) discards 96b0ef9ce9ac14fadace32dd3a087d37b34c1c05 (commit) discards e17201bbac873aa79679fd0ca14f1edaa0747eff (commit) discards 4f4aee4f07e2cd748b5625b92ddded79ad779a18 (commit) discards b0cca151e60063868b929b5826533850569d718b (commit) discards 47af9933c425e2921d4350dfc78206b27ca01be7 (commit) discards c12f81cd0f24a8ea5cf7ce26cf83f88e3ffcd4a4 (commit) discards b160942bc0e3c9d8c2a7d4f377c2295d3d5ff655 (commit) discards 197e4b71d6eff64a8d3843d58ba99ead4fca970f (commit) discards 025c82e76f296253a112896471f54fac9d14d5d5 (commit) discards d0b6117325ded66fdbcb8a8c3630386e671675f9 (commit) discards eeaab3a02e507f273bf140845a1962b4c757895d (commit) discards b2f80417907503d55bdc0857a2c9e7e9edc0771f (commit) discards 0100eff6352f26627acf4c22cd1ce108b475c86f (commit) discards 1e777c2ce9c70e34bbb27968f4727a92a4f0f249 (commit) discards e0961aee3a46001633c51053f6fca71317d2265b (commit) discards cd95138427e1ad55641fadd60c161e3899c2b98f (commit) discards 3be3cd762acdd9750c2b7efe0855c201112ff723 (commit) discards f079f898cb4c0ead58f1e668b711e0fef640e1a4 (commit) discards 70dca6dd4b05092a5564bba916b66a3f7b27e7dc (commit) discards 8b68da37ae026257c9b3ca4f1595f1e839756b02 (commit) discards 93aa30076b01be366f8f1c487b7b561f5bd7e074 (commit) discards 086c397cdc920b67382c3c35be3d9c10c4ff0fd3 (commit) discards 588a5cee03c497b2715a68037a424976a76f015f (commit) discards 6cbf8a0167d9a3d79ff3846e14bc90dbf4fe7371 (commit) discards a2e16ce83c4a4adb81ae1b24361a57f7004de01f (commit) discards 9ff4cfd5699f4f9c6fc6ae0c60c5114ee9557069 (commit) discards b278dd2379e455ef1f256b703fdec1c292bf4179 (commit) discards ca8c23361bd365dd180a35c4d50241c53c08f246 (commit) discards 1074f006a06c09719319797aad6dbee4b837d087 (commit) discards 3df1476a6d8d66b21f1802628bcb747f476c879a (commit) discards f331303404a854d2ea9970bdb3cc2023002744e4 (commit) discards 42edb9cfe9a238b355e89afd7b80eedb1fe3738a (commit) discards 6be15e958e3257a5e4efd6ad6fec3b8115104957 (commit) discards d7a136cd1a836c4172a16dad2a0000fe5464794d (commit) discards d872408922ad785b5f2b9a05cffc26e83d61adee (commit) discards 180feff1f4be0cc80f65b921d81ca25ce91fe3b8 (commit) discards cc8d790cfd207e313effff4e4b38646b0c0b52eb (commit) discards b1cf0d9a156fec620ca5d34d3f9a678b131cc046 (commit) discards 31cc2502f7ae9adbfbd541d63eeac7651afeb7e5 (commit) discards c9db28c25ff1d6d8e680b74ac6ddbc83eb029c9d (commit) discards a0b164c1322e1d08e3d3a707d8d3ae53551772e1 (commit) discards 28f5d287d44035da561d44825318d449a33c54d6 (commit) discards 4eef1522502d3b510b22e96bd76612290336f5f9 (commit) discards 8d66f382129d7fa041a41f3c6d6d8a4d110a5771 (commit) discards 7bd0a5a63d353c77c2ecfc2921af0cf956bcc043 (commit) discards 794db40e526a22d8c8f5a4ebf322bf1de2b5d5fa (commit) discards 633599021a71f2e61646200c69a9713dae369a9a (commit) discards dd4fb5bee5641fd2ce5da04979240cc7cff2fc9e (commit) discards 3885eea76520bb3cf293e4419889db86be45c313 (commit) discards ff7a617098756610f3e5564d04affc8d48b4652f (commit) discards 648eb58fc18c12d29648456a92911a6e905b31c0 (commit) discards b36869498f392044859d864ef5973ec496e4851c (commit) discards 49b6237ed2dc0b536ffd8114e0c5f233e133e3ff (commit) discards f53ce50a4caca7e5e63fa4cc4bf376fd2cb77fd6 (commit) discards 0a8c1a04c48f409e827b80ccb8ea562bdca8a9fb (commit) discards adc26e63165aa22f8ddc580d7462703e67e0ee1b (commit) discards 25c56f6dc9eaa46a6c5b33f357b618f596bc905b (commit) discards 5875905285309a89d1e83463560d8ba93f247512 (commit) discards 10119e9e88b0021c36558172cce1f3a7da0c88d5 (commit) discards 4bbd9a4c0fd9ad4c23921197dc92a63c75656f21 (commit) discards 0a0e79e1fe75307956f4410ab6c61205c0649e28 (commit) discards 9e40c23cdb233bfd67d3ab25f3deba35e96ffb25 (commit) discards b7d92655621e5d2d3542fa945adf6c75946522e5 (commit) discards 55975c7f3c1cc8eb581b3ffad489698bec88f88b (commit) discards c57d5452a4a8674928953fce3c0cbd51689efb32 (commit) discards ab87f627f77be6fb1453ac1c91b8c896a2f36469 (commit) discards 428d05349a343339820b16d65c742515885e2e49 (commit) discards 81515b7bd84247e2005b5a34505bc937fe527711 (commit) discards 78eff1d82195bcf72614d62776a72e6770e05e78 (commit) discards dc2a28c27c6ccb2e8f55edbd1d10685f92349b0c (commit) discards 6e217401d93091729a7fd7dd22a36a822e6eacb4 (commit) discards 46a9fa3910fa594188cb49b50b014e1ff6a1d403 (commit) discards b0e622987a6242156ed9009a4f555deb6d882943 (commit) discards 583c96af5b31ee14413274add24142dcf5943f09 (commit) discards b9391cffc2e82c27184e81cd8723677d9e100ce2 (commit) discards 1627f6a541239d14db1db6cefd781c4f8aebd127 (commit) discards 6ca919be615a2a6db1a3096e5068b9b9265ad28a (commit) discards 30fb69bbabab3ce098638642680976c463593238 (commit) discards 3d5ccf055d90134c48bcbe697daea19d5acafa81 (commit) discards 6787710b0064729c866a2339f0b7abe5ef005e50 (commit) discards 21418b083d59206b390d18ba010e72bf719a348c (commit) discards b912935c6c5322c1b26bfd127222b7cdc339190d (commit) discards 77e7f589866a850a4873abfbd04e8dfaf37224ff (commit) discards 40ac860aaa836d5822bad804b91059ac43fb5246 (commit) discards e0c37c1f6ec06b44bba38a0370c48d7a275898e8 (commit) discards f69f4a77477d59ee2734dce74f5c984bd9a4d678 (commit) discards fdd9944ed5b98565d830b6f6f6e03a203ae4c706 (commit) discards 8315b954fd22d42547ab72c1f7eb854136998928 (commit) discards 957262fac1c3da9f2f6face0c929db55ac5a3230 (commit) discards 145d64b623d7dbfc629d38da1aa3b6254c5ffa12 (commit) discards 7217b9dc7c141fee27f92d3c23a68a5f8709c8b6 (commit) discards 5a8695d942ba106ed9864daa38c9068411491209 (commit) discards 7dafe4e2c7019be291bd029d7efd9e64cdf51927 (commit) discards dcdd38119550b861a45fc34d92e7f93d0a23e7ca (commit) discards 2e3163e2bf8098ac4bb41386e59344ef96971344 (commit) discards d205755ae082f9dcf854d836b31d5cd0e5f87e86 (commit) discards 56f58c298312c27d23c45ce31efb5e815f5eb115 (commit) discards 20c2740c641ead4f7bef8ba105d02ba3d8523745 (commit) discards 2043d5a67120d94dc1daab4a9a14a496f6a75735 (commit) discards e5b891eed18d8c6783cdf4a6f234c3cdae02a81b (commit) discards fc4d290cb76192fd3847b8d9c003d2ed7167922b (commit) discards 4706d3946d146ef3b4c2bec0ceb916b24445cfb7 (commit) discards df52cc09524e6a24e7fe72c2bac784e2b9f534c7 (commit) discards 97d80d924a2cbad347453a066e7b602fd122a050 (commit) discards 2a1efb288fe33d5915ddb8f467a8208880371172 (commit) discards f3ae4d10d78b08a4e1a2e25844251b7f41481f8f (commit) discards 039e4297ac2447029221be27a2e25b05ea9f7c89 (commit) discards dcb416e4fbe60d7e2f3a50ca3362747644c29ec5 (commit) discards 04f9b8c6f483408314c320558bb5bdddd0bad513 (commit) discards 35676e7e0461b0d9bb82c9b6021e04cb54c3d6aa (commit) discards 78f05aef773384a1afb9c6d017a37b6bf67a603d (commit) discards cda952083fa6fa3bbdd90a20b062f1ddf9f97e65 (commit) discards 5f91e46914359248f62c25f7cb427ec279b2e0f5 (commit) discards faa16369057de24ace0c3c9ae4135514c0c35ec4 (commit) discards 454c238e584f3c5204c9fce3689b50ae81abcd90 (commit) discards 7ac78ac21a9ae91461258cb15647e83fb275c162 (commit) discards 1970ec1d816102d3b67a97a2e1d9ed9013b576dc (commit) discards cc1e83397b38d23b4c9b0128993e1a3820f02998 (commit) discards 3428bd3d43199631f00cea23c1d0c1637b1bae75 (commit) discards 1d2b5e304c1780d7bba7fa4f692d9d6b5c7d0cdb (commit) discards 1b0ec75568cb08e0e1ea6d3459406b40db2eb0eb (commit) discards 3e33540a816ba714610be7d736415d176a946e14 (commit) discards 81a038690aca1da42b1f656b7a9cf48291b427d4 (commit) discards e86af7d7301165c9c2dde4f74b20ab84c0f78d3c (commit) discards 402e383bd759a1c041b39ce63632cd4d65dd0d12 (commit) discards 68abb39eb33fa95d656dc1312acecf7c11a57145 (commit) discards 90781424bf9ff165ad24062bcaee8fb47a10c384 (commit) discards 1d5aa062ee5593de671dcaad5b25a6cc319b7847 (commit) discards 3b92f04b8583cd096a0a27bde7aa2de02f2949ad (commit) discards e2a565412a7d13d063ba06527f9abe8a79c283e4 (commit) discards b4562522ed65f61ff429a4bca7a4a6e45c3f9e67 (commit) discards d2e255192a6f778def60cafed826a4aa66d40fb6 (commit) discards d40bb064009539533220a729975b6d160abf3565 (commit) discards 23d5fc1900d06354b4ad9df21fdf02f256f40e13 (commit) discards 3c66b497d66ae180de30bffe449d0421f5d16221 (commit) discards e866e7a1361f7796192fd2974cc055b7196d80a4 (commit) discards 5d647d2c42e3c4833153b5260100baf56a39a85f (commit) discards 6f2ccbae21199c8ef786903f1ef83f67d9efe4a0 (commit) discards 6737ae52d9a7ea4ee1b20e12de28ad4903400133 (commit) discards 3a3c5d261f6b1a84d0b024893115ef5ccdb026e0 (commit) discards aea12d1f9ff5ba1ea54c517755762a45cd86221c (commit) discards 182da3c128879026e25b10f1f0e26eaf220053d0 (commit) discards 38215f9d5c22b31aeca4f5b0e79979d4d50d2eb9 (commit) discards bc067ebc69341693f6970cfc43926f88f2971d3d (commit) discards f4a6a07edccdbf914fa4a65982d6a62270cbba37 (commit) discards 43aeb3b858d98af26053397c073b26427ee41ab6 (commit) discards 6cfdddef6a4da30419c2e52930d8926c5d6f61eb (commit) discards 5fe38d5f88991bd99088a27d64662c027165085a (commit) discards bc84eb339ceb17f09f0d6d236224fba5137e6c28 (commit) discards 3ad8a33b622b1bbcd7a27c969ac13ddcb2a2dad2 (commit) discards 19325c43693b6050a1515375eddede4119491502 (commit) discards 3d547b1c64fd27dd323e5372d39cf518b1381afb (commit) discards 28d02700c8ef8c42cd44adcdf0e92184301f24fb (commit) discards 8bb4d0d413ede1b4b56711b5b67b3a269c1a64b1 (commit) discards a1ada3e2a929d775bf96085668cd9df207b14cc3 (commit) discards 99ada6bdbafda2dc1bd797041dff20c7c5e32f3e (commit) discards 91230e01f9b72d7e05f95d64faee7855330dbead (commit) discards 6ae933a2e9fea6a1e27f6cec442b97b368260821 (commit) discards 5472923024aba61f99edafddc3493d472823668d (commit) discards a5045b1ab02105ea8cc6865482be5abdf04a15e3 (commit) discards 99b14db491884cfe81b3fecd4da52348b4b7849f (commit) discards 145a7a4b3125bf1cd11161bb3c1fb5f2e15d6145 (commit) discards 0499be4acd76baefb1267803fd2013954012e16c (commit) discards 01d0f1bd2ac4c073a0d5be93fbb764e7c3de98a2 (commit) discards 5d03777fe59ecf841f392348edb150037ad5755a (commit) discards 758254ad420b28d8e5539cca0138b9c6d2c0dd6f (commit) discards 9274deeabbc2f976772cf48a1cd41dc82c430572 (commit) discards 7d7f23cebbf490db04e9baa93d61477d24c5eba9 (commit) discards 994cdbd183db25e993b61bd1101666cd7d6b31d9 (commit) discards 01fb67aeca21a0e277958439496a4dd188253f9e (commit) discards f04322e9bb708fcc105c77e3e0cf699625a1597e (commit) discards 7fce3995df517890340d1b050c67fb62ea7a79af (commit) discards b639aebd621d1ab8d978333867dc8ce86a20e725 (commit) discards 17ac6ba9c63d117956e48178f86866019ba32001 (commit) discards e10bc0a9656bcf5f44bf4f8ffd80da2c0937c0fb (commit) discards 08d2ea9d9605249968dd3eeaf14fc6bb5f2fff86 (commit) discards 9d087d457efb756c886ef779fa49df19d9fb07fa (commit) discards 1f0b951019b90822af33e2e36574533b027557fc (commit) discards 03d29a772b553f823d70ebf57b63eee5b12893d4 (commit) discards 07adca56cc8ba4a7d5703c920515ec7f4bd3dc66 (commit) discards daa08ecd09c3d9314e5eb26314f5a4fcc24a4c1d (commit) discards 09dc7c32f05359e58d26a1ba554431567ec04969 (commit) discards a30800632e83bb227660100e81a691b15438f1cf (commit) discards 9a0f638d1914b112b2990407a254afcd86d52bbc (commit) discards 9b3a48e5ce8b4f84259e200e5a2236d2dd52bfc7 (commit) discards be43052c50ac0d06e5581ac1509583ab7093bacd (commit) discards d09e6c60d985574ea64f3d7eb07a73311ae7d709 (commit) discards cd736a1c777a53d4bed7a62fb06aece8d901708b (commit) discards 59d3b84defc23b36f7f9f2036b15c2b78c02f29b (commit) discards 1a1881e80cf698dec5992333ec326f67357d4509 (commit) discards 742da182180a3bd479828d2477d7263001f77d09 (commit) discards 1ef3fc9a1b90bb7c57984522397955aa68536a75 (commit) discards 15070162ffa5dc956b6b0a2026abb2fc434a28e0 (commit) discards 917ebfe3350844dfc7384cb72ca2a643c785a21f (commit) discards 28c827abd61eb212c4444abe426ac1349879d3ea (commit) discards 6a83988674ec62870f0efac85c428d2b6a238354 (commit) discards 564940c27432a34eb4cb94e9a94d9828af39e4a3 (commit) discards 9241a35e61163f6d07cffb03bcd452fa0e773f36 (commit) discards 3a4759869520615c3517b1afcd0c156545687a1c (commit) discards 7d7d66342f86d90370519ec369b2f3e130443292 (commit) discards 918705530182133db11d9d0eb589eab970a6d213 (commit) discards 13d8d33e3d46cc9d9c865af024136155e3990485 (commit) discards da9742d8fa8e71e4b8fffb2e012a0bab7884f774 (commit) discards f3aecdc9ee24b8899406b5256b5ff4d5e971a40f (commit) discards 83c8c1254bc651d8e7b17bc6990aed782bd99354 (commit) discards 1166f8d0ded8745800ef57115bb5896808f68a5f (commit) discards 564dc7e493c2ebbe86019e73cfbb0877d52197fc (commit) discards 4cf58428363255d9dd05e196cf308ca5cd4e2582 (commit) discards 180c179c7fc474b5310683106ec933ac9774c789 (commit) discards d2ca8d40466d244011a60c2198fb645ceb1fa983 (commit) discards fd1736b38fe16131a5496ff7a6866e084d354c32 (commit) discards b430da35849396ad777f6459dfb1d3bc02c771f8 (commit) discards df005951ebbbd0e25551158bfcb0f87ee27dfc6f (commit) discards c423e2096c4b71a51abd74ceec0d66f07061ccb1 (commit) discards cf5c1d216af6dcd4382ffc906511c725c613a4c9 (commit) discards 51ec6b8845f3aa23ac9b05d6fdc9b14557522516 (commit) discards 268bbf093aa922c84093c1ee8da8264d045c6c72 (commit) discards a4f1cbe5f4a49fbb1624506c0dd8cbe3b05f2894 (commit) discards f0f2dfc5ace0ba634651cd0a6f99c65a01db8acc (commit) discards c64f0b80ef3e0bf632302d9694f579fd0b9b7166 (commit) discards 23180c18e1a95f30c6016a76ae741f8170385a7f (commit) discards 4f817aea4c258eb47aaf2b4c49f7dd4838349c17 (commit) discards 31a4a7f245c07c3db3ecc5fc8c8cf63bc4c4e911 (commit) discards 1cabe8830253de26fbed53fa3cb3b2d9bc8c4a06 (commit) discards 3baa433e0ba3227e06cd0dd00532d7acd5c6c437 (commit) discards ad74326b3f005bb97c3ed0e1bf783c8357b31cf1 (commit) discards 36851a90b72292446b1e55257e15415da6dd3350 (commit) discards 567dab937657cc8b01e4e19211ff554bd92ba7a8 (commit) discards 355c0dbb8feeb89aa6cd3c6199e93725d13adde9 (commit) discards 118403c5bfe111614eca66afba0cfd1aa45c9d54 (commit) discards ee051faef39ff78d7805f1eb8c9f6330a4258032 (commit) discards 31b235f16a4ba49048740d3c99a81f80fd0366e4 (commit) discards 4e0399d05ff51178967374d5cadc3ab99e80cd7f (commit) discards 107199f0da19fd14a61b7970ac8b436660a60e80 (commit) discards d2691a7ff53cd36ddad01abeadf405b627800c24 (commit) discards 45a0fb7b23665ecf5540bbe1eb5d43cf6a613e15 (commit) discards 5fea197b78c7bbefe399241f3aaa78731503902a (commit) discards fcf027550c824bc49c55b79ff07abe14b328f368 (commit) discards 8366b54d096a7c506c95d7aca1cbdb878f37cb3d (commit) discards 4f6871698f788d1f0c9dff9c75732bee7ca5751e (commit) discards f8d8a395cc80784438a0bb670f04716bc71121b7 (commit) discards 1ffff099c164244b25429a0b726639c167d179f1 (commit) discards afb00ef5a11cb78d0c62a23e4856289a5d475f25 (commit) discards 81a9f8ef1e216edaece16a765f1dfa98807f02ff (commit) discards dc40a7789c5edbcded79b14a57e8527beb5a0426 (commit) discards 4680cbb2dd95472ffa4f4cd34e0fb6cff28109ad (commit) discards 094ffe37ccbead1e98a69da0306ae8d2e7f3978f (commit) discards f6f123025970e0c3b204dd6ddbc7393bc68122b1 (commit) discards f87dd96375448ae1d038708ff55743e24b451eaf (commit) discards 6772c795e029639e48fc0b6e2248de5c919f9c41 (commit) discards afaf1fac0527ff6bff70120a309c94eb6494b28e (commit) discards 9ccf10282df8bf66b10e68c3908b19d5f52123c0 (commit) discards 743c87883b9125f6f60dd52ff94e82371ec06ea3 (commit) discards 89351e02528f7048306923ae57566f62f6c9d3fb (commit) discards b2d9e55c27c934eb19f348377001cd4beecf218d (commit) discards bbba1148ab93b41502d39f989ca2104f831185ef (commit) discards e5459d34bf368791a31cac5bbe6ed96d6a88c26b (commit) discards ca94fb2beaa66bece9a4a261a798905a77b3829a (commit) discards a4aa5ceb2ea13e692f2458ad5666ccda01a22b2c (commit) discards 880ab2c0b49e7d58d4c82a892fbeaade473e134c (commit) discards 471d717d82dd0de84c2961522dd679c0eb2babdd (commit) discards ddf34ab39a0e4987b60135478f4e1a1b4d4e3185 (commit) discards faffbaaadb9d1588de332520c3848d2677b3966b (commit) discards 9686a38f92414dd0a7f01e684195a24c898cbb31 (commit) discards 33ea6e9c8fda0aa084733c2996aacd394f901787 (commit) discards 9eb57ee5219b45e70796a3383e26fdcb3bfc8a06 (commit) discards 374d13e7b6df41ed17c39260fbb9e17c3f2912ff (commit) discards 0c89de8fb6367e296849c1fe408c10e735b50763 (commit) discards e0632e64982ca433c46912818229748e2f16f6f9 (commit) discards ce3055e65aed26ae73c4aadc12cd6101230fd429 (commit) discards 364e78e29286a6ca4ac84083f4f979ef557e1c4e (commit) discards 45fb4d271e6b2c6f0aff6d13ea51e4e54b7244d3 (commit) discards b98401c9903374e2b9a5f5469d87805427343664 (commit) discards 1368684460de9bbb25e91e2e17b3e127855d7fed (commit) discards df5b3498ed0fe9d8f0bbdfcff15daf0544dbf153 (commit) discards 484e0abe7a02e604efba883a8482762e548cd045 (commit) discards fe9921c9b0371d7836624c14779b3f9f67d76847 (commit) discards f6bcf830112e9778a2b79471810e7fc3fbf3dad6 (commit) discards 4d5389bd94438b4cdd3bd2389804a79dd9bfcc79 (commit) discards ac19f73cc4c965413821b0432bdff5e908e0593f (commit) discards 2fe0e00e4556a34bd5cc2873ad57afbbc9691b4d (commit) discards 1752405754633af7282af3b82043487d567fed7e (commit) discards 5b7ba536d70cd0e4f312063b71abc33e5b8c30bd (commit) discards 3da5dd0e362256f4550ff35c3da6ec9312060058 (commit) discards a346530fa42b1e128538b61ace8ec73a845470ac (commit) discards ea5a8c91f6427a3f12048609ec95000ecbab9b30 (commit) discards 38a64b696d674e415934d1f269468d0465a09bf1 (commit) discards b63767bcb8a02c9542c072c722d72b04d20eae2f (commit) discards db9c8c9db6ecfc6dd196c377dd91ccbd604d445b (commit) discards eb10a9ef8df21fc0e0064fae58bb43a401085a83 (commit) discards 60c21ddbc2b682fb1c41c7826969de112dd15b19 (commit) discards 36f8385bc85b4a34a9787fc0fde7c9c8f0b987e9 (commit) discards c4d1df76191fd4562d5e2fb202fb8ffe39437f38 (commit) discards 16b3218ebe9cdcb51a4a2f60862ddd3bfd761da9 (commit) discards c465c435dcf0b9c0b52ec5249247534b2cfbc4b4 (commit) discards 0559cc50da3dd8e7aa74eb6276e732c08d6cf8b9 (commit) discards dfa78985b4f6994f43b877b96d0a6dcb81cfdc01 (commit) discards 3cd8766b9c9bc04002e2b9d62bec852364ad2314 (commit) discards fe638ad614f6ac632da23caca430a76e27ca1e98 (commit) discards 4eb3ec14488275e63a223441a021d2ee65574c70 (commit) discards f42c90365cb253a7956e90e5620a0074e5712936 (commit) discards 54dcb64a4dd2b4e9a20c7d7eaed23e6465570b02 (commit) discards c0190847e32fb35170ece910812e51bfb33829ba (commit) discards 93c2ed941a5c659f701dd8987e23dbb3156f1daa (commit) discards fee4f5507b31e76040533489c7ed4b52352deb66 (commit) discards ffd28c193079a1e720a32b85b0a4727bcc869f92 (commit) discards 4e5911c2914392c2c2b5fa2d22773064bc9177fb (commit) discards 890871ba4d564fb8940e927b0733e57e894808a7 (commit) discards 70d592aeba20e74a17480a548db3d217d94b5283 (commit) discards 4b86794dea0406ea09c6fc92911c48d87d7c1f4b (commit) discards cd124ad802326bcad36c2342b46b65e6290c50ae (commit) discards 6e06ba09eb808f8a439b1bad3ef1d334537d6a2d (commit) discards 70964c3a2c137f608cf0e756377c8471f7d5d82b (commit) discards 3eab7f5a8945cdd65c7e1a0c96cf1f80147a9bf2 (commit) discards 18131a58a54d10b10b5cbc80ab983dcbcffb3021 (commit) discards 3c4d7f1d48d15c815055eb343de1a9fb48a75a72 (commit) discards 69555111d740458207f72f33a25478f249de6c59 (commit) discards b9a8bcd5c3d2fa0be826cac19c24d4a13a9bb0bc (commit) discards c25476b5687402312533d40f546775bd2919de8a (commit) discards 19e86f7c24ca3c302e261f3f683f8f98d9bf3d9a (commit) discards 89b1760159ab644277baf14068032ba6f57d7c01 (commit) discards c1d41dd989539b8dfdaa19aaf21adf73eaf8b15a (commit) discards 42f534fa6ac5de9e21e54fdd95d12b3d060e537d (commit) discards ef1114dd178e5930ba69841b0f1120787fd0ef60 (commit) discards 14361c09074f43ca87484d87212c5f24055a9769 (commit) discards ec9fddacceaf86ebddc32095e458aceb832333db (commit) discards 20d17baae2cf9cbe39b60d3b4942f9433139c919 (commit) discards c0fddf054c2c7fe0bb077293808f2046521ee305 (commit) discards 57cd1c98503496b458614e462f51a8b904ccf709 (commit) discards bac79ba18c9e008f0f85b959716ec99599c27dfb (commit) discards 4b6ef3021831b98dcd2cb1905b17dc876cf94da4 (commit) discards 5b2664c0a9bc1d43a0b4bf808ce492a90deabec5 (commit) discards a82d424fbf320556a15923afb5059bcc5613ddf5 (commit) discards 1a4ee982fbf3bcfd348c8928d85dd4410aa3d48c (commit) discards 55960b558c1264ca10080162c39a33919a7eea42 (commit) discards 4be25000bf2246f57f1dbc2189930e5f19bf192a (commit) discards 37298f56bd85e16922b774cf6fc2a48c88b880d7 (commit) discards 4a3c726affd569ebeec6013ee146eaf637a14095 (commit) discards e3c427ad288e41485c32a96c56e682b1566837be (commit) discards fdba0e07faafafe90be5336626b1ca8ec8d98bf0 (commit) discards f13fa0c1a59a0b343c848abc23bdc4a3d8acaf3e (commit) discards 1d921b1cfae8567a6467e2dd25515efefd1453d7 (commit) discards 8a7f8cd22ee4b9d367cd1c18d80f9a351f3ecc93 (commit) discards 413dcc4cd29be42c421a81453d0e36d783f17d72 (commit) discards 9537197b4df5011fdf5c31638b8eba041f903b77 (commit) discards 82f268cce628c205573ae6a77a477c9d961d7844 (commit) discards 3cead32f1305660731127091dfcba692cf87637f (commit) discards 53be013a5d2539918829938770486d76b48e8443 (commit) discards 4455d5812f4d5bb5ec90e47dc2e4a8e56ce59034 (commit) discards f499c0cdd7af66b9166eaa16cb190122f19d57b2 (commit) discards 761cec8fb1e40ff816bcfb8acd044d0018c70ef6 (commit) discards 3bd09b34c512ee2338dfbd277123a60cc9e16ec1 (commit) discards 430fb980507cf47cc9f1f97a00f1a7c284801dba (commit) discards 6c4cb07bac6dd8ecb18759bf71fd911752bc1e08 (commit) discards fc55997b9e4c903ceb0ac1eb080a0defef70a26a (commit) discards 16b971f9688126aeb1620fb19f27bd1167c786c6 (commit) discards dc4d19e9f6507cbcc39c1a517b54ed1fae9cfa3e (commit) discards 8f13eb89666585cc05eae62c788629c33db9f251 (commit) discards 3bb90ac41c5a6d0cf446cb43afc6b78a077ee036 (commit) discards fadcbd9268ed00ab444a3e2583d14ed193397dea (commit) discards 51cc00a5f9e943b759eb2f85358ddaa75a7256b0 (commit) discards fea856b67c3bd29c840faad2c28cc76fa7c99a18 (commit) discards 3bae1e7ab2805042c35570c268e7b8e49d6fccac (commit) discards e9c190de6280eec4b81c53d0d24bf3dfe6239857 (commit) discards 02ccd111fa2e5c1d5e72bf03bbe9f08bef4388cf (commit) discards 3716cf6f791b59ac8f9a566c724e493ab2f4d315 (commit) discards 7d3c3c843729fa1c6e3766bd5664acdbf4fa16ac (commit) discards ad714c5adad5e640863ec13cc206f5dba4a4d7b6 (commit) discards a85254c4d75914b920a91a8858aa71963362b31d (commit) discards 156f1b41c7a5fdc1740b05eef89dc84e5f0ccaac (commit) discards e3587c36a22a7847940c9c66b420ba02e11d31ea (commit) discards d427b3df774b19c895ee0a21f0259d9a7a143d6a (commit) discards 7be271cfec0eedad1839d579871a08bcbcfdbf59 (commit) discards c9ab6f3355a41373dfabe854a90fa20cfb1d40f8 (commit) discards 80883ebeb81c73a3dc5c4ee65050d57e2c6ccf00 (commit) discards 748b82f640fdd674f6d5eaf7f7b63c500a7a33f4 (commit) discards b24231587c8035bf080e3c15b50ed443b2fe1afd (commit) discards e7cafae29d0720f06280255a55cc94548e7e12a4 (commit) discards f6d4714b7f22d467fb6500fc77adf2d968f14c5c (commit) discards c91d81a483232d0592502b94afa3468c26e79123 (commit) discards 4f414765ee55a59ecd408a774aadf04fdaa83f28 (commit) discards be3d61dead30742a3d941ae6351568f800148e03 (commit) discards 7f3319dc1160c6533081a853a682480dc8fed02d (commit) discards 094d8f9599c2b5fa365dc175b360288c2b588bae (commit) discards 0ca8d88ed49aaa03d32997ba7a2c5cfdac934b55 (commit) discards dc0f761b1492a0911f66b664a2a7ede5ad548638 (commit) discards 757e9e20bdac33e6e368254c125d6fd12a9cbc75 (commit) discards 6e14d6f5b2e8e8ebf26eb61d5b06d8593dc3785b (commit) discards dac27bbaa699ba548fbd442ee4b88a6d73a6734d (commit) discards a46902c4cc33eb0ae4ae7ac8d0a6447c4f14fdaa (commit) discards c701d41c3cbb28bd3eef3aca0184c49add37659b (commit) discards e11550e7614b0a048e5668c715c0ca9b3f7d7ce1 (commit) discards 82c4c4cc67adbfebbd4a2a83dfcfb3f98764d3cb (commit) discards 9b14bd5dbd43efe2f42a35d4095807817c8867d1 (commit) discards e2b85e946aade5c4debe952439bbe9b835bf5b0e (commit) discards ad0298f7f912caa5692e2ddc6503260f1a4900f8 (commit) discards c569fb0f2942a3d33f1b4cf8f150f515d84b05cb (commit) discards f288e3c38dc26ab8c36a73ed8eaa128e0be056ea (commit) discards 8bd35134615a32d27d28537190d75b0b55fd353c (commit) discards 4aa9a83898cf6b78e564164a7411b59410afc8f7 (commit) discards ecf4e9abcc221dac4a9c6307c63819dbcdb1a22f (commit) discards 6741f3502837d8a5fd1204afea7bb74e3e757774 (commit) discards 589502d3d998d18d846f635961e1e28c17ffd893 (commit) discards 56f8c11f0b476b0a9e2a26b2cac941e47b3f2a5d (commit) discards 76a065ec8b7492d3303b37455d132f7092092645 (commit) discards 8cedafc80bb6e43be6f8d235e1c44f59c4149faa (commit) discards 6937ca39da7f0f03589a7ccd820503f6aabfe063 (commit) discards 588eea410f19745b584c9a000bba832af9736232 (commit) discards 5655fbd58b0f6cd0f70afc8ba381668225e88bf8 (commit) discards 48a9e9a5ac3a48165c91aa9e34cd27057e298927 (commit) discards c87b60278e5cff1d946e1711a06cac6b3b29cc09 (commit) discards 2bcca2429f4ad6171d8d2d8f3d1ed27e9f9f0d9e (commit) discards 41bb745c2a73964671eaa4bf59307937ca5c19f3 (commit) discards 758f3831fdb72ffe6a1fbe4067cb8872be32ff0f (commit) discards f8c9ef5f9deca6345f3d598c4f511b4a21f237bb (commit) discards 400c785d4e4e94738f5b11cd95e4edd56f41f93d (commit) discards 03e74c51f9c326258c82e579754d9ec4c99bd4c2 (commit) discards 23f71563fb4aece0ae2b1e27bf09eaf596d8bc61 (commit) discards b96f854803bb74ccb0ee9de6a181528934bf6027 (commit) discards 00207cede371ace29a746864fde5bc13d7159819 (commit) discards ff8f468d3eeef264f67ec725dc9eb10a26f9b5f1 (commit) discards 3cf08d88b50186984d1eab2ddd2bd75e60413af3 (commit) discards 4013fb510f6ab573b402ebc33e9cf5e157686d4d (commit) discards 68dab14e98f4b3484585c5cc1d81c173243e2970 (commit) discards e946da9a7d85aaf39053c1119b98f52a02d0acf1 (commit) discards 952c7abb893c8081875a1590ee5ba5e82f02c67c (commit) discards 633f193daeaf6299620497929f24078219981d38 (commit) discards f126b92e2e8c123868217929b3bca0280438195b (commit) discards bcd31ecaf3146a9a2c87a7d8c1c1d882e6a98148 (commit) discards 5a42adf40dec8dd084273d1d75f4ceb9f6317b2e (commit) discards 45ecbc2f6144872ed2335fb724639145f2852815 (commit) discards 38e0bfb5a86e91f7bde8920c8b4ab17aadf304af (commit) discards 1af641feac4cff3ccb372da90e997f371540061d (commit) discards 84a383fe0fcc0ff93b70c21380c4b0702c55e6f9 (commit) discards e9ab5368f1d1b7701812e47aa12468d95548cb33 (commit) discards 27096d4512ef6bf21403aa0f466908d940db0078 (commit) discards ba5a250cc80ada70049cf2c292786de226f85380 (commit) discards 7577b8aae8d19e61bb2f4412ac2f2ff5eef0da26 (commit) discards b6a81ba7fdb0875f04fddb74b33415c6e8afc507 (commit) discards fa711796a81ba5d502e2d8711b5047fca41f75f6 (commit) discards a9600a45e0666a432e5be02d30c214fba6088c88 (commit) discards caec99adace3ca24f2bec287a0295328c8775e23 (commit) discards c2cba3634e5240cdfc0cf9312ecb136645f975f7 (commit) discards 3551cc639f4a5613f04e8ae01737b92e56cf5144 (commit) discards fe82c1c1433d0518ddc6a58d38d621cc58a998ec (commit) discards 04aa7ef90c582bdb0cb9956fedf059f241a5bd7e (commit) discards 2cb2d3bde4564d0cdfd8795548608376f5fd9f22 (commit) discards 3fee704d668e7d09fb764b4578020f684bd9901f (commit) discards fb71965fd2fa1ce653994c91440b5e3c7843e946 (commit) discards 45e2b99dab4796f63ae49ee5c875fe12aa98a708 (commit) discards 7310c2c5530b3cdf671effc260cbf70733066213 (commit) discards bdcad14a4630b312ed32740d60b8bbe99a599e87 (commit) discards 85b0e1b9c985b0969fc9debe43bdf0705f5048a0 (commit) discards 280e894d172ea442be8113fe3bc2fdcb1d959485 (commit) discards ba59c51d607b16c18a4f8a04344af6638f1355d3 (commit) discards 426a448f503200dc11a0873163fc9643b9886317 (commit) discards 6c1070ea505530c488708291a6dc334e4ea83b80 (commit) discards 721c80198c61664e621c767ebfe05cbee4ac097f (commit) discards dc06a03995e8ba20debc7f4e909062d0b06313c2 (commit) discards 828960adf80c6e7b6ffff7361e505c09b69dbdc3 (commit) discards bc30415380cbcc2f7229ea0d35e6ccde830ee383 (commit) discards d018fa489aab152d797eb7e41a8038b2520d64e6 (commit) discards b2fd42ef09901d84fffe9d7cba3af64b4a825605 (commit) discards 90861ea075e1467f084f77fcb7a696c14e459030 (commit) discards c928a99e07497a80af9ec295cfb2d0ca9852b354 (commit) discards f1ecda66b6c61451a53ceb935852b80231168697 (commit) discards dd529b0e3abcd72cea921068377f2abfd7b28d5e (commit) discards 75e22758d49460ce35863ca716e9dc1b43eaae93 (commit) discards e7b9790733aeed1324e029eff73df99dac46eb89 (commit) discards ed708bff3ebd1fd22906f447cc50ab225523376f (commit) discards 5db55ae49081ba63054416149c925500c560f89e (commit) discards abb8f08bbbf7d22a96f876a3ca7029fa1c63a93a (commit) discards 55757c4f776068edcbd3c81e740d561bc3a2413f (commit) discards 54bf6575027c558e2ad668b3727eea20e9e0e3fb (commit) discards 73e6e03d371a7ef3d0cb8d798554df6338f29cbb (commit) discards 8f731f42e291871aaa7b48bc7a3b3399ff121ae9 (commit) discards 4865e38d319212b1d22f626082cf3e0b8ef91c45 (commit) discards 562ac0efe3ef5bf955edb0399913a1c1cdf3db18 (commit) discards 25ddef504d4db096160527e8209bc25e7d1a3a5f (commit) discards f5e7284d396a21d0740820230dbfaea324efa087 (commit) discards cfa30468e89788d220ad9fbc07ab1ae3406cf3fa (commit) discards f825d1b0adae20e4ccb351b9655ab3da260643a7 (commit) discards b4548a606ee98c29df8cdffb6fe0966843dcbbcb (commit) discards 89d99a919608d52cc3811da82ac22379eb8ebbc7 (commit) discards 1c9fe263d67c0828615857e4dfd8c40dad61f295 (commit) discards 9fc6b2087a08b9deb560d36ac30c0ca25e2692e2 (commit) discards 4f46bb91fc142b4115509790b6669b8e559d6208 (commit) discards a9446ac12e9fc0a30c3b1638b9567824d1083824 (commit) discards f37729152d625e24c4a6303be2bad8a8245765c2 (commit) discards 0cc28f37fb7c37e743d3263a9cac55f74578d430 (commit) discards 2293f09da43d054658439b02496e82aea370e050 (commit) discards d9fece6c0e325ee0a5394807395f2b2e2bf68f20 (commit) discards 640b81a27c6cffa927e9fd36bb3c0a9c3b0c4bfe (commit) discards b02c69bba9f46cad37225a0986cae068f24dcd81 (commit) discards cc42515e9f9428dbcef11d081f3396e3c6b46fd8 (commit) discards 3548168d8ff14630914b79645f22433c2a5243ca (commit) discards ed01944c15d93885aed94bd9e4f9cee86d8b4c86 (commit) discards b36d015f0960107a43bc0683b46cf42e5df4df7f (commit) discards b6a533ee9a6676e708325762661dc3560198c230 (commit) discards 72baaf6d231c69bbfbb015b2908c17a9005001e6 (commit) discards 30b2c6fe905b8ee2b477bb0a99bd67112d572bcf (commit) discards 29ea6e296f0991e81b358c7941eb0f940a9eda0b (commit) discards c236541e29b022d4fef66958ce796165ab15ea44 (commit) discards 4999723687be066188ffe02311e6ca7e7f944e21 (commit) discards 132795af795399e7d716a9606b284dd4172f8377 (commit) discards 50e377dc94f8bd3f266040cad61d76b7973474b5 (commit) discards 5e60c62e08d055f11adb7a4bc73e08af668ba7f9 (commit) discards c296179535d66a28fe18b6bae2969447ab447348 (commit) discards 62b55523c279d8d38e65eadd46a8909e45361007 (commit) discards 549b2356d6c08ac9eb63eee0432805df5d5411f1 (commit) discards e1fb79a17956f2f82ee26fd9bf2d81a7b02ca0b5 (commit) discards 4ea1595481b5bba91352c5f94d4c08f65cb31b96 (commit) discards a329bf12b70e5c06c496c60f2f71e1d3d42bb7c8 (commit) discards a6e502bedf08cb94e06c48ae34d20bba24492bef (commit) discards 5aa13f13e79697a5947a9181139ec12b8bdf0332 (commit) discards ef773e0762ed7f511b4abf3d0225624a597fca6d (commit) discards d093a4a4c641f60b06d23b14109a29b7f95f56f9 (commit) discards 04ca07512d76c57d166daa91fd68110939d0605f (commit) discards f7d16ecd3b387491db04bb0df82a1c2ff9dab9a0 (commit) discards baead3ddf0abc03c7986ebfd33ecfbfd304781d7 (commit) discards b3f9bfcba56c42480e61d9b9a02a0996a02cf87d (commit) discards 696becc093a8faf05ac398d8e1a2d433abbbf6f7 (commit) discards df63657e619a8863398981416ef001ae9eed392a (commit) discards 56c717d7f65b110ccee04610892afdf65c7e477a (commit) discards 5e3377c7a46fb479e1501ac884e29658e40a2ee2 (commit) discards 09fa66787ec26d523b286e4e4d7e3846effc6394 (commit) discards 3b04608c2e09f858ba1f0a5b0b4ffe4ea0669719 (commit) discards 6b77b4ec0771e034b3919d6bd29abe5c7b66e473 (commit) discards 108ae5c48a0f74f0f5c2725aa95145867426a7c8 (commit) discards 184f395553c12ace7c613e9b302879cd12ee063e (commit) discards 95cf2209fe50c127e88d0021ac93b36c73a407c5 (commit) discards 0748711434e937aa903536bcec46d9d997f92af1 (commit) discards b834a0e5d06ddd8f88bd5d33f6f957a4614a059d (commit) discards 7d84351de9cba0f95f76396f08104441cc22739b (commit) discards d5239be7515143866ee5573f4ad378caf33ef2ca (commit) discards be2b5777ae47046f2346e77e05e3ade5648839ea (commit) discards bd24aa6d795e74fa6398122c5a1e7a20055bb8d8 (commit) discards ce01c76c56cbb8b28307f37e0bb502a8e777e7d2 (commit) discards 62d275dd9d0cd7cd20fe4b3e346e7b158ef41b0b (commit) discards 4e41e4c584a1208c96ca69b250e4df002952376a (commit) discards 0477cb67f5a454367f4b5208bdee6d849d64495c (commit) discards 445731eea186ffd2fa7ac2b268180a5ebd6438b5 (commit) discards 07ec7867db580faef8eb120ed5e1b991c06a5b2d (commit) discards 1c76ca4d72df8faf698edcea32b17f33f5009533 (commit) discards 6235f7435531bf253e2af845859da5f10b633d91 (commit) discards d7c5cb2e33bce05ba5e96df12c73813ef020a88b (commit) discards ff37e9de9ae625597041ca13dd36935976a5cf4c (commit) discards 59ec8ced59266a852c3b7bd5a6dce071294c5fb1 (commit) discards c9fcce0869c37b4248ecf56944aefed4fa3ee3e5 (commit) discards 4ab8fa13e126ef3beeba88fffd4a5a0e81f069a8 (commit) discards 7112c94e295833779060c86375ba4bd3daee394a (commit) discards 765cd2b7e21588bb0c95ced9fcd1445b4f4bcf0b (commit) discards 6068167208d99a6e0bd54332758b9f4c7a77661b (commit) discards d4a0132415ea461501255906b7455279ac6b71f4 (commit) discards 42c9df72ce2c1653b4c7def98336d848dacfb2c5 (commit) discards 83da7bd3188ddcb92b10ddc4e07792c40aa4885f (commit) discards a045519f6b07186b9d4c524d2bdad827b189f02c (commit) discards 19dc1ab0f207d20a0934cd0c15b1e7757070be25 (commit) discards 401b23549ef108acc18e1d417ea74ad6d1665d05 (commit) discards 94cf078a4d41b8a97c1f1d3d630a93f02387837c (commit) discards c8a897b90c5d64a08a758dfca3c2b2f56f163465 (commit) discards 7d5ca1c08601694be0effa41965d9f2d8299a8ec (commit) discards 8726104aa3ffa9f542d0b64b4fb43e6acdcaff77 (commit) discards 0d0b4b4383fcd24a3339f8d5c647cc1aee46e8f7 (commit) discards 4e567a28a209a2037d88af51c04b75cdec1214cc (commit) discards 3eb35a57bf702f9289dca66d913b285888c1aabe (commit) discards 6a0f7f4ae8d0005cb9fdc3286537b9b60b50a592 (commit) discards 04b52156465f4b0199adcee6181a613303749073 (commit) discards 486dcc631aeaac7b8f36acc4269531ab21be5ace (commit) discards 134b78c1038c8968f10a0e7bed97e73f7fd85699 (commit) discards 9c22b0d0f44cfc62c64fdbd60d1d0c1672ceab22 (commit) discards 9835395c73ed58957ffe3170bfed85d8a6aa2382 (commit) discards 283b7a85b825febf2bda0d650505d400816ab178 (commit) discards 4d29df1fe49fbcd8226b0b492831b1e6b22ee16c (commit) discards 54ba998f6c6564c9ea9efb8832c0bcbd61e834e4 (commit) discards 6e23f3bef611c974433ed98348affde23f732b2b (commit) discards ef79535c45fde4a01e6df7e7ca28633649949c7b (commit) discards 8ea90fb17aa89af353e7ddf16b908436780f2322 (commit) discards 51df54ece3c49584315a45e5ebe2e9b7cd0ebaba (commit) discards 0ee84ea57b9dc9609d20d72e2b92972bd56ee331 (commit) discards 5812c5fd53322940c5627703d57dd3d1d22ed6e5 (commit) discards d31c24dcb3f4ebbdcaaa2744657f61680fa8d02d (commit) discards 74430cb3c6e298d07b43ad152ffaeee56a722312 (commit) discards 6f2c455f929946c1eb5310e8f0df3b8cffd911ac (commit) discards 5219ab8c6330a4e00eb4c1262906b39044d89496 (commit) discards b77518685cffcf59a4a26ae3bcde9b0d7a5cb75b (commit) discards 0279261b0bf468f6d36bec6fa5bb359d2c3f17c2 (commit) discards 66cec884baae60692f041aab6f73806b4a906a3d (commit) discards a53933eddb2ef33af0b7e4b972744b862eaaeaf4 (commit) discards 403bf6af1c4f0a86424a2f433592f920e3b1c033 (commit) discards 5f012813efd18fe7e46a359fe80d2c5287a6c6da (commit) discards 5be58aac1b545e191b4e27e4b0cec7b7ea5c0585 (commit) discards a2e5f07c4d6d8fa947bda216c7f1940acb7fa12b (commit) discards d47d32e035bc9036c32d3497c96cfe2e4f098584 (commit) discards bddec41f438352063e33c70f13899b978584d627 (commit) discards a1eb601b197fc0fb3eb724768c22f920ee7b471c (commit) discards 7cb6b4b3e141772d1c3196560d7c268cabd2a24c (commit) discards c9e780b9b68c298687748c23818002511381ee3c (commit) discards 9fbe363a86217b1b8a99553dbf8933414ebf26ac (commit) discards 8370f0c23319dc41410507754ac8571b1cac42c4 (commit) discards 507b73070b65e0d28c4ce4714bb6d64d4cbff7f4 (commit) discards bc2638334bca11e79b24ad1e44df9af09acbd0f7 (commit) discards f30a1cc6882e9e9d1c83c69f0866ec728e406e3b (commit) discards fb48d5ca9d2a1266a1ddd1714285d4c0b61db77e (commit) discards d5ff3e04ab34475a66b75363db921b6100b6c257 (commit) discards 5bb007889c0713eb42cc93050995b50fa8bd7c6f (commit) discards e6d6045ba611785e0e2126fdcfb2daf9c641e260 (commit) discards 5680d93a2243cf06a41e2f79f257cb65d53fcfd6 (commit) discards 83aeda7956943bff4556202dc182d59b8e96a83a (commit) discards 1a75821df8477cb3a7d959034f3d550076ffcbca (commit) discards 163ca31f2c0e7bb4f3e71806fac8147f3c426fc4 (commit) discards 29843a6e4ad565c03bfc525c13eafdf4d0aa2c36 (commit) discards 71f142744714968acf672da37a3308dc3d6ce284 (commit) discards f9d44d3bfd6d6026cb1e3216e965a7e233e69a0f (commit) discards 7eae2b629e43a6ddf48657286895588689057494 (commit) discards 05eb47abf1e1f31d118bf7d3b87cd1d8248b44ac (commit) discards 402f2391dc15152f96619c9bfb21809b13ccc46d (commit) discards 87db11afe02ebaaa898f3b4b76258ca8ff6f60f3 (commit) discards 53d00f6947129979b0515e1d3e6850c55a041715 (commit) discards c4324d5af4a5ca8fafe34879dbf7af04325f1143 (commit) discards e7fecd0ff9bf86fe0cbf8bfd7878cf40337d3be5 (commit) discards 5a6f0f5c37939b29ae40f6a9c3e454639d4e8dfc (commit) discards eaeabc7b04b09a38d0df17576b551d94aa6485dd (commit) discards 28046a89de50f8cc87159d4824aeb946e64dfaf9 (commit) discards 646a5609a19416a4d0203a0e2d8395ed128b8dfc (commit) discards 2befa393a63df5fa35af1f089eab7c404a4d6490 (commit) discards 42c307253bc88621254fc9bd92f6364ca088c5da (commit) discards 77671c049bca64a54c82917bf3bf7b093ff30655 (commit) discards 6875a9718d701ef9f312c677e85bd4675eb2abfd (commit) discards 20ec962a066533e6e0169d4ad4254c5d2c1bc8a7 (commit) discards f777b36e4f9f0864ce475becea8d2b590184eb42 (commit) discards fcdc147e0489a8524b927d093f5016758b651e07 (commit) discards 4526ba30c6ec71e56cefb798c16d3867197f2989 (commit) discards d18c3a8a60bac15869fcf76cb3a93c238fa7f071 (commit) discards 977a8ad7ce7e72eca118df331ab0c53fda7b3a03 (commit) discards f3c6512ca08c3d4aac9c266e89929f8ab2a6d8d4 (commit) discards 4d448c979eadb63578ab7fc07949ac7aff9ec144 (commit) discards 84ee0ae61be9c88267e818685df3d7743a050881 (commit) discards aa7c9b898a292a461347cb9191361f918e89e654 (commit) discards dc51ccbec18a223beccfc5f8cbde063e6950e0bd (commit) discards 86de47ff3140d2d04e72c9977a3b3fc21cff54d0 (commit) discards 4d3357e18cee30293a77fdf7f4ba8fcc9df9a2c5 (commit) discards 381233ae0becc99ee1a4801883f94b704f1e2bc9 (commit) discards ac20528816a74aa2a7619a2425edd5a389161d13 (commit) discards 3482f95e72934dd96f80188cc04b008308bf73db (commit) discards 8114b3f18d4a6e8ec396774bd78cb50145b91158 (commit) discards f708ee1a0bb2a66b6e87e6fd0e0c496092eb1494 (commit) discards 9a8bd09360dff4d80a0f1eae2e127109f8bb4e5f (commit) discards a13cfa488bb2fd39f0e83e277709c9bee7b3271a (commit) discards c219a73c0634a4b93e021e984589da5dc8f3b2b4 (commit) discards b76e7f1812a59642d579866a8a060243fc396c50 (commit) discards 7fd0f84cce13dd94da7b88a66742eac95e1c60e7 (commit) discards 2f3187e47060a45d8e3bf8581582344d9cccbf17 (commit) discards 26f2e095efbc9b5aee04906dd5983858e8c29eb8 (commit) discards 68d1c32ad145c712c1d7939e5649a0f187f20170 (commit) discards e3eff8165e64804ea0e2819bdd0fce58bfb3a9a5 (commit) discards be00609aab7a51a15794c2712dee78263105f5dc (commit) discards 35fd2bc9e744c39aee91e8d7bd39ac6fcb262f4f (commit) discards ba3a6ad6c8b268b064a11ec0f51f5b2c5e32a303 (commit) discards 07c3c94d7a9de90c42ce48a97cbcf61682633358 (commit) discards f5a6831ffcd01ce948edea25197b8d920fec1f07 (commit) discards 690ae1b313074efe8948faa539b6335c3140ca6b (commit) discards 8381a4f3cf941aba8d2ba8b031ad9774ad05096f (commit) discards 0be95658aff1ee11daf97f8e41a63e4f1c1a1b41 (commit) discards 2d3d8c8ddd2b810a8328cf80c08c10926a2015da (commit) discards 73e1ec5e46d7521aceaba30a111cfeaad950a739 (commit) discards d7141be3bc08b9b3216048c73952582f6451c7e1 (commit) discards 461db7573e63eec8b10309b1d633156719f3354c (commit) discards 2f01722ebadcb049c1080c545073fed226a3af3e (commit) discards 3e1ae21d5d6f51518f99d82205fb1cbc74e075e4 (commit) discards 71fd30d40e5d0c87575a4e95cce1890950bdbc3d (commit) discards 4ee68141d794dd4a296792e0b81c5a20a95d5d89 (commit) discards 5ce37cbed81837a13e28c8e4b3a49665bd550b78 (commit) discards a70192f2c7dd0f0dd1100b157522dd7871b17dc7 (commit) discards bb980fdef54cdbe4de0a42a75f8ff8c181f6e383 (commit) discards 4fbef45522f4346f31452ba18eb50212003301e8 (commit) discards b762a0aa7f2cfa24889cc308680d97a672591e0d (commit) discards 66e166d3e2f295668422cdfa970a9cff2f87b69b (commit) discards 772a3f815a66f9d9affd7111bbef4befd00c2d72 (commit) discards 09a8f6b19af9b444f84b197b4e4c8fe402b1d556 (commit) discards a8ad3da74e626177159bb81e0272ea5f767b0dd0 (commit) discards ceddc5b84fd9241df8ec725b07a4c8cf708ff301 (commit) discards 01d839eb64410908dcb7d4e2a913664b4b849608 (commit) discards a5cd2df89a99ce4cce16499a272be108c6b094b4 (commit) discards af3285ab61bca7fb5f8db1b53d53ddf3d4944bb0 (commit) discards 70b0e4bd512db4ca4f1c80ebe5de38a93f1c2bbd (commit) discards 16d918d025d7de09d7d564d249bba9604f8e53a6 (commit) discards ca481842569116305d1aad2fcb29ec2ebedbfac2 (commit) discards 11361f69a45f83b0c60fda9094b76978790d5497 (commit) discards 2066322891f64b31bdd300e5151ac677c689d7e1 (commit) discards 82db6c4fe3eb7a9671ae0420d0fc3264a310a930 (commit) discards 7c0b748737f138b85df15074d6e72255b742a07b (commit) discards 4da5c5cfa2d7410ec53757df69d6f2d2640c1309 (commit) discards cc722c64f324504317b5790d0483d2621e620af9 (commit) discards 2002f38b4cb4b36c7c9be94865a67b5a75668fdc (commit) discards cd0cc2e4a30398b3a2e1eb8f5e10c2df3e041fa0 (commit) discards e4b5c49fc105c3f13c31db8dd5be0c5cd8a8c655 (commit) discards 3f3d412b4b4ebdec6a699d19e08d8aede5880bb9 (commit) discards 6eca0263429902853acf3647503424446f52f3a8 (commit) discards 874aaf1f861f7b586c89b2cc8eaa8a2c9674bbd2 (commit) discards ecfc4714e352d90e9eafeffd0daa8d734b41ebaf (commit) discards a6e7bd534dc67d06c68206151690f13a4b8168e4 (commit) discards a278b6b403cc58e65dae32ca7ded444746e0cab3 (commit) discards d68a12188c2937b2945f592671fa1c21b551b732 (commit) discards f8daa1126a11f528e97514f16229b34d9e55f804 (commit) discards 4a7425efd8889d5c12adacf26ce9c1819c450063 (commit) discards f65a85106d61e6d024b2ac6a3a42ecb82001a682 (commit) discards 5a0114a16f7493b6d67e23bdb6ff1b69a2fe323d (commit) discards 8dbd62ff178e6dc63ebd532526a843fd19dce4a5 (commit) discards 8a6d0f68105496517a828a700dd97c267ecfb0ac (commit) discards abb342f4305fd2eca9f92b046400a513664f7b68 (commit) discards 9af30563e29bc250d2ef75d06e593774811e4699 (commit) discards ba0a2a32ba29d19cbb21f17ad31b42a093398d7d (commit) discards 432e9cdf5b1606cd81cc1e78d5958ccaf7ed1d7c (commit) discards e15d52bd80b29327617b52c7f382f3f4cb8f7228 (commit) discards e3b9db88947df3ae21ca1e20b24d84d230bb059a (commit) discards 65ce3554c8fcc0d75b0472470b3fd8dab58853b1 (commit) discards 75145c9db522edcc200129aa44e6858cc15db194 (commit) discards 7a2c0c339b9798294a1a9af27fba8bb7f8bf3f52 (commit) discards 749dc86410f738178414e4013cc9737f1ea1d334 (commit) discards ce34d86c704e7f4bf95cc2a6a1beebf872c96901 (commit) discards f790cbf20c99a36c633ffff8c7f70b0a12ff0db4 (commit) discards 4fc415b6e893660cca6354e12417f2924d581dc9 (commit) discards 05ab7e8de634f0a9da26fcc3dc730bce2b1a34a4 (commit) discards c6a4ddd0baa7c699b96d2590fd581dc4cf1374d7 (commit) discards b7c23acd40b6f69a2aca4d564cea9468c5cf2052 (commit) discards e90ccb151e336e50a7083bd5e6d35e82128151a9 (commit) discards 3a35139a3212d4d07da3c0f391b00f2e1daa2fa3 (commit) discards f7669283a69f4fa60f37ff59b0ac63ebee461999 (commit) discards def3e0b3862896b02514b643fa47d4e84576772b (commit) discards a3b2e91ebfdbddcf5281d21597988b76c28b92fc (commit) discards 6216d5df07876843127bb0f3e08ae30282fcac74 (commit) discards 6c9e6be255c4229931b333af114fb98a96d22ac2 (commit) discards 7c2cbf407362313dde3dfd0f87f2df41b1692b91 (commit) discards c443641a731eac9a15118b0f2a761c9d759bd6e6 (commit) discards 32cc2402f4c25369ed8f2b954a00b6049a3c48f7 (commit) discards 291adb56862ebd36298dde9a460f785fad61ac65 (commit) discards 4552c69a7b687f3a32c983081c90ce08b0b416d1 (commit) discards 9a26e0cc2bbf153610eaf45d9ea72045aa29f2fb (commit) discards 80363af69716e951a4918a22ee93176676f4cda6 (commit) discards e8958479bb24e6a7cb35b27db2ef6853f5900e0d (commit) discards 161da3306a6e7a65f947a1b356621ee4ca37bd20 (commit) discards 3e2056833b71af27bd6bdfbe1ab39b36af497cb6 (commit) discards ce352bccc573589d3b92042014931e17efa5ff48 (commit) discards 70331e88bdf782c5374f61cb1f121fcd6c924cb4 (commit) discards 96525d4f63a0f5bb2b7e7f9e70469d86fe401406 (commit) discards 2ea5e1cd8911805d226ad5c245899e4cac4a0528 (commit) discards 9099e3b85ec2a7a31ca413fa2091903fa345c667 (commit) discards 99b3d675bb475055b7802f85344a2265282c960a (commit) discards 53561eaa9a3113f9ccfc11f6826130cfd9131b33 (commit) discards 68d74c31c38e2b274235d38d3277c50b96a535f2 (commit) discards 72e5a7068ccbd4ed5036926e3125e9ab07253d8b (commit) discards 67edfdcb376197ce6bee8d52764e63cfeab904de (commit) discards 99ff200dbf0642e9084fa0b10dae711f2f890876 (commit) discards 08d6b4339ce8eb5dcf9504e78a22a022fb1ecddc (commit) discards 04b9b3e2a6093b2a7f2cae8267d73ae25dcc282a (commit) discards 2e8ece4fbaeb060b9443387c4ad940d51afac0a9 (commit) discards f6065262ffe0fcf923cffba23d991d5ee1d45b8b (commit) discards 57c726f130750de316f47a4b32eaea65f9c06b81 (commit) discards 67845680ba7d415801c4ff5db97c228890001f34 (commit) discards 830f24e8ea964efdf943c111cc9959cdc5e7ffaa (commit) discards 540ee0123de4119b1df10ce752a5891248215a8b (commit) discards e0d4c195ef88c0b892f704076670f12ef90ac9f9 (commit) discards ef14b78a8a219bd1d1a39b12f1c0d4118288d744 (commit) discards 04b1f8d8a59909d66938d209fc3d64c334c0ab3b (commit) discards 9b33bd1c1c558c8192c8f03478a191756154a7ef (commit) discards 37c224670e1e847de2be0b75fa7a5ab4d06f0010 (commit) discards 3be9460406361cfd286b657dc4502e4008043964 (commit) discards 7df3e18c6aa58fc3b804376ffaed2269c68c1e70 (commit) discards 2a730984d2989d943a839594e059f914fd1b9085 (commit) discards f26a69724292636f19aa651eb2569b41031ed726 (commit) discards 6fe6e67573e8247e7e5b508fe852c4aae8aea64e (commit) discards 46c6650a947a4d1733058ecfb2e7f9e098f847aa (commit) discards ab2529d4e1e33f01f87bb9db97e6c5883b5f4705 (commit) discards 6558276a83af5630c7b8d40b93717009bc94d0ea (commit) discards 86c9bed758e2542ed0d496644eecf22ac6c53b4e (commit) discards be36f97e03f6b85a67f5619bd01991cfb817f924 (commit) discards 84b1e2f805107391e660ce2133036d2a71f4912d (commit) discards e96a9cf63f2affe08ba9314bf13866bd817d703a (commit) discards 0a6ae735c747ae52e3ace461472fb6b563fee5d7 (commit) discards 83a5342bfab646c3f0c2a2c7623d949b3fa23f7e (commit) discards 89216756680a56196771dd3139d6f5e38908c0eb (commit) discards 2aac00ef819361d25b4c3cbc21cd257c88db8f53 (commit) discards f34b76c5e63f85a9ccd416c8d403eb576069bcc1 (commit) discards dc69c2ac962e097cc055d302232327cfd4c94aaf (commit) discards c4a9f9e78b088000c6d51bad21d497206e4a7b09 (commit) discards 8ec9e21490d4145c9393bcae3f2a1712ec247bde (commit) discards 812a275f47c3abc256ab01e8414092d215ac5325 (commit) discards facf09b83938d37fd1024e8c52c92beb121bc909 (commit) discards 0ea84c869c05d54f3b5e29b29b96b6dc727397e4 (commit) discards 62206e3d436f82b4b7ea6b241845e5baf77c327d (commit) discards e5aef4cd9a6f55a776d07e4e3424a4e68654ec1e (commit) discards a873b3841a04e0a2e0da535b8af648f017fadb29 (commit) discards 362eade2dc9b429eb047607755cdd6df355326cf (commit) discards a62e2cf7bc55a7a6b03f5667bec0dc8c2866f013 (commit) discards 44b7864ec3383f07341facba0ca3a3cb499e039f (commit) discards 7642dd2c88ea16c18fb70e73ee58b00b26017501 (commit) discards 6d74d7ab663ce166a6fa2e5ff45079244e4f53e6 (commit) discards 705dd237def5b93cb7b2986ae65a250ff38dc67a (commit) discards fcd8df0af73ae7eaad33c69a86104736f21acd8b (commit) discards 252aebf881cecaa5500219d97c252adb89a00a6e (commit) discards af100fd1563aa6e6c335c11482f1e3d0de336dd2 (commit) discards 79ced283b366eb8d608f83c6687e51fbabf84208 (commit) discards 3798c391777d0edd0984b270891f96d4707f8399 (commit) discards 6fc68a4aa9ff34c43c05980172dc7aef57654e75 (commit) discards 121e57a1db243aee9c24f5ec3f16b55e5d30614a (commit) discards 5ef61c961f5e226fb7a9d649d1f225c08a6ea3be (commit) discards c0d51b83f42a7b0161aa84f3b146db846e9f49ec (commit) discards 46dd24c2e9fa9f115710afe0b4036d9ac0202a51 (commit) discards a55b9d07a8265e51ea913e0897af8febb8ff6ca8 (commit) discards b5205c0bc0f3c6a0c834679f4abff0a3297f2bc5 (commit) discards 2ddbc457a1c6e1604c50e90b0213ad02ba98aab8 (commit) discards 84c2d80964a8d5a80877d0030176cc7c8a573856 (commit) discards 072bf5ad14c0430828cff305b5eaa53e6d881139 (commit) discards 77e2dccf720aba4c9fb2170fd103cddbf15bb075 (commit) discards 3867828816933c1af24e368a444092f5ad149bcb (commit) discards 8082aa987e27c9c5a8c6b4f4b9f8fdeff37dcfa6 (commit) discards 4d2cc185b0666618f59a57746813e2c92cf96ec5 (commit) discards 5481d9a98cd8c415e61d14b8327f1db22d2025db (commit) discards 7f075c0c28e7c1342bd2616fc0e2792ab2ce039c (commit) discards 0a9f6041dc6193e8704008964e00602588468513 (commit) discards 1977aa868452e67bed5a5ee5526cae0d5a032b92 (commit) discards 18695c75f2b2cd41ce8c7e7893913e4c3c091f68 (commit) discards 1abe3b9337e11d4c37303b3cfda22022477b53bb (commit) discards b38909af0efe948d93e4e691d501036cbe33cbd8 (commit) discards f1aead3174a0efe8862b9f2c314912efb33cf90d (commit) discards 96b790fa2ec59c2958fa904b7a04df93d1217447 (commit) discards 00b514033c829933000958e518d3a41d126ee64d (commit) discards 437c7805367e4ab8c2a4098623cd706408b4ffa9 (commit) discards a64061a24c1216b21c1b76c3d0f313783a9d9f54 (commit) discards c47d1ef81ce262e9e98220af0f56e3f7b1deeb38 (commit) discards e4f90584a76c701e8ff67461814092c28310d34f (commit) discards ada25f7261aab652b0f15907412955f6b25f2dc8 (commit) discards c44a097156b98074863b77d78809f32c076d8e68 (commit) discards c3c9bff7b323a45d61982ffe30bc2e61059ef14c (commit) discards 5f763d0d1bc2724024934b03114d87070b623a29 (commit) discards 1413a9d5db3c761f2053526133142b596435553b (commit) discards 28fdc32317b12e06bcc9bf806f4b19a902303c79 (commit) discards 93b313909296b16feb7de444478e0fc3f09c2768 (commit) discards 6626211ab67c978aacf4418fa2a84ed5720a1a16 (commit) discards 58ec9a311f4ea8f1f18d703f201e4f9c2a8660a4 (commit) discards 2843f1ad00238159e36af8e98a4f1e1fa49e8e18 (commit) discards 5c93d44094e9a8fc181a44948fa1c437afb2daf4 (commit) discards 0d95f63d745d28aa61fa330bb13670defa34a651 (commit) discards a1f19d9123c3b8a86b7ef16b875dd6f5332e050c (commit) discards 92d324d3aa071845b425bd9a6f6b1ad34d505250 (commit) discards 336f0b4eda4cafd1ccc2696bdbfef93d7ef9ec33 (commit) discards d26ddd55f7231ecc348454c26c075b5db665d1a9 (commit) discards 9ad509c29a83eaebbe90b905917617cbc448dfa3 (commit) discards b0de3585ea04057c16c8281fe83de74138e903ef (commit) discards 6cdd3e2a2e4677b061b9fbb9ee516fae9601cd16 (commit) discards d6eb7562e535137bddf8cf9df864ea40360997bc (commit) discards dbe62c25e96502585f059722f60cba199dc9b8e2 (commit) discards bfa414cb0fd783857d20faf9e30db5afe010a6c7 (commit) discards 6980305f3a8c72fdd4c98d9756baad1864d67a29 (commit) discards 42436e270cc5cf0c76ee51f75d0f701a811bd0bb (commit) discards 1666783cf80b776c61bda68a9effbf54f6d1a72f (commit) discards 7cefb22751ddde881d2061efea3a4b26ea8e02c8 (commit) discards fea3008454a9a0290bd57db967afba7e9c980df9 (commit) discards 3eafca602943d9b51cfd2190e9a031d261cf9dc4 (commit) discards 45c6c4d3e42e3c114b47d52ca2e9fca6b1be8090 (commit) via acd56d2fe2a0458801010cc6b03c524023cbc597 (commit) This update added new revisions after undoing existing revisions. That is to say, the old revision is not a strict subset of the new revision. This situation occurs when you --force push a change and generate a repository containing something like this: * -- * -- B -- O -- O -- O (256a82dbf2d7f4b4e1d7527f1e6a15d8d0d38a21) \ N -- N -- N (acd56d2fe2a0458801010cc6b03c524023cbc597) When this happens we assume that you've already had alert emails for all of the O revisions, and so we here report only the revisions in the N branch from the common base, B. Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit acd56d2fe2a0458801010cc6b03c524023cbc597 Author: Luke Dashjr Date: Sun Aug 22 18:00:40 2010 -0500 expose ASR start_input_timers on the IVR abstraction level diff --git a/src/include/switch_ivr.h b/src/include/switch_ivr.h index 40ba1dc..692ad8d 100644 --- a/src/include/switch_ivr.h +++ b/src/include/switch_ivr.h @@ -26,6 +26,7 @@ * Anthony Minessale II * Neal Horman * Bret McDanel + * Luke Dashjr (OpenMethods, LLC) * * switch_ivr.h -- IVR Library * @@ -201,6 +202,13 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_unload_grammar(switch_c SWITCH_DECLARE(switch_status_t) switch_ivr_set_param_detect_speech(switch_core_session_t *session, const char *name, const char *val); /*! + \brief Start input timers on a background speech detection handle + \param session The session to start the timers on + \return SWITCH_STATUS_SUCCESS if all is well +*/ +SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_start_input_timers(switch_core_session_t *session); + +/*! \brief Record a session to disk \param session the session to record \param file the path to the file diff --git a/src/switch_ivr_async.c b/src/switch_ivr_async.c index 4fe5732..ae23d0a 100644 --- a/src/switch_ivr_async.c +++ b/src/switch_ivr_async.c @@ -26,6 +26,7 @@ * Anthony Minessale II * Michael Jerris * Bret McDanel + * Luke Dashjr (OpenMethods, LLC) * * switch_ivr_async.c -- IVR Library (async operations) * @@ -2728,6 +2729,18 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_set_param_detect_speech(switch_core_s return status; } +SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_start_input_timers(switch_core_session_t *session) +{ + switch_channel_t *channel = switch_core_session_get_channel(session); + struct speech_thread_handle *sth = switch_channel_get_private(channel, SWITCH_SPEECH_KEY); + + if (sth) { + switch_core_asr_start_input_timers(sth->ah); + return SWITCH_STATUS_SUCCESS; + } + return SWITCH_STATUS_FALSE; +} + SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_unload_grammar(switch_core_session_t *session, const char *name) { switch_channel_t *channel = switch_core_session_get_channel(session); ----------------------------------------------------------------------- Summary of changes: .gitignore | 32 +- Freeswitch.2008.express.sln | 74 +- Freeswitch.2008.sln | 142 +- Freeswitch.2010.express.sln | 53 - Freeswitch.2010.sln | 1335 +------- Makefile.am | 39 +- bootstrap.sh | 10 +- build/Makefile.am | 5 - build/modules.conf.in | 8 +- build/sounds_version.txt | 2 +- conf/autoload_configs/acl.conf.xml | 3 - conf/autoload_configs/callcenter.conf.xml | 27 +- conf/autoload_configs/cdr_pg_csv.conf.xml | 22 +- conf/autoload_configs/cdr_sqlite.conf.xml | 18 - conf/autoload_configs/easyroute.conf.xml | 3 - conf/autoload_configs/erlang_event.conf.xml | 9 - conf/autoload_configs/modules.conf.xml | 5 - conf/autoload_configs/sangoma_codec.conf.xml | 35 +- conf/autoload_configs/switch.conf.xml | 16 +- conf/autoload_configs/voicemail.conf.xml | 7 +- conf/dialplan/default.xml | 35 +- conf/dialplan/default/99999_enum.xml | 8 + conf/dialplan/features.xml | 8 - conf/dialplan/public.xml | 1 - conf/directory/default.xml | 2 +- conf/directory/default/default.xml | 2 +- conf/directory/default/skinny-example.xml | 1 - conf/freeswitch.xml | 3 + conf/lang/en/dir/sounds.xml | 18 +- conf/notify-voicemail.tpl | 2 - conf/sip_profiles/internal.xml | 33 +- conf/skinny_profiles/internal.xml | 12 - conf/vars.xml | 3 - conf/voicemail.tpl | 2 - configure.in | 11 - debian/READ_BEFORE_CHANGING_ANYTHING_IN_HERE | 29 - debian/changelog | 74 +- debian/compat | 2 +- debian/control | 69 +- debian/copyright | 559 +--- debian/freeswitch-codec-passthru-amrwb.install | 1 - debian/freeswitch-freetdm.conffiles | 6 - debian/freeswitch-freetdm.install | 10 - debian/freeswitch-python.config | 1 - debian/freeswitch-python.install | 3 - debian/freeswitch.conffiles | 7 +- debian/freeswitch.init | 29 +- debian/freeswitch.install | 42 +- debian/postinst | 9 +- debian/postrm | 2 +- debian/rules | 192 +- .../debian/changelog | 15 - .../freeswitch-sounds-en-us-callie/debian/control | 13 +- .../freeswitch-sounds-en-us-callie/debian/files | 6 + .../freeswitch-sounds-music/debian/changelog | 15 - .../sounds/freeswitch-sounds-music/debian/control | 15 +- debian/sounds/freeswitch-sounds-music/debian/files | 6 + .../freeswitch-sounds-ru-RU-elena/debian/changelog | 15 - .../freeswitch-sounds-ru-RU-elena/debian/files | 6 + debian/sounds/getsounds.sh | 4 +- debian/source/format | 1 - debian/substvars | 1 + devel-bootstrap.sh | 6 - docs/ChangeLog | 414 +-- docs/Doxygen.conf | 2 +- docs/phrase/phrase_en.xml | 58 +- docs/phrase/phrase_es_ES.xml | 994 ----- docs/phrase/phrase_es_MX.xml | 993 ----- docs/phrase/phrase_pt_BR.xml | 987 ----- docs/phrase/phrase_pt_PT.xml | 987 ----- freeswitch-sounds-en-us-callie.spec | 339 -- freeswitch.spec | 431 +-- fscomm/FSComm.2008.vcproj | 972 +++--- fscomm/MakeVcProj.cmd | 5 - libs/.gitignore | 2 - libs/apr-util/.update | 2 +- libs/apr-util/include/apr_queue.h | 16 - libs/apr-util/misc/apr_queue.c | 65 - libs/apr/.update | 2 +- libs/apr/strings/apr_snprintf.c | 13 +- libs/broadvoice/configure.ac | 2 +- .../src/libbroadvoice.2010.vcxproj.filters | 167 - libs/esl/Makefile | 6 +- libs/esl/fs_cli.2010.vcxproj.filters | 30 - libs/esl/fs_cli.c | 6 +- libs/esl/java/Makefile | 2 +- libs/esl/lua/esl_lua.2008.sln | 26 - libs/esl/lua/esl_lua.2008.vcproj | 351 -- libs/esl/managed/ESL.2010.vcxproj | 195 - libs/esl/managed/ESL.2010.vcxproj.filters | 30 - libs/esl/managed/ManagedEsl.2010.csproj | 93 - .../ManagedEslTest/ManagedEslTest.2010.csproj | 98 - libs/esl/managed/managed_esl.2010.sln | 74 - libs/esl/perl/ESL/Dispatch.pm | 5 +- libs/esl/perl/logger.pl | 4 +- libs/esl/php/Makefile | 2 +- libs/esl/src/esl.2008.vcproj | 8 - libs/esl/src/esl.2010.vcxproj | 2 - libs/esl/src/esl.2010.vcxproj.filters | 47 - libs/esl/src/esl.c | 164 +- libs/esl/src/esl_buffer.c | 353 -- libs/esl/src/esl_config.c | 2 +- libs/esl/src/esl_event.c | 3 - libs/esl/src/esl_json.c | 2 +- libs/esl/src/include/esl.h | 8 +- libs/esl/src/include/esl_buffer.h | 146 - libs/freetdm/.gitignore | 14 - libs/freetdm/CMakeLists.txt | 244 -- libs/freetdm/Makefile.am | 329 +- libs/freetdm/README | 4 +- libs/freetdm/TODO | 15 +- libs/freetdm/bootstrap | 2 +- libs/freetdm/build/ax_compiler_vendor.m4 | 15 - libs/freetdm/build/libpcap.m4 | 14 +- libs/freetdm/conf/freetdm.conf | 72 +- libs/freetdm/conf/freetdm.conf.xml | 312 +-- libs/{openzap => freetdm}/conf/m3ua.conf | 0 libs/freetdm/conf/pika.conf | 2 - libs/freetdm/conf/tones.conf | 2 - libs/freetdm/configure.ac | 455 +-- libs/freetdm/configure.gnu | 4 +- libs/freetdm/cyginstall.sh | 7 +- libs/freetdm/docs/async.txt | 14 - libs/freetdm/docs/glare.txt | 25 - libs/freetdm/docs/io_modules.txt | 13 - libs/freetdm/docs/locking.txt | 125 - libs/freetdm/docs/sigstatus.txt | 59 - libs/freetdm/freetdm.2008.sln | 23 +- libs/freetdm/freetdm.2010.sln | 133 - libs/freetdm/mkrelease.sh | 64 - libs/freetdm/mod_freetdm/CMakeLists.txt | 32 - libs/freetdm/mod_freetdm/mod_freetdm.2010.vcxproj | 217 -- .../mod_freetdm/mod_freetdm.2010.vcxproj.filters | 14 - libs/freetdm/mod_freetdm/mod_freetdm.c | 1273 +++---- libs/freetdm/msvc/freetdm.2008.vcproj | 50 +- libs/freetdm/msvc/freetdm.2010.vcxproj | 225 -- libs/freetdm/msvc/freetdm.2010.vcxproj.filters | 134 - .../msvc/testanalog/testanalog.2010.vcxproj | 213 -- .../testanalog/testanalog.2010.vcxproj.filters | 14 - libs/freetdm/msvc/testboost/testboost.2008.vcproj | 48 +- libs/freetdm/msvc/testboost/testboost.2010.vcxproj | 218 -- .../msvc/testboost/testboost.2010.vcxproj.filters | 14 - .../msvc/testboost/testsangomaboost.2008.vcproj | 46 +- .../msvc/testboost/testsangomaboost.2010.vcxproj | 218 -- .../testsangomaboost.2010.vcxproj.filters | 14 - libs/freetdm/msvc/testisdn/testisdn.2010.vcxproj | 213 -- .../msvc/testisdn/testisdn.2010.vcxproj.filters | 14 - libs/{openzap => freetdm}/openzap.2005.sln | 0 libs/{openzap => freetdm}/patches/oz.diff | 0 libs/freetdm/sample/CMakeLists.txt | 8 - libs/freetdm/sample/boost/CMakeLists.txt | 12 - libs/freetdm/sample/boost/ftdmstart.c | 7 + libs/freetdm/sample/dso/CMakeLists.txt | 12 - libs/freetdm/sample/dso/ftdmload.c | 2 + libs/freetdm/sample/sched/CMakeLists.txt | 12 - libs/freetdm/sample/sched/ftdmsched.c | 2 + libs/freetdm/src/ftdm_call_utils.c | 169 - libs/freetdm/src/ftdm_config.c | 70 +- libs/freetdm/src/ftdm_io.c | 2780 ++++---------- libs/freetdm/src/ftdm_m3ua.c | 692 ++++ libs/freetdm/src/ftdm_sched.c | 148 +- libs/freetdm/src/ftdm_state.c | 542 --- libs/freetdm/src/ftdm_threadmutex.c | 47 +- libs/freetdm/src/ftmod/ftmod_analog/ftdm_analog.h | 9 +- .../ftmod/ftmod_analog/ftmod_analog.2008.vcproj | 706 ++-- .../ftmod/ftmod_analog/ftmod_analog.2010.vcxproj | 198 - .../ftmod_analog/ftmod_analog.2010.vcxproj.filters | 23 - libs/freetdm/src/ftmod/ftmod_analog/ftmod_analog.c | 306 +-- .../ftmod/ftmod_analog/ozmod_analog.2005.vcproj | 202 + .../ftmod_analog_em/ftmod_analog_em.2008.vcproj | 706 ++-- .../ftmod_analog_em/ftmod_analog_em.2010.vcxproj | 198 - .../ftmod_analog_em.2010.vcxproj.filters | 23 - .../src/ftmod/ftmod_analog_em/ftmod_analog_em.c | 17 +- .../ftmod_analog_em/ozmod_analog_em.2005.vcproj | 202 + libs/freetdm/src/ftmod/ftmod_isdn/ftdm_isdn.h | 96 + .../src/ftmod/ftmod_isdn/ftmod_isdn.2010.vcxproj | 223 -- .../ftmod_isdn/ftmod_isdn.2010.vcxproj.filters | 110 - libs/freetdm/src/ftmod/ftmod_isdn/ftmod_isdn.c | 2166 +++++------- libs/freetdm/src/ftmod/ftmod_isdn/ftmod_isdn.h | 102 - .../src/ftmod/ftmod_isdn/ozmod_isdn.2005.vcproj | 316 ++ libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c | 1563 +++------ libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.h | 32 +- libs/freetdm/src/ftmod/ftmod_libpri/lpwrap_pri.c | 152 +- libs/freetdm/src/ftmod/ftmod_libpri/lpwrap_pri.h | 8 +- .../src/ftmod/ftmod_pika/ftmod_pika.2010.vcxproj | 198 - .../ftmod_pika/ftmod_pika.2010.vcxproj.filters | 23 - libs/freetdm/src/ftmod/ftmod_pika/ftmod_pika.c | 36 +- libs/freetdm/src/ftmod/ftmod_pritap/ftmod_pritap.c | 35 +- .../src/ftmod/ftmod_r2/ftmod_r2.2008.vcproj | 192 - .../src/ftmod/ftmod_r2/ftmod_r2.2010.vcxproj | 159 - .../ftmod/ftmod_r2/ftmod_r2.2010.vcxproj.filters | 22 - libs/freetdm/src/ftmod/ftmod_r2/ftmod_r2.c | 2050 +++-------- .../ftmod/ftmod_sangoma_boost/ftdm_sangoma_boost.h | 2 +- .../ftmod_sangoma_boost.2008.vcproj | 58 +- .../ftmod_sangoma_boost.2010.vcxproj | 206 - .../ftmod_sangoma_boost.2010.vcxproj.filters | 35 - .../ftmod_sangoma_boost/ftmod_sangoma_boost.c | 109 +- .../ftmod_sangoma_boost/sangoma_boost_client.c | 2 - .../ftmod_sangoma_isdn.2008.vcproj | 245 -- .../ftmod_sangoma_isdn.2010.vcxproj | 202 - .../ftmod_sangoma_isdn.2010.vcxproj.filters | 57 - .../ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.c | 1157 +++---- .../ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.h | 441 +-- .../ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c | 252 +-- .../ftmod_sangoma_isdn/ftmod_sangoma_isdn_cntrl.c | 21 +- .../ftmod_sangoma_isdn_stack_cfg.c | 571 ++-- .../ftmod_sangoma_isdn_stack_cntrl.c | 173 +- .../ftmod_sangoma_isdn_stack_hndl.c | 1274 ------- .../ftmod_sangoma_isdn_stack_in.c | 935 +++++ .../ftmod_sangoma_isdn_stack_out.c | 557 ++-- .../ftmod_sangoma_isdn_stack_rcv.c | 1014 ----- .../ftmod_sangoma_isdn_support.c | 997 +----- .../ftmod_sangoma_isdn/ftmod_sangoma_isdn_trace.c | 325 +-- .../ftmod_sangoma_isdn/ftmod_sangoma_isdn_trace.h | 98 +- .../ftmod_sangoma_isdn/ftmod_sangoma_isdn_user.h | 118 - .../ftmod_sangoma_ss7/ftmod_sangoma_ss7_cfg.c | 1476 -------- .../ftmod_sangoma_ss7/ftmod_sangoma_ss7_cli.c | 2685 +++++--------- .../ftmod_sangoma_ss7/ftmod_sangoma_ss7_cntrl.c | 1015 +++-- .../ftmod_sangoma_ss7/ftmod_sangoma_ss7_handle.c | 2200 ----------- .../ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_in.c | 1735 +++++++-- .../ftmod_sangoma_ss7/ftmod_sangoma_ss7_logger.c | 760 ---- .../ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.c | 2548 ++++++-------- .../ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.h | 796 +---- .../ftmod_sangoma_ss7/ftmod_sangoma_ss7_out.c | 1124 ++---- .../ftmod_sangoma_ss7/ftmod_sangoma_ss7_sta.c | 102 - .../ftmod_sangoma_ss7/ftmod_sangoma_ss7_sts.c | 61 - .../ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c | 1296 ++------ .../ftmod_sangoma_ss7/ftmod_sangoma_ss7_timers.c | 2 +- .../ftmod_sangoma_ss7/ftmod_sangoma_ss7_xml.c | 3926 +++++++++----------- .../ftmod/ftmod_wanpipe/ftmod_wanpipe.2010.vcxproj | 201 - .../ftmod_wanpipe.2010.vcxproj.filters | 18 - .../src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c | 660 +--- .../ftmod/ftmod_wanpipe/ozmod_wanpipe.2005.vcproj | 196 + .../ftmod/ftmod_wanpipe}/wanpipe_tdm_api_iface.h | 0 libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c | 350 +-- libs/freetdm/src/include/freetdm.h | 730 +--- libs/freetdm/src/include/ftdm_call_utils.h | 135 - libs/freetdm/src/include/ftdm_declare.h | 37 - libs/freetdm/src/include/ftdm_os.h | 10 +- libs/freetdm/src/include/private/ftdm_core.h | 187 +- libs/freetdm/src/include/private/ftdm_m3ua.h | 134 + libs/freetdm/src/include/private/ftdm_sched.h | 17 +- libs/freetdm/src/include/private/ftdm_state.h | 243 -- libs/freetdm/src/include/private/ftdm_types.h | 196 +- libs/freetdm/src/include/private/libteletone.h | 6 +- .../src/include/private/libteletone_detect.h | 2 +- .../src/include/private/libteletone_generate.h | 2 +- libs/freetdm/src/include/private/sangoma_tdm_api.h | 2 +- libs/freetdm/src/libteletone_detect.c | 4 +- libs/freetdm/src/libteletone_generate.c | 2 +- libs/{openzap => freetdm}/src/m3ua/mstm3ua.c | 0 libs/{openzap => freetdm}/src/m3ua/mstm3ua.h | 0 libs/freetdm/src/m3ua_client.c | 333 ++ libs/freetdm/src/m3ua_client.h | 164 + libs/freetdm/src/priserver.c | 2 +- libs/freetdm/src/sangoma_pri.c | 2 +- libs/freetdm/src/sangoma_pri.h | 2 +- libs/freetdm/src/testanalog.c | 2 +- libs/freetdm/src/testm3ua.c | 60 + libs/freetdm/src/testr2.c | 144 +- libs/freetdm/src/testsangomaboost.c | 7 +- libs/iksemel/build/libgnutls.m4 | 4 +- libs/iksemel/configure.ac | 11 +- libs/iksemel/src/Makefile.am | 4 +- libs/iksemel/test/tst-ikstack.c | 2 +- libs/iksemel/test/tst-jid.c | 2 +- libs/iksemel/tools/Makefile.am | 6 +- libs/ilbc/configure.ac | 6 +- libs/ilbc/libilbc.2010.vcxproj.filters | 162 - libs/js/nsprpub/pr/src/io/prmwait.c | 2 +- libs/js/nsprpub/pr/src/md/unix/os_Linux_x86.s | 136 +- libs/js/nsprpub/pr/src/md/unix/os_Linux_x86_64.s | 110 +- libs/js/nsprpub/pr/src/md/unix/os_SunOS_x86.s | 154 +- libs/js/nsprpub/pr/src/md/unix/os_SunOS_x86_64.s | 106 +- libs/js/src/jscpucfg.h | 55 +- libs/js/src/jstypes.h | 191 +- libs/libcodec2/COPYING | 502 --- libs/libcodec2/INSTALL | 236 -- libs/libcodec2/Makefile.am | 98 - libs/libcodec2/configure.gnu | 4 - libs/libcodec2/configure.in | 26 - libs/libcodec2/doc/A_m.gif | Bin 133 -> 0 bytes libs/libcodec2/doc/omega_0.gif | Bin 552 -> 0 bytes libs/libcodec2/doc/phi_m.gif | Bin 135 -> 0 bytes libs/libcodec2/doc/s_n.gif | Bin 3602 -> 0 bytes libs/libcodec2/doc/s_n.txt | 1 - libs/libcodec2/octave/glottal.m | 25 - libs/libcodec2/octave/load_raw.m | 8 - libs/libcodec2/octave/lsp_pdf.m | 50 - libs/libcodec2/octave/phase.m | 56 - libs/libcodec2/octave/phase2.m | 50 - libs/libcodec2/octave/pitch_test.m | 39 - libs/libcodec2/octave/pl.m | 42 - libs/libcodec2/octave/pl2.m | 50 - libs/libcodec2/octave/plamp.m | 166 - libs/libcodec2/octave/plinterp.m | 11 - libs/libcodec2/octave/plnlp.m | 134 - libs/libcodec2/octave/plphase.m | 198 - libs/libcodec2/octave/plpitch.m | 36 - libs/libcodec2/octave/png.m | 25 - libs/libcodec2/octave/postfilter.m | 24 - libs/libcodec2/octave/pulse.m | 37 - libs/libcodec2/pitch/hts1a.p | 298 -- libs/libcodec2/pitch/hts2a.p | 300 -- libs/libcodec2/raw/b0067.raw | Bin 58482 -> 0 bytes libs/libcodec2/raw/f2400.raw | Bin 27680 -> 0 bytes libs/libcodec2/raw/forig.raw | Bin 25224 -> 0 bytes libs/libcodec2/raw/forig_g729a.raw | Bin 25120 -> 0 bytes libs/libcodec2/raw/forig_gsm13k.raw | Bin 25280 -> 0 bytes libs/libcodec2/raw/forig_speex_8k.raw | Bin 25280 -> 0 bytes libs/libcodec2/raw/hts.raw | Bin 384000 -> 0 bytes libs/libcodec2/raw/hts1.raw | Bin 96000 -> 0 bytes libs/libcodec2/raw/hts1a.raw | Bin 48000 -> 0 bytes libs/libcodec2/raw/hts1a_g729a.raw | Bin 48000 -> 0 bytes libs/libcodec2/raw/hts1a_gsm13k.raw | Bin 48000 -> 0 bytes libs/libcodec2/raw/hts1a_speex_8k.raw | Bin 47956 -> 0 bytes libs/libcodec2/raw/hts2.raw | Bin 96000 -> 0 bytes libs/libcodec2/raw/hts2a.raw | Bin 48000 -> 0 bytes libs/libcodec2/raw/hts2a_g729a.raw | Bin 48000 -> 0 bytes libs/libcodec2/raw/hts2a_gsm13k.raw | Bin 48000 -> 0 bytes libs/libcodec2/raw/hts2a_speex_8k.raw | Bin 47780 -> 0 bytes libs/libcodec2/raw/m2400.raw | Bin 33624 -> 0 bytes libs/libcodec2/raw/mmt1.raw | Bin 64000 -> 0 bytes libs/libcodec2/raw/mmt1_g729a.raw | Bin 64000 -> 0 bytes libs/libcodec2/raw/mmt1_gsm13k.raw | Bin 64000 -> 0 bytes libs/libcodec2/raw/mmt1_speex_8k.raw | Bin 64000 -> 0 bytes libs/libcodec2/raw/morig.raw | Bin 32056 -> 0 bytes libs/libcodec2/raw/morig_g729a.raw | Bin 32000 -> 0 bytes libs/libcodec2/raw/morig_gsm13k.raw | Bin 32320 -> 0 bytes libs/libcodec2/raw/morig_speex_8k.raw | Bin 32056 -> 0 bytes libs/libcodec2/script/menu.sh | 70 - libs/libcodec2/script/playraw.sh | 6 - libs/libcodec2/script/raw2wav.sh | 3 - libs/libcodec2/script/wav2raw.sh | 3 - libs/libcodec2/src/Makefile.am | 53 - libs/libcodec2/src/c2dec.c | 80 - libs/libcodec2/src/c2enc.c | 82 - libs/libcodec2/src/c2sim.c | 408 -- libs/libcodec2/src/codeall.sh | 9 - libs/libcodec2/src/codebook.c | 162 - libs/libcodec2/src/codebook.h | 15 - libs/libcodec2/src/codec2.c | 337 -- libs/libcodec2/src/codec2.h | 43 - libs/libcodec2/src/comp.h | 39 - libs/libcodec2/src/defines.h | 84 - libs/libcodec2/src/dump.c | 402 -- libs/libcodec2/src/dump.h | 63 - libs/libcodec2/src/four1.c | 64 - libs/libcodec2/src/four1.h | 18 - libs/libcodec2/src/fq20.sh | 8 - libs/libcodec2/src/globals.c | 50 - libs/libcodec2/src/globals.h | 48 - libs/libcodec2/src/interp.c | 122 - libs/libcodec2/src/interp.h | 34 - libs/libcodec2/src/listen.sh | 9 - libs/libcodec2/src/listen1.sh | 15 - libs/libcodec2/src/listensim.sh | 9 - libs/libcodec2/src/lpc.c | 253 -- libs/libcodec2/src/lpc.h | 42 - libs/libcodec2/src/lsp.c | 323 -- libs/libcodec2/src/lsp.h | 20 - libs/libcodec2/src/nlp.c | 361 -- libs/libcodec2/src/nlp.h | 38 - libs/libcodec2/src/pack.c | 104 - libs/libcodec2/src/phase.c | 254 -- libs/libcodec2/src/phase.h | 34 - libs/libcodec2/src/postfilter.c | 131 - libs/libcodec2/src/postfilter.h | 34 - libs/libcodec2/src/quantise.c | 868 ----- libs/libcodec2/src/quantise.h | 84 - libs/libcodec2/src/sim.sh | 18 - libs/libcodec2/src/sine.c | 530 --- libs/libcodec2/src/sine.h | 40 - libs/libcodec2/unittest/Makefile.am | 41 - libs/libcodec2/unittest/extract.c | 121 - libs/libcodec2/unittest/genlsp.c | 149 - libs/libcodec2/unittest/genres.c | 92 - libs/libcodec2/unittest/lsp1.txt | 16 - libs/libcodec2/unittest/lsp10.txt | 5 - libs/libcodec2/unittest/lsp2.txt | 16 - libs/libcodec2/unittest/lsp3.txt | 16 - libs/libcodec2/unittest/lsp4.txt | 16 - libs/libcodec2/unittest/lsp5.txt | 18 - libs/libcodec2/unittest/lsp6.txt | 18 - libs/libcodec2/unittest/lsp7.txt | 18 - libs/libcodec2/unittest/lsp8.txt | 10 - libs/libcodec2/unittest/lsp9.txt | 10 - libs/libcodec2/unittest/lspd123.txt | 1024 ----- libs/libcodec2/unittest/lspd456.txt | 1024 ----- libs/libcodec2/unittest/lspd78.txt | 64 - libs/libcodec2/unittest/lspd910.txt | 64 - libs/libcodec2/unittest/lsptest.c | 177 - libs/libcodec2/unittest/sd.c | 84 - libs/libcodec2/unittest/tcodec2.c | 215 -- libs/libcodec2/unittest/tcontphase.c | 187 - libs/libcodec2/unittest/tinterp.c | 128 - libs/libcodec2/unittest/tnlp.c | 148 - libs/libcodec2/unittest/tquant.c | 215 -- libs/libcodec2/unittest/vqtrain.c | 297 -- libs/libcodec2/wav/f2400.wav | Bin 27726 -> 0 bytes libs/libcodec2/wav/forig.wav | Bin 25268 -> 0 bytes libs/libcodec2/wav/forig_speex_8k.wav | Bin 25324 -> 0 bytes libs/libcodec2/wav/hts1a.wav | Bin 48044 -> 0 bytes libs/libcodec2/wav/hts1a_c2_v0.1.wav | Bin 48044 -> 0 bytes libs/libcodec2/wav/hts1a_g729a.wav | Bin 48044 -> 0 bytes libs/libcodec2/wav/hts1a_speex_8k.wav | Bin 48000 -> 0 bytes libs/libcodec2/wav/hts2a.wav | Bin 48044 -> 0 bytes libs/libcodec2/wav/hts2a_c2_v0.1.wav | Bin 48044 -> 0 bytes libs/libcodec2/wav/hts2a_g729a.wav | Bin 48044 -> 0 bytes libs/libcodec2/wav/hts2a_speex_8k.wav | Bin 47824 -> 0 bytes libs/libcodec2/wav/m2400.wav | Bin 33668 -> 0 bytes libs/libcodec2/wav/mmt1.wav | Bin 64044 -> 0 bytes libs/libcodec2/wav/mmt1_speex_8k.wav | Bin 64044 -> 0 bytes libs/libcodec2/wav/morig.wav | Bin 32100 -> 0 bytes libs/libcodec2/wav/morig_speex_8k.wav | Bin 32100 -> 0 bytes .../libdingaling/libdingaling.2010.vcxproj.filters | 38 - libs/libdingaling/src/ldl_compat.h | 2 +- libs/libdingaling/src/libdingaling.c | 186 +- libs/libdingaling/src/libdingaling.h | 15 +- libs/libg722_1/Makefile.am | 6 +- libs/libg722_1/autogen.sh | 5 + libs/libg722_1/configure.ac | 34 +- libs/libg722_1/doc/Makefile.am | 2 + libs/libg722_1/g722_1.pc.in | 11 - libs/libg722_1/g722_1.spec.in | 3 +- libs/libg722_1/src/Makefile.am | 79 +- libs/libg722_1/src/basop32.c | 5 +- libs/libg722_1/src/basop32.h | 20 +- libs/libg722_1/src/bitstream.c | 2 + libs/libg722_1/src/bitstream.h | 2 + libs/libg722_1/src/coef2sam.c | 44 +- libs/libg722_1/src/coef2sam.h | 4 +- libs/libg722_1/src/common.c | 162 +- libs/libg722_1/src/commonf.c | 8 +- libs/libg722_1/src/dct4.c | 72 +- libs/libg722_1/src/dct4_a.c | 204 +- libs/libg722_1/src/dct4_a.h | 4 +- libs/libg722_1/src/dct4_s.c | 241 +- libs/libg722_1/src/dct4_s.h | 10 +- libs/libg722_1/src/decoder.c | 26 +- libs/libg722_1/src/decoderf.c | 23 +- libs/libg722_1/src/defs.h | 4 +- libs/libg722_1/src/encoder.c | 30 +- libs/libg722_1/src/encoderf.c | 24 +- libs/libg722_1/src/g722_1.h.in | 2 + libs/libg722_1/src/g722_1/g722_1.h | 4 +- libs/libg722_1/src/g722_1/version.h.in | 2 + libs/libg722_1/src/huff_tab.c | 4 +- libs/libg722_1/src/huff_tab.h | 4 +- libs/libg722_1/src/make_dct4_tables.c | 9 +- libs/libg722_1/src/make_tables.c | 26 +- libs/libg722_1/src/sam2coef.c | 49 +- libs/libg722_1/src/sam2coef.h | 4 +- libs/libg722_1/src/tables.c | 530 ++-- libs/libg722_1/src/tables.h | 4 +- libs/libg722_1/src/utilities.c | 467 --- libs/libg722_1/src/utilities.h | 32 - libs/libg722_1/test-data/Makefile.am | 2 + libs/libg722_1/test-data/itu/Makefile.am | 2 + libs/libg722_1/test-data/local/Makefile.am | 2 + libs/libg722_1/tests/Makefile.am | 6 +- libs/libg722_1/tests/g192_bit_stream.c | 177 - libs/libg722_1/tests/g192_bit_stream.h | 75 - libs/libg722_1/tests/g722_1_tests.c | 8 +- libs/libg722_1/tests/itu_bit_stream.c | 139 + libs/libg722_1/tests/regression_tests.sh.in | 27 +- libs/libg722_1/tests/timing.h | 4 +- libs/libg722_1/unpack_g722_1_data.sh | 3 + libs/libsndfile/M4/lt~obsolete.m4 | 92 + libs/libteletone/libteletone.2010.vcxproj.filters | 36 - libs/libteletone/src/libteletone.h | 6 +- libs/libteletone/src/libteletone_detect.c | 4 +- libs/libteletone/src/libteletone_detect.h | 4 +- libs/libteletone/src/libteletone_generate.c | 11 +- libs/libteletone/src/libteletone_generate.h | 6 +- libs/openzap/mod_openzap/mod_openzap.c | 35 +- libs/openzap/src/include/libteletone.h | 6 +- libs/openzap/src/include/libteletone_detect.h | 2 +- libs/openzap/src/include/libteletone_generate.h | 2 +- libs/openzap/src/include/sangoma_tdm_api.h | 2 +- libs/openzap/src/libteletone_detect.c | 4 +- .../ozmod_sangoma_boost/ozmod_sangoma_boost.c | 4 +- .../src/ozmod/ozmod_wanpipe/ozmod_wanpipe.c | 9 +- libs/openzap/src/ozmod/ozmod_zt/ozmod_zt.c | 16 +- libs/openzap/src/priserver.c | 2 +- libs/openzap/src/sangoma_pri.c | 2 +- libs/openzap/src/sangoma_pri.h | 2 +- libs/openzap/src/zap_io.c | 1 - .../build/msvc/portaudio.2010.vcxproj.filters | 132 - libs/silk/src/Silk_FIX.2010.vcxproj.filters | 413 -- libs/sofia-sip/.update | 2 +- libs/sofia-sip/configure.ac | 1 - .../libsofia-sip-ua/http/sofia-sip/http.h | 4 - libs/sofia-sip/libsofia-sip-ua/msg/msg_tag.c | 4 - .../libsofia-sip-ua/msg/sofia-sip/msg_header.h | 5 - .../libsofia-sip-ua/msg/sofia-sip/msg_mime.h | 4 - libs/sofia-sip/libsofia-sip-ua/nea/nea_server.c | 4 - libs/sofia-sip/libsofia-sip-ua/nta/nta.c | 24 +- libs/sofia-sip/libsofia-sip-ua/nua/nua_dialog.c | 5 - libs/sofia-sip/libsofia-sip-ua/nua/nua_stack.h | 4 - libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip.h | 8 - libs/sofia-sip/libsofia-sip-ua/soa/soa.c | 4 - libs/sofia-sip/libsofia-sip-ua/soa/soa_static.c | 4 - libs/sofia-sip/libsofia-sip-ua/sresolv/sres.c | 2 +- .../libsofia-sip-ua/su/sofia-sip/su_errno.h | 40 - libs/sofia-sip/libsofia-sip-ua/su/su.c | 2 +- .../libsofia-sip-ua/tport/tport_internal.h | 4 - libs/sofia-sip/win32/config.h.in | 6 +- libs/spandsp/configure.ac | 4 +- libs/spandsp/spandsp.pc.in | 2 +- libs/spandsp/src/libspandsp.2010.vcxproj.filters | 667 ---- libs/spandsp/src/libtiff.2010.vcxproj.filters | 157 - .../msvc/make_at_dictionary.2010.vcxproj.filters | 14 - .../msvc/make_modem_filter.2010.vcxproj.filters | 29 - libs/spandsp/src/spandsp.h.in | 3 +- libs/spandsp/src/spandsp/private/t30.h | 8 +- libs/spandsp/src/spandsp/t30.h | 6 - libs/spandsp/src/spandsp/t38_core.h | 2 +- libs/spandsp/src/t30.c | 453 ++- libs/spandsp/src/t31.c | 2 - libs/spandsp/src/t38_core.c | 2 +- libs/spandsp/src/t38_gateway.c | 63 +- libs/spandsp/src/v18.c | 2 +- libs/spandsp/unpack_gsm0610_data.sh | 4 +- .../win32/VS2008/libspeex/libspeex.vcxproj.filters | 210 -- libs/sqlite/configure.ac | 2 +- libs/srtp/libsrtp.2010.vcxproj.filters | 200 - libs/stfu/stfu.c | 854 +---- libs/stfu/stfu.h | 109 +- .../apr-toolkit/aprtoolkit.2010.vcxproj.filters | 125 - .../libs/apr-toolkit/src/apt_consumer_task.c | 1 - libs/unimrcp/libs/mpf/mpf.2010.vcxproj.filters | 239 -- .../mrcp-client/mrcpclient.2010.vcxproj.filters | 35 - .../mrcpsignaling.2010.vcxproj.filters | 35 - libs/unimrcp/libs/mrcp/mrcp.2010.vcxproj.filters | 133 - .../mrcpv2transport.2010.vcxproj.filters | 44 - .../libs/uni-rtsp/unirtsp.2010.vcxproj.filters | 56 - .../mrcp-sofiasip/mrcpsofiasip.2010.vcxproj | 1 + .../mrcpsofiasip.2010.vcxproj.filters | 35 - .../mrcp-unirtsp/mrcpunirtsp.2010.vcxproj.filters | 35 - libs/win32/Download CELT.vcproj | 4 +- libs/win32/Download CELT.vcxproj | 12 +- libs/win32/Download OPENSSL.2008.vcproj | 92 - libs/win32/Download OPENSSL.2010.vcxproj | 67 - libs/win32/Sound_Files/16khz.2008.vcproj | 52 +- libs/win32/Sound_Files/16khz.2010.vcxproj | 16 +- libs/win32/Sound_Files/16khzmusic.2008.vcproj | 48 - libs/win32/Sound_Files/32khz.2008.vcproj | 52 +- libs/win32/Sound_Files/32khz.2010.vcxproj | 16 +- libs/win32/Sound_Files/32khzmusic.2008.vcproj | 48 - libs/win32/Sound_Files/8khz.2008.vcproj | 52 +- libs/win32/Sound_Files/8khz.2010.vcxproj | 16 +- libs/win32/Sound_Files/8khzmusic.2008.vcproj | 48 - .../win32/apr-util/libaprutil.2010.vcxproj.filters | 303 -- libs/win32/apr-util/xml.2010.vcxproj.filters | 79 - libs/win32/apr/libapr.2010.vcxproj.filters | 406 -- libs/win32/celt/libcelt.vcproj | 50 +- libs/win32/celt/libcelt.vcxproj | 44 +- libs/win32/celt/libcelt.vcxproj.filters | 76 - libs/win32/curl/curllib.2010.vcxproj.filters | 358 -- libs/win32/flite/flite.2010.vcxproj.filters | 558 --- libs/win32/iksemel/iksemel.2010.vcxproj.filters | 69 - libs/win32/js/js.2010.vcxproj.filters | 464 --- libs/win32/json/libjson.2008.vcproj | 4 +- libs/win32/json/libjson.2010.vcxproj | 4 +- libs/win32/json/libjson.2010.vcxproj.filters | 45 - libs/win32/libg722_1/libg722_1.vcproj | 8 - libs/win32/libg722_1/libg722_1.vcxproj | 2 - libs/win32/libg722_1/libg722_1.vcxproj.filters | 102 - .../libmp3lame/libmp3lame.2010.vcxproj.filters | 170 - libs/win32/libogg/libogg.2010.vcxproj.filters | 29 - libs/win32/libshout/libshout.vcxproj.filters | 80 - .../libsndfile/libsndfile.2010.vcxproj.filters | 234 -- libs/win32/mpg123/libmpg123.2010.vcxproj.filters | 82 - libs/win32/openssl/applink.c | 94 - libs/win32/openssl/buildinf.h | 13 - libs/win32/openssl/include/aes.h | 2 - libs/win32/openssl/include/asn1.h | 2 - libs/win32/openssl/include/asn1_mac.h | 2 - libs/win32/openssl/include/asn1t.h | 2 - libs/win32/openssl/include/bio.h | 2 - libs/win32/openssl/include/blowfish.h | 2 - libs/win32/openssl/include/bn.h | 2 - libs/win32/openssl/include/buffer.h | 2 - libs/win32/openssl/include/camellia.h | 2 - libs/win32/openssl/include/cast.h | 2 - libs/win32/openssl/include/cms.h | 2 - libs/win32/openssl/include/comp.h | 2 - libs/win32/openssl/include/conf.h | 2 - libs/win32/openssl/include/conf_api.h | 2 - libs/win32/openssl/include/crypto.h | 2 - libs/win32/openssl/include/des.h | 2 - libs/win32/openssl/include/des_old.h | 2 - libs/win32/openssl/include/dh.h | 2 - libs/win32/openssl/include/dsa.h | 2 - libs/win32/openssl/include/dso.h | 2 - libs/win32/openssl/include/dtls1.h | 2 - libs/win32/openssl/include/e_os.h | 2 - libs/win32/openssl/include/e_os2.h | 2 - libs/win32/openssl/include/ebcdic.h | 2 - libs/win32/openssl/include/ec.h | 2 - libs/win32/openssl/include/ecdh.h | 2 - libs/win32/openssl/include/ecdsa.h | 2 - libs/win32/openssl/include/engine.h | 2 - libs/win32/openssl/include/err.h | 2 - libs/win32/openssl/include/evp.h | 2 - libs/win32/openssl/include/hmac.h | 2 - libs/win32/openssl/include/idea.h | 2 - libs/win32/openssl/include/krb5_asn.h | 2 - libs/win32/openssl/include/kssl.h | 2 - libs/win32/openssl/include/lhash.h | 2 - libs/win32/openssl/include/md2.h | 2 - libs/win32/openssl/include/md4.h | 2 - libs/win32/openssl/include/md5.h | 2 - libs/win32/openssl/include/mdc2.h | 2 - libs/win32/openssl/include/modes.h | 2 - libs/win32/openssl/include/o_dir.h | 2 - libs/win32/openssl/include/o_str.h | 2 - libs/win32/openssl/include/obj_mac.h | 2 - libs/win32/openssl/include/objects.h | 2 - libs/win32/openssl/include/ocsp.h | 2 - libs/win32/openssl/include/opensslv.h | 2 - libs/win32/openssl/include/ossl_typ.h | 2 - libs/win32/openssl/include/pem.h | 2 - libs/win32/openssl/include/pem2.h | 2 - libs/win32/openssl/include/pkcs12.h | 2 - libs/win32/openssl/include/pkcs7.h | 2 - libs/win32/openssl/include/pq_compat.h | 2 - libs/win32/openssl/include/pqueue.h | 2 - libs/win32/openssl/include/rand.h | 2 - libs/win32/openssl/include/rc2.h | 2 - libs/win32/openssl/include/rc4.h | 2 - libs/win32/openssl/include/rc5.h | 2 - libs/win32/openssl/include/ripemd.h | 2 - libs/win32/openssl/include/rsa.h | 2 - libs/win32/openssl/include/safestack.h | 2 - libs/win32/openssl/include/seed.h | 2 - libs/win32/openssl/include/sha.h | 2 - libs/win32/openssl/include/ssl.h | 2 - libs/win32/openssl/include/ssl2.h | 2 - libs/win32/openssl/include/ssl23.h | 2 - libs/win32/openssl/include/ssl3.h | 2 - libs/win32/openssl/include/stack.h | 2 - libs/win32/openssl/include/store.h | 2 - libs/win32/openssl/include/symhacks.h | 2 - libs/win32/openssl/include/tls1.h | 2 - libs/win32/openssl/include/tmdiff.h | 2 - libs/win32/openssl/include/ts.h | 2 - libs/win32/openssl/include/txt_db.h | 2 - libs/win32/openssl/include/ui.h | 2 - libs/win32/openssl/include/ui_compat.h | 2 - libs/win32/openssl/include/whrlpool.h | 2 - libs/win32/openssl/include/x509.h | 2 - libs/win32/openssl/include/x509_vfy.h | 2 - libs/win32/openssl/include/x509v3.h | 2 - libs/win32/openssl/libeay32.2008.vcproj | 3150 ---------------- libs/win32/openssl/libeay32.2010.vcxproj | 871 ----- libs/win32/openssl/libeay32.2010.vcxproj.filters | 2093 ----------- libs/win32/openssl/libeay32.def | 3474 ----------------- libs/win32/openssl/openssl.2008.vcproj | 585 --- libs/win32/openssl/openssl.2010.vcxproj | 258 -- libs/win32/openssl/openssl.2010.vcxproj.filters | 179 - libs/win32/openssl/opensslconf.h | 224 -- libs/win32/openssl/ssleay32.2008.vcproj | 559 --- libs/win32/openssl/ssleay32.2010.vcxproj | 254 -- libs/win32/openssl/ssleay32.2010.vcxproj.filters | 167 - libs/win32/openssl/ssleay32.def | 243 -- libs/win32/pcre/libpcre.2010.vcxproj.filters | 95 - .../pcre/pcre_chartables.c.2010.vcxproj.filters | 22 - .../pocketsphinx/pocketsphinx.2010.vcxproj.filters | 217 -- libs/win32/pthread/pthread.2010.vcxproj.filters | 41 - .../win32/sofia/libsofia_sip_ua_static.2008.vcproj | 22 +- .../sofia/libsofia_sip_ua_static.2010.vcxproj | 16 +- .../libsofia_sip_ua_static.2010.vcxproj.filters | 1019 ----- .../sphinxbase/sphinxbase.2010.vcxproj.filters | 354 -- libs/win32/sqlite/sqlite.2010.vcxproj.filters | 182 - libs/win32/udns/libudns.2010.vcxproj.filters | 66 - libs/xmlrpc-c/Windows/abyss.2010.vcxproj.filters | 131 - libs/xmlrpc-c/Windows/xmlrpc.2010.vcxproj.filters | 287 -- libs/xmlrpc-c/lib/abyss/src/socket_win.c | 143 +- scripts/c/socket2me/socket2me.c | 2 +- scripts/javascript/api.js | 6 +- scripts/javascript/js_modules/SpeechTools.jm | 6 +- scripts/javascript/pizza.js | 6 +- scripts/javascript/ps_pizza.js | 6 +- scripts/lua/zrtp_agent.lua | 2 +- scripts/perl/add_user | 306 -- scripts/perl/blacklist.pl | 33 - scripts/perl/dhcp-inform.pl | 9 +- scripts/perl/honeypot.pl | 26 - scripts/perl/sendmail | 2 +- scripts/python/freepy/__init__.py | 4 +- scripts/python/freepy/fseventlistener.py | 4 +- scripts/python/freepy/fshelper.py | 4 +- scripts/python/freepy/models.py | 4 +- scripts/python/freepy/request.py | 4 +- scripts/rss/rss2ivr.pl | 2 +- scripts/trace/sipgrep | 2 +- src/fs_encode.c | 246 -- src/include/private/switch_core_pvt.h | 17 +- src/include/switch.h | 5 +- src/include/switch_apr.h | 20 +- src/include/switch_bitpack.h | 2 +- src/include/switch_buffer.h | 2 +- src/include/switch_caller.h | 4 +- src/include/switch_channel.h | 52 +- src/include/switch_config.h | 4 +- src/include/switch_console.h | 2 +- src/include/switch_core.h | 41 +- src/include/switch_core_db.h | 2 +- src/include/switch_core_event_hook.h | 14 +- src/include/switch_cpp.h | 6 +- src/include/switch_event.h | 8 +- src/include/switch_frame.h | 2 +- src/include/switch_ivr.h | 60 +- src/include/switch_limit.h | 2 +- src/include/switch_loadable_module.h | 23 +- src/include/switch_log.h | 2 +- src/include/switch_module_interfaces.h | 64 +- src/include/switch_nat.h | 2 +- src/include/switch_odbc.h | 10 +- src/include/switch_platform.h | 2 +- src/include/switch_regex.h | 2 +- src/include/switch_resample.h | 2 +- src/include/switch_rtp.h | 13 +- src/include/switch_scheduler.h | 2 +- src/include/switch_stun.h | 2 +- src/include/switch_types.h | 115 +- src/include/switch_utils.h | 86 +- src/include/switch_xml.h | 3 +- src/include/switch_xml_config.h | 2 +- src/mod/.gitignore | 1 - src/mod/applications/mod_avmd/buffer.h | 6 +- .../mod_avmd/mod_avmd.2010.vcxproj.filters | 42 - src/mod/applications/mod_avmd/mod_avmd.c | 3 +- .../applications/mod_callcenter/mod_callcenter.c | 951 ++---- src/mod/applications/mod_cidlookup/mod_cidlookup.c | 2 +- src/mod/applications/mod_cluechoo/mod_cluechoo.c | 2 +- src/mod/applications/mod_commands/mod_commands.c | 436 +-- .../applications/mod_conference/mod_conference.c | 790 ++--- src/mod/applications/mod_curl/mod_curl.c | 3 +- src/mod/applications/mod_db/mod_db.c | 2 +- .../mod_directory/mod_directory.2008.vcproj | 2 +- .../mod_directory/mod_directory.2010.vcxproj | 130 - src/mod/applications/mod_directory/mod_directory.c | 28 +- .../mod_distributor/mod_distributor.2010.vcxproj | 130 - .../applications/mod_distributor/mod_distributor.c | 2 +- src/mod/applications/mod_dptools/mod_dptools.c | 328 +-- src/mod/applications/mod_easyroute/mod_easyroute.c | 15 +- src/mod/applications/mod_enum/mod_enum.c | 2 +- src/mod/applications/mod_esf/mod_esf.c | 2 +- src/mod/applications/mod_expr/mod_expr.c | 2 +- src/mod/applications/mod_fax/mod_fax.c | 2 +- src/mod/applications/mod_fifo/mod_fifo.c | 322 +- src/mod/applications/mod_fsk/Makefile | 6 - src/mod/applications/mod_fsk/fsk.c | 351 -- src/mod/applications/mod_fsk/fsk.h | 113 - src/mod/applications/mod_fsk/fsk_callerid.c | 398 -- src/mod/applications/mod_fsk/fsk_callerid.h | 144 - src/mod/applications/mod_fsk/mod_fsk.c | 486 --- src/mod/applications/mod_fsk/uart.c | 124 - src/mod/applications/mod_fsk/uart.h | 76 - src/mod/applications/mod_fsv/mod_fsv.c | 2 +- src/mod/applications/mod_hash/mod_hash.c | 31 +- src/mod/applications/mod_lcr/mod_lcr.c | 24 +- src/mod/applications/mod_limit/mod_limit.c | 2 +- src/mod/applications/mod_memcache/mod_memcache.c | 2 +- src/mod/applications/mod_mp4/Makefile | 6 - src/mod/applications/mod_mp4/exception.hpp | 59 - src/mod/applications/mod_mp4/mod_mp4.cpp | 547 --- src/mod/applications/mod_mp4/mp4_helper.cpp | 133 - src/mod/applications/mod_mp4/mp4_helper.hpp | 137 - .../applications/mod_nibblebill/mod_nibblebill.c | 8 +- src/mod/applications/mod_rad_auth/mod_rad_auth.c | 6 +- src/mod/applications/mod_redis/mod_redis.c | 4 +- src/mod/applications/mod_rss/mod_rss.c | 2 +- src/mod/applications/mod_skel/mod_skel.c | 2 +- src/mod/applications/mod_snapshot/mod_snapshot.c | 21 +- .../applications/mod_snipe_hunt/mod_snipe_hunt.c | 2 +- src/mod/applications/mod_snom/mod_snom.c | 2 +- .../applications/mod_soundtouch/mod_soundtouch.cpp | 2 +- src/mod/applications/mod_spandsp/mod_spandsp.c | 2 +- src/mod/applications/mod_spandsp/mod_spandsp.h | 2 +- .../applications/mod_spandsp/mod_spandsp_codecs.c | 2 +- src/mod/applications/mod_spandsp/mod_spandsp_dsp.c | 10 +- src/mod/applications/mod_spandsp/mod_spandsp_fax.c | 310 +- src/mod/applications/mod_spandsp/udptl.c | 8 +- src/mod/applications/mod_spy/mod_spy.c | 22 +- src/mod/applications/mod_stress/mod_stress.cpp | 2 +- .../mod_valet_parking.2010.vcxproj | 4 + .../mod_valet_parking/mod_valet_parking.c | 25 +- src/mod/applications/mod_voicemail/mod_voicemail.c | 180 +- src/mod/asr_tts/mod_cepstral/WinReadme.txt | 4 - .../asr_tts/mod_cepstral/mod_cepstral.2010.vcxproj | 19 +- src/mod/asr_tts/mod_cepstral/mod_cepstral.c | 2 +- src/mod/asr_tts/mod_flite/mod_flite.c | 2 +- .../asr_tts/mod_pocketsphinx/mod_pocketsphinx.c | 2 +- .../asr_tts/mod_unimrcp/mod_unimrcp.2010.vcxproj | 10 +- src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c | 52 +- src/mod/codecs/mod_amr/mod_amr.c | 170 +- src/mod/codecs/mod_amrwb/mod_amrwb.c | 4 +- src/mod/codecs/mod_bv/mod_bv.c | 2 +- src/mod/codecs/mod_celt/Makefile | 2 +- src/mod/codecs/mod_celt/mod_celt.c | 38 +- src/mod/codecs/mod_celt/mod_celt.vcproj | 8 +- src/mod/codecs/mod_celt/mod_celt.vcxproj | 12 +- src/mod/codecs/mod_codec2/Makefile | 14 - src/mod/codecs/mod_codec2/mod_codec2.c | 264 -- src/mod/codecs/mod_dahdi_codec/mod_dahdi_codec.c | 2 +- src/mod/codecs/mod_g723_1/mod_g723_1.c | 2 +- src/mod/codecs/mod_g729/mod_g729.c | 2 +- src/mod/codecs/mod_h26x/mod_h26x.c | 2 +- src/mod/codecs/mod_ilbc/mod_ilbc.c | 46 +- src/mod/codecs/mod_mp4v/mod_mp4v.c | 2 +- .../codecs/mod_sangoma_codec/mod_sangoma_codec.c | 661 +--- src/mod/codecs/mod_silk/mod_silk.c | 207 +- src/mod/codecs/mod_siren/mod_siren.c | 78 +- src/mod/codecs/mod_skel_codec/mod_skel_codec.c | 2 +- src/mod/codecs/mod_speex/mod_speex.c | 155 +- src/mod/codecs/mod_theora/mod_theora.c | 2 +- src/mod/codecs/mod_voipcodecs/mod_voipcodecs.c | 2 +- .../mod_dialplan_asterisk/mod_dialplan_asterisk.c | 2 +- .../mod_dialplan_directory.c | 2 +- .../dialplans/mod_dialplan_xml/mod_dialplan_xml.c | 2 +- src/mod/directories/mod_ldap/mod_ldap.c | 2 +- src/mod/endpoints/mod_alsa/mod_alsa.c | 6 +- src/mod/endpoints/mod_dingaling/mod_dingaling.c | 115 +- src/mod/endpoints/mod_gsmopen/.gitignore | 2 - .../alsa_nogsmlib_nocplusplus/mod_gsmopen/Makefile | 3 +- src/mod/endpoints/mod_gsmopen/gsmopen.h | 6 +- src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp | 20 +- src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 38 +- src/mod/endpoints/mod_h323/Makefile | 10 +- src/mod/endpoints/mod_h323/changes.txt | 4 - src/mod/endpoints/mod_h323/compiling.txt | 1 - src/mod/endpoints/mod_h323/mod_h323.2010.vcxproj | 151 - src/mod/endpoints/mod_h323/mod_h323.cpp | 50 +- src/mod/endpoints/mod_h323/mod_h323.h | 9 +- src/mod/endpoints/mod_h323/mod_h323_2008.vcproj | 148 +- .../mod_khomp/Install/files/khomp.conf.xml | 487 --- src/mod/endpoints/mod_khomp/Makefile | 57 - .../endpoints/mod_khomp/commons/base/atomic.hpp | 203 - .../mod_khomp/commons/base/config_commons.hpp | 74 - .../mod_khomp/commons/base/config_options.cpp | 302 -- .../mod_khomp/commons/base/config_options.hpp | 772 ---- .../commons/base/configurator/configfile.cpp | 241 -- .../commons/base/configurator/configfile.hpp | 90 - .../mod_khomp/commons/base/configurator/option.cpp | 186 - .../mod_khomp/commons/base/configurator/option.hpp | 128 - .../commons/base/configurator/restriction.cpp | 358 -- .../commons/base/configurator/restriction.hpp | 269 -- .../commons/base/configurator/section.cpp | 136 - .../commons/base/configurator/section.hpp | 260 -- .../mod_khomp/commons/base/const_this.hpp | 15 - .../endpoints/mod_khomp/commons/base/flagger.hpp | 102 - .../endpoints/mod_khomp/commons/base/format.cpp | 337 -- .../endpoints/mod_khomp/commons/base/format.hpp | 561 --- .../endpoints/mod_khomp/commons/base/function.hpp | 429 --- .../mod_khomp/commons/base/initializer.hpp | 80 - .../endpoints/mod_khomp/commons/base/k3lapi.cpp | 309 -- .../endpoints/mod_khomp/commons/base/k3lapi.hpp | 492 --- .../endpoints/mod_khomp/commons/base/k3lutil.cpp | 206 - .../endpoints/mod_khomp/commons/base/k3lutil.hpp | 80 - .../endpoints/mod_khomp/commons/base/logger.hpp | 614 --- .../mod_khomp/commons/base/noncopyable.hpp | 54 - .../mod_khomp/commons/base/refcounter.hpp | 268 -- src/mod/endpoints/mod_khomp/commons/base/regex.cpp | 149 - src/mod/endpoints/mod_khomp/commons/base/regex.hpp | 243 -- .../mod_khomp/commons/base/ringbuffer.cpp | 485 --- .../mod_khomp/commons/base/ringbuffer.hpp | 448 --- .../mod_khomp/commons/base/saved_condition.cpp | 46 - .../mod_khomp/commons/base/saved_condition.hpp | 61 - .../mod_khomp/commons/base/scoped_lock.hpp | 95 - .../mod_khomp/commons/base/simple_lock.hpp | 104 - .../endpoints/mod_khomp/commons/base/strings.cpp | 267 -- .../endpoints/mod_khomp/commons/base/strings.hpp | 113 - .../base/system/freeswitch/saved_condition.cpp | 62 - .../base/system/freeswitch/saved_condition.hpp | 136 - .../commons/base/system/freeswitch/simple_lock.hpp | 177 - .../commons/base/system/freeswitch/thread.hpp | 327 -- .../mod_khomp/commons/base/tagged_union.hpp | 313 -- .../endpoints/mod_khomp/commons/base/thread.hpp | 103 - src/mod/endpoints/mod_khomp/commons/base/timer.cpp | 366 -- src/mod/endpoints/mod_khomp/commons/base/timer.hpp | 231 -- src/mod/endpoints/mod_khomp/commons/base/types.hpp | 99 - .../endpoints/mod_khomp/commons/base/variable.hpp | 124 - .../endpoints/mod_khomp/commons/base/verbose.cpp | 2990 --------------- .../endpoints/mod_khomp/commons/base/verbose.hpp | 303 -- .../commons/tools/generate-verbose-headers.sh | 183 - src/mod/endpoints/mod_khomp/docs/Manual.html | 1083 ------ src/mod/endpoints/mod_khomp/docs/Manual.pdf | Bin 470343 -> 0 bytes src/mod/endpoints/mod_khomp/docs/README.html | 39 - src/mod/endpoints/mod_khomp/docs/README.pdf | Bin 399119 -> 0 bytes src/mod/endpoints/mod_khomp/docs/README_en.html | 40 - src/mod/endpoints/mod_khomp/docs/README_en.pdf | Bin 314413 -> 0 bytes src/mod/endpoints/mod_khomp/docs/User_Guide.html | 1088 ------ src/mod/endpoints/mod_khomp/docs/User_Guide.pdf | Bin 509260 -> 0 bytes src/mod/endpoints/mod_khomp/examples/intercept.xml | 26 - src/mod/endpoints/mod_khomp/examples/transfer.xml | 43 - src/mod/endpoints/mod_khomp/include/applications.h | 1037 ------ src/mod/endpoints/mod_khomp/include/cli.h | 1235 ------ src/mod/endpoints/mod_khomp/include/defs.h | 211 -- src/mod/endpoints/mod_khomp/include/frame.h | 160 - src/mod/endpoints/mod_khomp/include/globals.h | 121 - src/mod/endpoints/mod_khomp/include/k3l.h | 1996 ---------- src/mod/endpoints/mod_khomp/include/khomp_pvt.h | 1326 ------- .../endpoints/mod_khomp/include/khomp_pvt_fxo.h | 377 -- .../endpoints/mod_khomp/include/khomp_pvt_gsm.h | 333 -- .../endpoints/mod_khomp/include/khomp_pvt_kxe1.h | 1122 ------ .../mod_khomp/include/khomp_pvt_passive.h | 305 -- src/mod/endpoints/mod_khomp/include/lock.h | 86 - src/mod/endpoints/mod_khomp/include/logger.h | 141 - src/mod/endpoints/mod_khomp/include/opt.h | 263 -- src/mod/endpoints/mod_khomp/include/revision.h | 1 - src/mod/endpoints/mod_khomp/include/spec.h | 91 - src/mod/endpoints/mod_khomp/include/utils.h | 783 ---- src/mod/endpoints/mod_khomp/mod_khomp.cpp | 1524 -------- src/mod/endpoints/mod_khomp/src/applications.cpp | 976 ----- src/mod/endpoints/mod_khomp/src/cli.cpp | 3050 --------------- src/mod/endpoints/mod_khomp/src/frame.cpp | 124 - src/mod/endpoints/mod_khomp/src/globals.cpp | 68 - src/mod/endpoints/mod_khomp/src/khomp_pvt.cpp | 2620 ------------- src/mod/endpoints/mod_khomp/src/khomp_pvt_fxo.cpp | 811 ---- src/mod/endpoints/mod_khomp/src/khomp_pvt_gsm.cpp | 569 --- src/mod/endpoints/mod_khomp/src/khomp_pvt_kxe1.cpp | 3476 ----------------- .../endpoints/mod_khomp/src/khomp_pvt_passive.cpp | 295 -- src/mod/endpoints/mod_khomp/src/lock.cpp | 138 - src/mod/endpoints/mod_khomp/src/logger.cpp | 437 --- src/mod/endpoints/mod_khomp/src/opt.cpp | 691 ---- src/mod/endpoints/mod_khomp/src/spec.cpp | 895 ----- src/mod/endpoints/mod_khomp/src/utils.cpp | 677 ---- .../mod_khomp/support/config_defaults.cpp | 50 - .../mod_khomp/support/config_defaults.hpp | 75 - .../endpoints/mod_khomp/support/klog-config.cpp | 126 - .../endpoints/mod_khomp/support/klog-config.hpp | 75 - .../endpoints/mod_khomp/support/klog-options.cpp | 158 - .../endpoints/mod_khomp/support/klog-options.hpp | 81 - src/mod/endpoints/mod_khomp/tools/getk3l.sh | 93 - src/mod/endpoints/mod_khomp/tools/getversion.sh | 51 - src/mod/endpoints/mod_loopback/mod_loopback.c | 67 +- src/mod/endpoints/mod_opal/mod_opal.cpp | 7 +- src/mod/endpoints/mod_portaudio/mod_portaudio.c | 6 +- src/mod/endpoints/mod_reference/mod_reference.c | 4 +- .../endpoints/mod_skinny/Net/Skinny/Protocol.pm | 2 +- src/mod/endpoints/mod_skinny/mod_skinny.c | 476 +-- src/mod/endpoints/mod_skinny/mod_skinny.h | 28 +- .../endpoints/mod_skinny/mod_skinny_2008.vcproj | 143 - .../endpoints/mod_skinny/mod_skinny_2010.vcxproj | 58 - src/mod/endpoints/mod_skinny/skinny_api.c | 82 +- src/mod/endpoints/mod_skinny/skinny_protocol.c | 90 +- src/mod/endpoints/mod_skinny/skinny_protocol.h | 97 +- src/mod/endpoints/mod_skinny/skinny_server.c | 161 +- src/mod/endpoints/mod_skinny/skinny_tables.c | 38 +- src/mod/endpoints/mod_skinny/skinny_tables.h | 9 +- src/mod/endpoints/mod_skypopen/Makefile.am | 2 +- src/mod/endpoints/mod_skypopen/alsa/dummy.c | 225 +- src/mod/endpoints/mod_skypopen/alsa/pcm_lib.c | 2182 ----------- src/mod/endpoints/mod_skypopen/alsa/pcm_native.c | 3493 ----------------- .../endpoints/mod_skypopen/asterisk/chan_skypiax.c | 2 +- src/mod/endpoints/mod_skypopen/mod_skypopen.c | 1128 ++----- src/mod/endpoints/mod_skypopen/oss/Makefile | 43 - src/mod/endpoints/mod_skypopen/oss/main.c | 494 --- src/mod/endpoints/mod_skypopen/oss/skypopen.h | 71 - .../mod_skypopen/osscuse/98-osscuse.rules | 7 - src/mod/endpoints/mod_skypopen/osscuse/LICENSE | 339 -- src/mod/endpoints/mod_skypopen/osscuse/Makefile | 69 - src/mod/endpoints/mod_skypopen/osscuse/README | 119 - .../endpoints/mod_skypopen/osscuse/ossp-alsap.c | 613 --- .../endpoints/mod_skypopen/osscuse/ossp-slave.c | 250 -- .../endpoints/mod_skypopen/osscuse/ossp-slave.h | 28 - src/mod/endpoints/mod_skypopen/osscuse/ossp-util.c | 369 -- src/mod/endpoints/mod_skypopen/osscuse/ossp-util.h | 609 --- src/mod/endpoints/mod_skypopen/osscuse/ossp.c | 83 - src/mod/endpoints/mod_skypopen/osscuse/ossp.h | 117 - src/mod/endpoints/mod_skypopen/osscuse/osspd.c | 2374 ------------ src/mod/endpoints/mod_skypopen/skypopen.h | 144 +- src/mod/endpoints/mod_skypopen/skypopen_protocol.c | 690 +--- src/mod/endpoints/mod_sofia/mod_sofia.2010.vcxproj | 7 +- src/mod/endpoints/mod_sofia/mod_sofia.c | 748 ++--- src/mod/endpoints/mod_sofia/mod_sofia.h | 54 +- src/mod/endpoints/mod_sofia/sip-dig.c | 2 +- src/mod/endpoints/mod_sofia/sofia.c | 816 +---- src/mod/endpoints/mod_sofia/sofia_glue.c | 1543 ++------- src/mod/endpoints/mod_sofia/sofia_presence.c | 1474 ++++----- src/mod/endpoints/mod_sofia/sofia_reg.c | 618 +--- src/mod/endpoints/mod_sofia/sofia_sla.c | 2 +- src/mod/endpoints/mod_unicall/mod_unicall.c | 4 +- src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.c | 8 +- src/mod/event_handlers/mod_cdr_pg_csv/Makefile | 1 - src/mod/event_handlers/mod_cdr_pg_csv/create.sql | 26 +- .../event_handlers/mod_cdr_pg_csv/mod_cdr_pg_csv.c | 456 ++- src/mod/event_handlers/mod_cdr_sqlite/Makefile | 1 - .../event_handlers/mod_cdr_sqlite/mod_cdr_sqlite.c | 309 -- .../event_handlers/mod_erlang_event/ei_helpers.c | 54 +- .../event_handlers/mod_erlang_event/handle_msg.c | 244 +- .../mod_erlang_event/mod_erlang_event.c | 225 +- .../mod_erlang_event/mod_erlang_event.h | 10 +- .../mod_event_multicast/mod_event_multicast.c | 2 +- .../mod_event_socket/mod_event_socket.c | 127 +- .../event_handlers/mod_event_test/mod_event_test.c | 4 +- src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c | 2 +- .../event_handlers/mod_radius_cdr/mod_radius_cdr.c | 2 +- src/mod/event_handlers/mod_snmp/FREESWITCH-MIB | 323 -- src/mod/event_handlers/mod_snmp/Makefile | 7 - src/mod/event_handlers/mod_snmp/mod_snmp.c | 158 - src/mod/event_handlers/mod_snmp/subagent.c | 386 -- src/mod/event_handlers/mod_snmp/subagent.h | 77 - src/mod/formats/mod_file_string/mod_file_string.c | 23 +- .../formats/mod_local_stream/mod_local_stream.c | 2 +- src/mod/formats/mod_native_file/mod_native_file.c | 4 +- .../mod_portaudio_stream/mod_portaudio_stream.c | 2 +- .../formats/mod_shell_stream/mod_shell_stream.c | 2 +- src/mod/formats/mod_shout/Makefile | 1 - src/mod/formats/mod_shout/hack_out_ogg.diff | 247 -- src/mod/formats/mod_shout/mod_shout.c | 10 +- .../formats/mod_shout/mod_shout.vcxproj.filters | 33 - src/mod/formats/mod_sndfile/mod_sndfile.c | 29 +- src/mod/formats/mod_tone_stream/mod_tone_stream.c | 2 +- .../src/org/freeswitch/swig/CoreSession.java | 12 +- .../src/org/freeswitch/swig/freeswitchJNI.java | 5 +- src/mod/languages/mod_java/switch_swig_wrap.cpp | 43 +- src/mod/languages/mod_lua/freeswitch.i | 30 +- src/mod/languages/mod_lua/freeswitch_lua.cpp | 100 - src/mod/languages/mod_lua/freeswitch_lua.h | 25 - src/mod/languages/mod_lua/hack.diff | 28 +- src/mod/languages/mod_lua/mod_lua.cpp | 6 +- src/mod/languages/mod_lua/mod_lua_wrap.cpp | 575 +--- src/mod/languages/mod_lua/my_swigable_cpp.h | 13 - src/mod/languages/mod_managed/freeswitch.i | 5 +- .../languages/mod_managed/freeswitch_wrap.2010.cxx | 2820 ++------------ src/mod/languages/mod_managed/freeswitch_wrap.cxx | 2916 ++------------- .../managed/FreeSWITCH.Managed.2010.csproj | 26 +- .../mod_managed/managed/FreeSWITCH.Managed.csproj | 20 +- src/mod/languages/mod_managed/managed/swig.2010.cs | 3254 ++++------------- src/mod/languages/mod_managed/managed/swig.cs | 2658 ++------------ .../languages/mod_managed/mod_managed.2010.vcxproj | 4 +- src/mod/languages/mod_managed/mono28.patch | 75 - src/mod/languages/mod_managed/runswig.2010.cmd | 10 - src/mod/languages/mod_managed/runswig.cmd | 2 +- src/mod/languages/mod_perl/freeswitch.pm | 1 - src/mod/languages/mod_perl/mod_perl.c | 2 +- src/mod/languages/mod_perl/mod_perl_wrap.cpp | 97 +- src/mod/languages/mod_python/freeswitch.py | 1 - src/mod/languages/mod_python/mod_python.c | 2 +- src/mod/languages/mod_python/mod_python_wrap.cpp | 86 +- .../mod_spidermonkey/mod_spidermonkey.2008.vcproj | 8 +- .../mod_spidermonkey/mod_spidermonkey.2010.vcxproj | 8 +- .../languages/mod_spidermonkey/mod_spidermonkey.c | 2 +- .../languages/mod_spidermonkey/mod_spidermonkey.h | 2 +- .../mod_spidermonkey/mod_spidermonkey_core_db.c | 2 +- .../mod_spidermonkey/mod_spidermonkey_curl.c | 2 +- .../mod_spidermonkey/mod_spidermonkey_odbc.c | 2 +- .../mod_spidermonkey/mod_spidermonkey_skel.c | 2 +- .../mod_spidermonkey/mod_spidermonkey_teletone.c | 2 +- src/mod/languages/mod_yaml/mod_yaml.c | 2 +- src/mod/loggers/mod_console/mod_console.c | 2 +- src/mod/say/mod_say_es/mod_say_es.c | 12 +- src/mod/say/mod_say_ja/mod_say_ja.c | 502 --- src/mod/say/mod_say_pt/Makefile | 2 - src/mod/say/mod_say_pt/mod_say_pt.2008.vcproj | 283 -- src/mod/say/mod_say_pt/mod_say_pt.2010.vcxproj | 131 - src/mod/say/mod_say_pt/mod_say_pt.c | 548 --- src/mod/say/mod_say_pt/mod_say_pt.vcproj | 51 - src/mod/say/mod_say_ru/mod_say_ru.c | 6 +- src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c | 6 +- src/mod/xml_int/mod_xml_curl/mod_xml_curl.c | 2 +- src/mod/xml_int/mod_xml_ldap/mod_xml_ldap.c | 2 +- src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c | 9 +- src/switch.c | 172 +- src/switch_apr.c | 34 +- src/switch_buffer.c | 2 +- src/switch_caller.c | 7 +- src/switch_channel.c | 332 +-- src/switch_config.c | 2 +- src/switch_console.c | 74 +- src/switch_core.c | 136 +- src/switch_core_asr.c | 2 +- src/switch_core_codec.c | 63 +- src/switch_core_db.c | 5 +- src/switch_core_directory.c | 2 +- src/switch_core_event_hook.c | 3 +- src/switch_core_file.c | 44 +- src/switch_core_hash.c | 2 +- src/switch_core_io.c | 169 +- src/switch_core_media_bug.c | 28 +- src/switch_core_memory.c | 4 +- src/switch_core_port_allocator.c | 2 +- src/switch_core_rwlock.c | 42 +- src/switch_core_session.c | 188 +- src/switch_core_speech.c | 2 +- src/switch_core_sqldb.c | 364 +-- src/switch_core_state_machine.c | 30 +- src/switch_core_timer.c | 2 +- src/switch_cpp.cpp | 140 +- src/switch_event.c | 33 +- src/switch_ivr.c | 644 +--- src/switch_ivr_async.c | 608 +--- src/switch_ivr_bridge.c | 162 +- src/switch_ivr_menu.c | 24 +- src/switch_ivr_originate.c | 324 +- src/switch_ivr_play_say.c | 231 +- src/switch_ivr_say.c | 2 +- src/switch_json.c | 2 +- src/switch_loadable_module.c | 261 +-- src/switch_log.c | 2 +- src/switch_nat.c | 2 +- src/switch_odbc.c | 168 +- src/switch_pcm.c | 2 +- src/switch_regex.c | 4 +- src/switch_resample.c | 4 +- src/switch_rtp.c | 692 +--- src/switch_scheduler.c | 2 +- src/switch_stun.c | 2 +- src/switch_swig.c | 2 +- src/switch_time.c | 8 +- src/switch_utils.c | 499 +--- src/switch_xml.c | 53 +- src/switch_xml_config.c | 2 +- src/tone2wav.c | 193 - support-d/.gdbinit | 3 - support-d/.screenrc | 1 - w32/Console/FreeSwitchConsole.2008.vcproj | 8 +- w32/Console/FreeSwitchConsole.2010.vcxproj | 8 +- w32/Console/FreeSwitchConsole.2010.vcxproj.filters | 60 - w32/Library/FreeSwitchCore.2008.vcproj | 12 +- w32/Library/FreeSwitchCore.2010.vcxproj | 14 +- w32/Setup/Product.wxs | 98 - w32/Setup/Setup.wixproj | 821 ---- 1128 files changed, 27214 insertions(+), 172254 deletions(-) delete mode 100644 conf/autoload_configs/cdr_sqlite.conf.xml create mode 100644 conf/dialplan/default/99999_enum.xml delete mode 100644 debian/READ_BEFORE_CHANGING_ANYTHING_IN_HERE delete mode 100644 debian/freeswitch-codec-passthru-amrwb.install delete mode 100644 debian/freeswitch-freetdm.conffiles delete mode 100644 debian/freeswitch-freetdm.install delete mode 100644 debian/freeswitch-python.config delete mode 100644 debian/freeswitch-python.install create mode 100644 debian/sounds/freeswitch-sounds-en-us-callie/debian/files mode change 100755 => 100644 debian/sounds/freeswitch-sounds-en-us-callie/debian/rules create mode 100644 debian/sounds/freeswitch-sounds-music/debian/files mode change 100755 => 100644 debian/sounds/freeswitch-sounds-music/debian/rules create mode 100644 debian/sounds/freeswitch-sounds-ru-RU-elena/debian/files mode change 100755 => 100644 debian/sounds/freeswitch-sounds-ru-RU-elena/debian/rules delete mode 100644 debian/source/format delete mode 100755 devel-bootstrap.sh delete mode 100644 docs/phrase/phrase_es_ES.xml delete mode 100644 docs/phrase/phrase_es_MX.xml delete mode 100644 docs/phrase/phrase_pt_BR.xml delete mode 100644 docs/phrase/phrase_pt_PT.xml delete mode 100644 freeswitch-sounds-en-us-callie.spec delete mode 100644 fscomm/MakeVcProj.cmd delete mode 100644 libs/broadvoice/src/libbroadvoice.2010.vcxproj.filters delete mode 100644 libs/esl/fs_cli.2010.vcxproj.filters delete mode 100644 libs/esl/lua/esl_lua.2008.sln delete mode 100644 libs/esl/lua/esl_lua.2008.vcproj delete mode 100644 libs/esl/managed/ESL.2010.vcxproj delete mode 100644 libs/esl/managed/ESL.2010.vcxproj.filters delete mode 100644 libs/esl/managed/ManagedEsl.2010.csproj delete mode 100644 libs/esl/managed/ManagedEslTest/ManagedEslTest.2010.csproj delete mode 100644 libs/esl/managed/managed_esl.2010.sln delete mode 100644 libs/esl/src/esl.2010.vcxproj.filters delete mode 100644 libs/esl/src/esl_buffer.c delete mode 100644 libs/esl/src/include/esl_buffer.h delete mode 100644 libs/freetdm/CMakeLists.txt delete mode 100644 libs/freetdm/build/ax_compiler_vendor.m4 copy libs/{openzap => freetdm}/conf/m3ua.conf (100%) delete mode 100644 libs/freetdm/docs/async.txt delete mode 100644 libs/freetdm/docs/glare.txt delete mode 100644 libs/freetdm/docs/io_modules.txt delete mode 100644 libs/freetdm/docs/locking.txt delete mode 100644 libs/freetdm/docs/sigstatus.txt delete mode 100644 libs/freetdm/freetdm.2010.sln delete mode 100755 libs/freetdm/mkrelease.sh delete mode 100644 libs/freetdm/mod_freetdm/CMakeLists.txt delete mode 100644 libs/freetdm/mod_freetdm/mod_freetdm.2010.vcxproj delete mode 100644 libs/freetdm/mod_freetdm/mod_freetdm.2010.vcxproj.filters delete mode 100644 libs/freetdm/msvc/freetdm.2010.vcxproj delete mode 100644 libs/freetdm/msvc/freetdm.2010.vcxproj.filters delete mode 100644 libs/freetdm/msvc/testanalog/testanalog.2010.vcxproj delete mode 100644 libs/freetdm/msvc/testanalog/testanalog.2010.vcxproj.filters delete mode 100644 libs/freetdm/msvc/testboost/testboost.2010.vcxproj delete mode 100644 libs/freetdm/msvc/testboost/testboost.2010.vcxproj.filters delete mode 100644 libs/freetdm/msvc/testboost/testsangomaboost.2010.vcxproj delete mode 100644 libs/freetdm/msvc/testboost/testsangomaboost.2010.vcxproj.filters delete mode 100644 libs/freetdm/msvc/testisdn/testisdn.2010.vcxproj delete mode 100644 libs/freetdm/msvc/testisdn/testisdn.2010.vcxproj.filters copy libs/{openzap => freetdm}/openzap.2005.sln (100%) copy libs/{openzap => freetdm}/patches/oz.diff (100%) delete mode 100644 libs/freetdm/sample/CMakeLists.txt delete mode 100644 libs/freetdm/sample/boost/CMakeLists.txt delete mode 100644 libs/freetdm/sample/dso/CMakeLists.txt delete mode 100644 libs/freetdm/sample/sched/CMakeLists.txt delete mode 100644 libs/freetdm/src/ftdm_call_utils.c create mode 100644 libs/freetdm/src/ftdm_m3ua.c delete mode 100644 libs/freetdm/src/ftdm_state.c delete mode 100644 libs/freetdm/src/ftmod/ftmod_analog/ftmod_analog.2010.vcxproj delete mode 100644 libs/freetdm/src/ftmod/ftmod_analog/ftmod_analog.2010.vcxproj.filters create mode 100644 libs/freetdm/src/ftmod/ftmod_analog/ozmod_analog.2005.vcproj delete mode 100644 libs/freetdm/src/ftmod/ftmod_analog_em/ftmod_analog_em.2010.vcxproj delete mode 100644 libs/freetdm/src/ftmod/ftmod_analog_em/ftmod_analog_em.2010.vcxproj.filters create mode 100644 libs/freetdm/src/ftmod/ftmod_analog_em/ozmod_analog_em.2005.vcproj create mode 100644 libs/freetdm/src/ftmod/ftmod_isdn/ftdm_isdn.h delete mode 100644 libs/freetdm/src/ftmod/ftmod_isdn/ftmod_isdn.2010.vcxproj delete mode 100644 libs/freetdm/src/ftmod/ftmod_isdn/ftmod_isdn.2010.vcxproj.filters delete mode 100644 libs/freetdm/src/ftmod/ftmod_isdn/ftmod_isdn.h create mode 100644 libs/freetdm/src/ftmod/ftmod_isdn/ozmod_isdn.2005.vcproj delete mode 100644 libs/freetdm/src/ftmod/ftmod_pika/ftmod_pika.2010.vcxproj delete mode 100644 libs/freetdm/src/ftmod/ftmod_pika/ftmod_pika.2010.vcxproj.filters delete mode 100644 libs/freetdm/src/ftmod/ftmod_r2/ftmod_r2.2008.vcproj delete mode 100644 libs/freetdm/src/ftmod/ftmod_r2/ftmod_r2.2010.vcxproj delete mode 100644 libs/freetdm/src/ftmod/ftmod_r2/ftmod_r2.2010.vcxproj.filters delete mode 100644 libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.2010.vcxproj delete mode 100644 libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.2010.vcxproj.filters delete mode 100644 libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.2008.vcproj delete mode 100644 libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.2010.vcxproj delete mode 100644 libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.2010.vcxproj.filters delete mode 100644 libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c create mode 100644 libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_in.c delete mode 100644 libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_rcv.c delete mode 100644 libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_user.h delete mode 100644 libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_cfg.c delete mode 100644 libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_handle.c delete mode 100644 libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_logger.c delete mode 100644 libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_sta.c delete mode 100644 libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_sts.c delete mode 100644 libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.2010.vcxproj delete mode 100644 libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.2010.vcxproj.filters create mode 100644 libs/freetdm/src/ftmod/ftmod_wanpipe/ozmod_wanpipe.2005.vcproj copy libs/{openzap/src/ozmod/ozmod_wanpipe => freetdm/src/ftmod/ftmod_wanpipe}/wanpipe_tdm_api_iface.h (100%) delete mode 100644 libs/freetdm/src/include/ftdm_call_utils.h create mode 100644 libs/freetdm/src/include/private/ftdm_m3ua.h delete mode 100644 libs/freetdm/src/include/private/ftdm_state.h copy libs/{openzap => freetdm}/src/m3ua/mstm3ua.c (100%) copy libs/{openzap => freetdm}/src/m3ua/mstm3ua.h (100%) create mode 100644 libs/freetdm/src/m3ua_client.c create mode 100644 libs/freetdm/src/m3ua_client.h create mode 100644 libs/freetdm/src/testm3ua.c delete mode 100644 libs/ilbc/libilbc.2010.vcxproj.filters delete mode 100644 libs/libcodec2/.update delete mode 100644 libs/libcodec2/AUTHORS delete mode 100644 libs/libcodec2/COPYING delete mode 100644 libs/libcodec2/ChangeLog delete mode 100644 libs/libcodec2/INSTALL delete mode 100644 libs/libcodec2/Makefile.am delete mode 100644 libs/libcodec2/NEWS delete mode 100644 libs/libcodec2/README delete mode 100644 libs/libcodec2/configure.gnu delete mode 100644 libs/libcodec2/configure.in delete mode 100644 libs/libcodec2/doc/A_m.gif delete mode 100644 libs/libcodec2/doc/omega_0.gif delete mode 100644 libs/libcodec2/doc/phi_m.gif delete mode 100644 libs/libcodec2/doc/s_n.gif delete mode 100644 libs/libcodec2/doc/s_n.txt delete mode 100644 libs/libcodec2/octave/glottal.m delete mode 100644 libs/libcodec2/octave/load_raw.m delete mode 100644 libs/libcodec2/octave/lsp_pdf.m delete mode 100644 libs/libcodec2/octave/phase.m delete mode 100644 libs/libcodec2/octave/phase2.m delete mode 100644 libs/libcodec2/octave/pitch_test.m delete mode 100644 libs/libcodec2/octave/pl.m delete mode 100644 libs/libcodec2/octave/pl2.m delete mode 100644 libs/libcodec2/octave/plamp.m delete mode 100644 libs/libcodec2/octave/plinterp.m delete mode 100644 libs/libcodec2/octave/plnlp.m delete mode 100644 libs/libcodec2/octave/plphase.m delete mode 100644 libs/libcodec2/octave/plpitch.m delete mode 100644 libs/libcodec2/octave/png.m delete mode 100644 libs/libcodec2/octave/postfilter.m delete mode 100644 libs/libcodec2/octave/pulse.m delete mode 100644 libs/libcodec2/pitch/hts1a.p delete mode 100644 libs/libcodec2/pitch/hts2a.p delete mode 100644 libs/libcodec2/raw/b0067.raw delete mode 100644 libs/libcodec2/raw/f2400.raw delete mode 100644 libs/libcodec2/raw/forig.raw delete mode 100644 libs/libcodec2/raw/forig_g729a.raw delete mode 100644 libs/libcodec2/raw/forig_gsm13k.raw delete mode 100644 libs/libcodec2/raw/forig_speex_8k.raw delete mode 100644 libs/libcodec2/raw/hts.raw delete mode 100644 libs/libcodec2/raw/hts1.raw delete mode 100644 libs/libcodec2/raw/hts1a.raw delete mode 100644 libs/libcodec2/raw/hts1a_g729a.raw delete mode 100644 libs/libcodec2/raw/hts1a_gsm13k.raw delete mode 100644 libs/libcodec2/raw/hts1a_speex_8k.raw delete mode 100644 libs/libcodec2/raw/hts2.raw delete mode 100644 libs/libcodec2/raw/hts2a.raw delete mode 100644 libs/libcodec2/raw/hts2a_g729a.raw delete mode 100644 libs/libcodec2/raw/hts2a_gsm13k.raw delete mode 100644 libs/libcodec2/raw/hts2a_speex_8k.raw delete mode 100644 libs/libcodec2/raw/m2400.raw delete mode 100644 libs/libcodec2/raw/mmt1.raw delete mode 100644 libs/libcodec2/raw/mmt1_g729a.raw delete mode 100644 libs/libcodec2/raw/mmt1_gsm13k.raw delete mode 100644 libs/libcodec2/raw/mmt1_speex_8k.raw delete mode 100644 libs/libcodec2/raw/morig.raw delete mode 100644 libs/libcodec2/raw/morig_g729a.raw delete mode 100644 libs/libcodec2/raw/morig_gsm13k.raw delete mode 100644 libs/libcodec2/raw/morig_speex_8k.raw delete mode 100755 libs/libcodec2/script/menu.sh delete mode 100755 libs/libcodec2/script/playraw.sh delete mode 100755 libs/libcodec2/script/raw2wav.sh delete mode 100755 libs/libcodec2/script/wav2raw.sh delete mode 100644 libs/libcodec2/src/Makefile.am delete mode 100644 libs/libcodec2/src/c2dec.c delete mode 100644 libs/libcodec2/src/c2enc.c delete mode 100644 libs/libcodec2/src/c2sim.c delete mode 100755 libs/libcodec2/src/codeall.sh delete mode 100644 libs/libcodec2/src/codebook.c delete mode 100644 libs/libcodec2/src/codebook.h delete mode 100644 libs/libcodec2/src/codec2.c delete mode 100644 libs/libcodec2/src/codec2.h delete mode 100644 libs/libcodec2/src/comp.h delete mode 100644 libs/libcodec2/src/defines.h delete mode 100644 libs/libcodec2/src/dump.c delete mode 100644 libs/libcodec2/src/dump.h delete mode 100644 libs/libcodec2/src/four1.c delete mode 100644 libs/libcodec2/src/four1.h delete mode 100755 libs/libcodec2/src/fq20.sh delete mode 100644 libs/libcodec2/src/globals.c delete mode 100644 libs/libcodec2/src/globals.h delete mode 100644 libs/libcodec2/src/interp.c delete mode 100644 libs/libcodec2/src/interp.h delete mode 100644 libs/libcodec2/src/listen.sh delete mode 100755 libs/libcodec2/src/listen1.sh delete mode 100755 libs/libcodec2/src/listensim.sh delete mode 100644 libs/libcodec2/src/lpc.c delete mode 100644 libs/libcodec2/src/lpc.h delete mode 100644 libs/libcodec2/src/lsp.c delete mode 100644 libs/libcodec2/src/lsp.h delete mode 100644 libs/libcodec2/src/nlp.c delete mode 100644 libs/libcodec2/src/nlp.h delete mode 100644 libs/libcodec2/src/pack.c delete mode 100644 libs/libcodec2/src/phase.c delete mode 100644 libs/libcodec2/src/phase.h delete mode 100644 libs/libcodec2/src/postfilter.c delete mode 100644 libs/libcodec2/src/postfilter.h delete mode 100644 libs/libcodec2/src/quantise.c delete mode 100644 libs/libcodec2/src/quantise.h delete mode 100755 libs/libcodec2/src/sim.sh delete mode 100644 libs/libcodec2/src/sine.c delete mode 100644 libs/libcodec2/src/sine.h delete mode 100644 libs/libcodec2/unittest/Makefile.am delete mode 100644 libs/libcodec2/unittest/extract.c delete mode 100644 libs/libcodec2/unittest/genlsp.c delete mode 100644 libs/libcodec2/unittest/genres.c delete mode 100644 libs/libcodec2/unittest/lsp1.txt delete mode 100644 libs/libcodec2/unittest/lsp10.txt delete mode 100644 libs/libcodec2/unittest/lsp2.txt delete mode 100644 libs/libcodec2/unittest/lsp3.txt delete mode 100644 libs/libcodec2/unittest/lsp4.txt delete mode 100644 libs/libcodec2/unittest/lsp5.txt delete mode 100644 libs/libcodec2/unittest/lsp6.txt delete mode 100644 libs/libcodec2/unittest/lsp7.txt delete mode 100644 libs/libcodec2/unittest/lsp8.txt delete mode 100644 libs/libcodec2/unittest/lsp9.txt delete mode 100644 libs/libcodec2/unittest/lspd123.txt delete mode 100644 libs/libcodec2/unittest/lspd456.txt delete mode 100644 libs/libcodec2/unittest/lspd78.txt delete mode 100644 libs/libcodec2/unittest/lspd910.txt delete mode 100644 libs/libcodec2/unittest/lsptest.c delete mode 100644 libs/libcodec2/unittest/sd.c delete mode 100644 libs/libcodec2/unittest/tcodec2.c delete mode 100644 libs/libcodec2/unittest/tcontphase.c delete mode 100644 libs/libcodec2/unittest/tinterp.c delete mode 100644 libs/libcodec2/unittest/tnlp.c delete mode 100644 libs/libcodec2/unittest/tquant.c delete mode 100644 libs/libcodec2/unittest/vqtrain.c delete mode 100644 libs/libcodec2/wav/f2400.wav delete mode 100644 libs/libcodec2/wav/forig.wav delete mode 100644 libs/libcodec2/wav/forig_speex_8k.wav delete mode 100644 libs/libcodec2/wav/hts1a.wav delete mode 100644 libs/libcodec2/wav/hts1a_c2_v0.1.wav delete mode 100644 libs/libcodec2/wav/hts1a_g729a.wav delete mode 100644 libs/libcodec2/wav/hts1a_speex_8k.wav delete mode 100644 libs/libcodec2/wav/hts2a.wav delete mode 100644 libs/libcodec2/wav/hts2a_c2_v0.1.wav delete mode 100644 libs/libcodec2/wav/hts2a_g729a.wav delete mode 100644 libs/libcodec2/wav/hts2a_speex_8k.wav delete mode 100644 libs/libcodec2/wav/m2400.wav delete mode 100644 libs/libcodec2/wav/mmt1.wav delete mode 100644 libs/libcodec2/wav/mmt1_speex_8k.wav delete mode 100644 libs/libcodec2/wav/morig.wav delete mode 100644 libs/libcodec2/wav/morig_speex_8k.wav delete mode 100644 libs/libdingaling/libdingaling.2010.vcxproj.filters delete mode 100644 libs/libg722_1/g722_1.pc.in delete mode 100644 libs/libg722_1/src/utilities.c delete mode 100644 libs/libg722_1/src/utilities.h delete mode 100644 libs/libg722_1/tests/g192_bit_stream.c delete mode 100644 libs/libg722_1/tests/g192_bit_stream.h create mode 100644 libs/libg722_1/tests/itu_bit_stream.c create mode 100644 libs/libsndfile/M4/lt~obsolete.m4 delete mode 100644 libs/libteletone/libteletone.2010.vcxproj.filters delete mode 100644 libs/portaudio/build/msvc/portaudio.2010.vcxproj.filters delete mode 100644 libs/silk/src/Silk_FIX.2010.vcxproj.filters mode change 100755 => 100644 libs/sofia-sip/libsofia-sip-ua/nta/run_check_nta mode change 100755 => 100644 libs/sofia-sip/libsofia-sip-ua/nta/run_test_nta mode change 100755 => 100644 libs/sofia-sip/libsofia-sip-ua/nta/run_test_nta_api mode change 100755 => 100644 libs/sofia-sip/libsofia-sip-ua/sdp/run_test_sdp mode change 100755 => 100644 libs/sofia-sip/libsofia-sip-ua/sip/run-tests mode change 100755 => 100644 libs/sofia-sip/libsofia-sip-ua/sip/run_test_date mode change 100755 => 100644 libs/sofia-sip/libsofia-sip-ua/sresolv/run_test_sresolv mode change 100755 => 100644 libs/sofia-sip/libsofia-sip-ua/su/run_addrinfo mode change 100755 => 100644 libs/sofia-sip/libsofia-sip-ua/su/run_localinfo mode change 100755 => 100644 libs/sofia-sip/libsofia-sip-ua/su/run_test_su mode change 100755 => 100644 libs/sofia-sip/libsofia-sip-ua/su/run_test_su_osx mode change 100755 => 100644 libs/sofia-sip/scripts/coverage mode change 100755 => 100644 libs/sofia-sip/scripts/fix-include-sofia-sip mode change 100755 => 100644 libs/sofia-sip/scripts/lcov-report mode change 100755 => 100644 libs/sofia-sip/scripts/rpmbuild-snaphot mode change 100755 => 100644 libs/sofia-sip/scripts/uncovered delete mode 100644 libs/spandsp/src/libspandsp.2010.vcxproj.filters delete mode 100644 libs/spandsp/src/libtiff.2010.vcxproj.filters delete mode 100644 libs/spandsp/src/msvc/make_at_dictionary.2010.vcxproj.filters delete mode 100644 libs/spandsp/src/msvc/make_modem_filter.2010.vcxproj.filters delete mode 100644 libs/speex/win32/VS2008/libspeex/libspeex.vcxproj.filters delete mode 100644 libs/srtp/libsrtp.2010.vcxproj.filters delete mode 100644 libs/unimrcp/libs/apr-toolkit/aprtoolkit.2010.vcxproj.filters delete mode 100644 libs/unimrcp/libs/mpf/mpf.2010.vcxproj.filters delete mode 100644 libs/unimrcp/libs/mrcp-client/mrcpclient.2010.vcxproj.filters delete mode 100644 libs/unimrcp/libs/mrcp-signaling/mrcpsignaling.2010.vcxproj.filters delete mode 100644 libs/unimrcp/libs/mrcp/mrcp.2010.vcxproj.filters delete mode 100644 libs/unimrcp/libs/mrcpv2-transport/mrcpv2transport.2010.vcxproj.filters delete mode 100644 libs/unimrcp/libs/uni-rtsp/unirtsp.2010.vcxproj.filters delete mode 100644 libs/unimrcp/modules/mrcp-sofiasip/mrcpsofiasip.2010.vcxproj.filters delete mode 100644 libs/unimrcp/modules/mrcp-unirtsp/mrcpunirtsp.2010.vcxproj.filters delete mode 100644 libs/win32/Download OPENSSL.2008.vcproj delete mode 100644 libs/win32/Download OPENSSL.2010.vcxproj delete mode 100644 libs/win32/apr-util/libaprutil.2010.vcxproj.filters delete mode 100644 libs/win32/apr-util/xml.2010.vcxproj.filters delete mode 100644 libs/win32/apr/libapr.2010.vcxproj.filters delete mode 100644 libs/win32/celt/libcelt.vcxproj.filters delete mode 100644 libs/win32/curl/curllib.2010.vcxproj.filters delete mode 100644 libs/win32/flite/flite.2010.vcxproj.filters delete mode 100644 libs/win32/iksemel/iksemel.2010.vcxproj.filters delete mode 100644 libs/win32/js/js.2010.vcxproj.filters delete mode 100644 libs/win32/json/libjson.2010.vcxproj.filters delete mode 100644 libs/win32/libg722_1/libg722_1.vcxproj.filters delete mode 100644 libs/win32/libmp3lame/libmp3lame.2010.vcxproj.filters delete mode 100644 libs/win32/libogg/libogg.2010.vcxproj.filters delete mode 100644 libs/win32/libshout/libshout.vcxproj.filters delete mode 100644 libs/win32/libsndfile/libsndfile.2010.vcxproj.filters delete mode 100644 libs/win32/mpg123/libmpg123.2010.vcxproj.filters delete mode 100644 libs/win32/openssl/applink.c delete mode 100644 libs/win32/openssl/buildinf.h delete mode 100644 libs/win32/openssl/include/aes.h delete mode 100644 libs/win32/openssl/include/asn1.h delete mode 100644 libs/win32/openssl/include/asn1_mac.h delete mode 100644 libs/win32/openssl/include/asn1t.h delete mode 100644 libs/win32/openssl/include/bio.h delete mode 100644 libs/win32/openssl/include/blowfish.h delete mode 100644 libs/win32/openssl/include/bn.h delete mode 100644 libs/win32/openssl/include/buffer.h delete mode 100644 libs/win32/openssl/include/camellia.h delete mode 100644 libs/win32/openssl/include/cast.h delete mode 100644 libs/win32/openssl/include/cms.h delete mode 100644 libs/win32/openssl/include/comp.h delete mode 100644 libs/win32/openssl/include/conf.h delete mode 100644 libs/win32/openssl/include/conf_api.h delete mode 100644 libs/win32/openssl/include/crypto.h delete mode 100644 libs/win32/openssl/include/des.h delete mode 100644 libs/win32/openssl/include/des_old.h delete mode 100644 libs/win32/openssl/include/dh.h delete mode 100644 libs/win32/openssl/include/dsa.h delete mode 100644 libs/win32/openssl/include/dso.h delete mode 100644 libs/win32/openssl/include/dtls1.h delete mode 100644 libs/win32/openssl/include/e_os.h delete mode 100644 libs/win32/openssl/include/e_os2.h delete mode 100644 libs/win32/openssl/include/ebcdic.h delete mode 100644 libs/win32/openssl/include/ec.h delete mode 100644 libs/win32/openssl/include/ecdh.h delete mode 100644 libs/win32/openssl/include/ecdsa.h delete mode 100644 libs/win32/openssl/include/engine.h delete mode 100644 libs/win32/openssl/include/err.h delete mode 100644 libs/win32/openssl/include/evp.h delete mode 100644 libs/win32/openssl/include/hmac.h delete mode 100644 libs/win32/openssl/include/idea.h delete mode 100644 libs/win32/openssl/include/krb5_asn.h delete mode 100644 libs/win32/openssl/include/kssl.h delete mode 100644 libs/win32/openssl/include/lhash.h delete mode 100644 libs/win32/openssl/include/md2.h delete mode 100644 libs/win32/openssl/include/md4.h delete mode 100644 libs/win32/openssl/include/md5.h delete mode 100644 libs/win32/openssl/include/mdc2.h delete mode 100644 libs/win32/openssl/include/modes.h delete mode 100644 libs/win32/openssl/include/o_dir.h delete mode 100644 libs/win32/openssl/include/o_str.h delete mode 100644 libs/win32/openssl/include/obj_mac.h delete mode 100644 libs/win32/openssl/include/objects.h delete mode 100644 libs/win32/openssl/include/ocsp.h delete mode 100644 libs/win32/openssl/include/opensslv.h delete mode 100644 libs/win32/openssl/include/ossl_typ.h delete mode 100644 libs/win32/openssl/include/pem.h delete mode 100644 libs/win32/openssl/include/pem2.h delete mode 100644 libs/win32/openssl/include/pkcs12.h delete mode 100644 libs/win32/openssl/include/pkcs7.h delete mode 100644 libs/win32/openssl/include/pq_compat.h delete mode 100644 libs/win32/openssl/include/pqueue.h delete mode 100644 libs/win32/openssl/include/rand.h delete mode 100644 libs/win32/openssl/include/rc2.h delete mode 100644 libs/win32/openssl/include/rc4.h delete mode 100644 libs/win32/openssl/include/rc5.h delete mode 100644 libs/win32/openssl/include/ripemd.h delete mode 100644 libs/win32/openssl/include/rsa.h delete mode 100644 libs/win32/openssl/include/safestack.h delete mode 100644 libs/win32/openssl/include/seed.h delete mode 100644 libs/win32/openssl/include/sha.h delete mode 100644 libs/win32/openssl/include/ssl.h delete mode 100644 libs/win32/openssl/include/ssl2.h delete mode 100644 libs/win32/openssl/include/ssl23.h delete mode 100644 libs/win32/openssl/include/ssl3.h delete mode 100644 libs/win32/openssl/include/stack.h delete mode 100644 libs/win32/openssl/include/store.h delete mode 100644 libs/win32/openssl/include/symhacks.h delete mode 100644 libs/win32/openssl/include/tls1.h delete mode 100644 libs/win32/openssl/include/tmdiff.h delete mode 100644 libs/win32/openssl/include/ts.h delete mode 100644 libs/win32/openssl/include/txt_db.h delete mode 100644 libs/win32/openssl/include/ui.h delete mode 100644 libs/win32/openssl/include/ui_compat.h delete mode 100644 libs/win32/openssl/include/whrlpool.h delete mode 100644 libs/win32/openssl/include/x509.h delete mode 100644 libs/win32/openssl/include/x509_vfy.h delete mode 100644 libs/win32/openssl/include/x509v3.h delete mode 100644 libs/win32/openssl/libeay32.2008.vcproj delete mode 100644 libs/win32/openssl/libeay32.2010.vcxproj delete mode 100644 libs/win32/openssl/libeay32.2010.vcxproj.filters delete mode 100644 libs/win32/openssl/libeay32.def delete mode 100644 libs/win32/openssl/openssl.2008.vcproj delete mode 100644 libs/win32/openssl/openssl.2010.vcxproj delete mode 100644 libs/win32/openssl/openssl.2010.vcxproj.filters delete mode 100644 libs/win32/openssl/opensslconf.h delete mode 100644 libs/win32/openssl/ssleay32.2008.vcproj delete mode 100644 libs/win32/openssl/ssleay32.2010.vcxproj delete mode 100644 libs/win32/openssl/ssleay32.2010.vcxproj.filters delete mode 100644 libs/win32/openssl/ssleay32.def delete mode 100644 libs/win32/pcre/libpcre.2010.vcxproj.filters delete mode 100644 libs/win32/pcre/pcre_chartables.c.2010.vcxproj.filters delete mode 100644 libs/win32/pocketsphinx/pocketsphinx.2010.vcxproj.filters delete mode 100644 libs/win32/pthread/pthread.2010.vcxproj.filters delete mode 100644 libs/win32/sofia/libsofia_sip_ua_static.2010.vcxproj.filters delete mode 100644 libs/win32/sphinxbase/sphinxbase.2010.vcxproj.filters delete mode 100644 libs/win32/sqlite/sqlite.2010.vcxproj.filters delete mode 100644 libs/win32/udns/libudns.2010.vcxproj.filters delete mode 100644 libs/xmlrpc-c/Windows/abyss.2010.vcxproj.filters delete mode 100644 libs/xmlrpc-c/Windows/xmlrpc.2010.vcxproj.filters delete mode 100755 scripts/perl/add_user delete mode 100755 scripts/perl/blacklist.pl delete mode 100755 scripts/perl/honeypot.pl delete mode 100644 src/fs_encode.c delete mode 100644 src/mod/applications/mod_avmd/mod_avmd.2010.vcxproj.filters mode change 100644 => 100755 src/mod/applications/mod_curl/mod_curl.c delete mode 100644 src/mod/applications/mod_directory/mod_directory.2010.vcxproj delete mode 100644 src/mod/applications/mod_distributor/mod_distributor.2010.vcxproj delete mode 100644 src/mod/applications/mod_fsk/Makefile delete mode 100644 src/mod/applications/mod_fsk/fsk.c delete mode 100644 src/mod/applications/mod_fsk/fsk.h delete mode 100644 src/mod/applications/mod_fsk/fsk_callerid.c delete mode 100644 src/mod/applications/mod_fsk/fsk_callerid.h delete mode 100644 src/mod/applications/mod_fsk/mod_fsk.c delete mode 100644 src/mod/applications/mod_fsk/uart.c delete mode 100644 src/mod/applications/mod_fsk/uart.h delete mode 100644 src/mod/applications/mod_mp4/Makefile delete mode 100644 src/mod/applications/mod_mp4/exception.hpp delete mode 100644 src/mod/applications/mod_mp4/mod_mp4.cpp delete mode 100644 src/mod/applications/mod_mp4/mp4_helper.cpp delete mode 100644 src/mod/applications/mod_mp4/mp4_helper.hpp delete mode 100644 src/mod/asr_tts/mod_cepstral/WinReadme.txt delete mode 100644 src/mod/codecs/mod_codec2/Makefile delete mode 100644 src/mod/codecs/mod_codec2/mod_codec2.c delete mode 100644 src/mod/endpoints/mod_h323/compiling.txt delete mode 100644 src/mod/endpoints/mod_h323/mod_h323.2010.vcxproj delete mode 100644 src/mod/endpoints/mod_khomp/Install/files/khomp.conf.xml delete mode 100644 src/mod/endpoints/mod_khomp/Makefile delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/atomic.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/config_commons.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/config_options.cpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/config_options.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/configurator/configfile.cpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/configurator/configfile.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/configurator/option.cpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/configurator/option.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/configurator/restriction.cpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/configurator/restriction.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/configurator/section.cpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/configurator/section.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/const_this.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/flagger.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/format.cpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/format.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/function.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/initializer.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/k3lapi.cpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/k3lapi.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/k3lutil.cpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/k3lutil.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/logger.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/noncopyable.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/refcounter.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/regex.cpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/regex.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/ringbuffer.cpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/ringbuffer.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/saved_condition.cpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/saved_condition.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/scoped_lock.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/simple_lock.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/strings.cpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/strings.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/system/freeswitch/saved_condition.cpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/system/freeswitch/saved_condition.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/system/freeswitch/simple_lock.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/system/freeswitch/thread.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/tagged_union.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/thread.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/timer.cpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/timer.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/types.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/variable.hpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/verbose.cpp delete mode 100644 src/mod/endpoints/mod_khomp/commons/base/verbose.hpp delete mode 100755 src/mod/endpoints/mod_khomp/commons/tools/generate-verbose-headers.sh delete mode 100644 src/mod/endpoints/mod_khomp/docs/Manual.html delete mode 100644 src/mod/endpoints/mod_khomp/docs/Manual.pdf delete mode 100644 src/mod/endpoints/mod_khomp/docs/README.html delete mode 100644 src/mod/endpoints/mod_khomp/docs/README.pdf delete mode 100644 src/mod/endpoints/mod_khomp/docs/README_en.html delete mode 100644 src/mod/endpoints/mod_khomp/docs/README_en.pdf delete mode 100644 src/mod/endpoints/mod_khomp/docs/User_Guide.html delete mode 100644 src/mod/endpoints/mod_khomp/docs/User_Guide.pdf delete mode 100644 src/mod/endpoints/mod_khomp/examples/intercept.xml delete mode 100644 src/mod/endpoints/mod_khomp/examples/transfer.xml delete mode 100644 src/mod/endpoints/mod_khomp/include/applications.h delete mode 100644 src/mod/endpoints/mod_khomp/include/cli.h delete mode 100644 src/mod/endpoints/mod_khomp/include/defs.h delete mode 100644 src/mod/endpoints/mod_khomp/include/frame.h delete mode 100644 src/mod/endpoints/mod_khomp/include/globals.h delete mode 100644 src/mod/endpoints/mod_khomp/include/k3l.h delete mode 100644 src/mod/endpoints/mod_khomp/include/khomp_pvt.h delete mode 100644 src/mod/endpoints/mod_khomp/include/khomp_pvt_fxo.h delete mode 100644 src/mod/endpoints/mod_khomp/include/khomp_pvt_gsm.h delete mode 100644 src/mod/endpoints/mod_khomp/include/khomp_pvt_kxe1.h delete mode 100644 src/mod/endpoints/mod_khomp/include/khomp_pvt_passive.h delete mode 100644 src/mod/endpoints/mod_khomp/include/lock.h delete mode 100644 src/mod/endpoints/mod_khomp/include/logger.h delete mode 100644 src/mod/endpoints/mod_khomp/include/opt.h delete mode 100644 src/mod/endpoints/mod_khomp/include/revision.h delete mode 100644 src/mod/endpoints/mod_khomp/include/spec.h delete mode 100644 src/mod/endpoints/mod_khomp/include/utils.h delete mode 100644 src/mod/endpoints/mod_khomp/mod_khomp.cpp delete mode 100644 src/mod/endpoints/mod_khomp/src/applications.cpp delete mode 100644 src/mod/endpoints/mod_khomp/src/cli.cpp delete mode 100644 src/mod/endpoints/mod_khomp/src/frame.cpp delete mode 100644 src/mod/endpoints/mod_khomp/src/globals.cpp delete mode 100644 src/mod/endpoints/mod_khomp/src/khomp_pvt.cpp delete mode 100644 src/mod/endpoints/mod_khomp/src/khomp_pvt_fxo.cpp delete mode 100644 src/mod/endpoints/mod_khomp/src/khomp_pvt_gsm.cpp delete mode 100644 src/mod/endpoints/mod_khomp/src/khomp_pvt_kxe1.cpp delete mode 100644 src/mod/endpoints/mod_khomp/src/khomp_pvt_passive.cpp delete mode 100644 src/mod/endpoints/mod_khomp/src/lock.cpp delete mode 100644 src/mod/endpoints/mod_khomp/src/logger.cpp delete mode 100644 src/mod/endpoints/mod_khomp/src/opt.cpp delete mode 100644 src/mod/endpoints/mod_khomp/src/spec.cpp delete mode 100644 src/mod/endpoints/mod_khomp/src/utils.cpp delete mode 100644 src/mod/endpoints/mod_khomp/support/config_defaults.cpp delete mode 100644 src/mod/endpoints/mod_khomp/support/config_defaults.hpp delete mode 100644 src/mod/endpoints/mod_khomp/support/klog-config.cpp delete mode 100644 src/mod/endpoints/mod_khomp/support/klog-config.hpp delete mode 100644 src/mod/endpoints/mod_khomp/support/klog-options.cpp delete mode 100644 src/mod/endpoints/mod_khomp/support/klog-options.hpp delete mode 100755 src/mod/endpoints/mod_khomp/tools/getk3l.sh delete mode 100755 src/mod/endpoints/mod_khomp/tools/getversion.sh delete mode 100644 src/mod/endpoints/mod_skypopen/alsa/pcm_lib.c delete mode 100644 src/mod/endpoints/mod_skypopen/alsa/pcm_native.c delete mode 100644 src/mod/endpoints/mod_skypopen/oss/Makefile delete mode 100644 src/mod/endpoints/mod_skypopen/oss/main.c delete mode 100644 src/mod/endpoints/mod_skypopen/oss/skypopen.h delete mode 100644 src/mod/endpoints/mod_skypopen/osscuse/98-osscuse.rules delete mode 100644 src/mod/endpoints/mod_skypopen/osscuse/LICENSE delete mode 100644 src/mod/endpoints/mod_skypopen/osscuse/Makefile delete mode 100644 src/mod/endpoints/mod_skypopen/osscuse/README delete mode 100644 src/mod/endpoints/mod_skypopen/osscuse/ossp-alsap.c delete mode 100644 src/mod/endpoints/mod_skypopen/osscuse/ossp-slave.c delete mode 100644 src/mod/endpoints/mod_skypopen/osscuse/ossp-slave.h delete mode 100644 src/mod/endpoints/mod_skypopen/osscuse/ossp-util.c delete mode 100644 src/mod/endpoints/mod_skypopen/osscuse/ossp-util.h delete mode 100644 src/mod/endpoints/mod_skypopen/osscuse/ossp.c delete mode 100644 src/mod/endpoints/mod_skypopen/osscuse/ossp.h delete mode 100644 src/mod/endpoints/mod_skypopen/osscuse/osspd.c delete mode 100644 src/mod/event_handlers/mod_cdr_sqlite/Makefile delete mode 100644 src/mod/event_handlers/mod_cdr_sqlite/mod_cdr_sqlite.c delete mode 100644 src/mod/event_handlers/mod_snmp/FREESWITCH-MIB delete mode 100644 src/mod/event_handlers/mod_snmp/Makefile delete mode 100644 src/mod/event_handlers/mod_snmp/mod_snmp.c delete mode 100644 src/mod/event_handlers/mod_snmp/subagent.c delete mode 100644 src/mod/event_handlers/mod_snmp/subagent.h delete mode 100644 src/mod/formats/mod_shout/hack_out_ogg.diff delete mode 100644 src/mod/formats/mod_shout/mod_shout.vcxproj.filters delete mode 100644 src/mod/languages/mod_managed/mono28.patch delete mode 100644 src/mod/languages/mod_managed/runswig.2010.cmd delete mode 100644 src/mod/say/mod_say_ja/mod_say_ja.c delete mode 100644 src/mod/say/mod_say_pt/Makefile delete mode 100644 src/mod/say/mod_say_pt/mod_say_pt.2008.vcproj delete mode 100644 src/mod/say/mod_say_pt/mod_say_pt.2010.vcxproj delete mode 100644 src/mod/say/mod_say_pt/mod_say_pt.c delete mode 100644 src/mod/say/mod_say_pt/mod_say_pt.vcproj delete mode 100644 src/tone2wav.c mode change 100755 => 100644 support-d/.gdbinit delete mode 100644 w32/Console/FreeSwitchConsole.2010.vcxproj.filters delete mode 100644 w32/Setup/Product.wxs delete mode 100644 w32/Setup/Setup.wixproj hooks/post-receive -- FreeSWITCH From git at svn.freeswitch.org Mon Jan 31 23:16:00 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Mon, 31 Jan 2011 14:16:00 -0600 Subject: [Freeswitch-trunk] [GIT]FreeSWITCH branch master updated. v1.0.6-1120-gd395b65 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "FreeSWITCH". The branch, master has been updated via d395b654fb0abab4889d5b8c239728683e772959 (commit) from acd56d2fe2a0458801010cc6b03c524023cbc597 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit d395b654fb0abab4889d5b8c239728683e772959 Author: Luke Dashjr Date: Sun Aug 22 18:07:24 2010 -0500 expose ASR start_input_timers to dialplan via mod_dptools diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index 5a1b8c5..2f49630 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -28,6 +28,7 @@ * Michael Murdock * Neal Horman * Bret McDanel + * Luke Dashjr (OpenMethods, LLC) * * mod_dptools.c -- Raw Audio File Streaming Application Module * @@ -95,7 +96,7 @@ SWITCH_STANDARD_DIALPLAN(inline_dialplan_hunt) return extension; } -#define DETECT_SPEECH_SYNTAX " [] OR grammar [] OR pause OR resume" +#define DETECT_SPEECH_SYNTAX " [] OR grammar [] OR pause OR resume OR start_input_timers" SWITCH_STANDARD_APP(detect_speech_function) { char *argv[4]; @@ -116,6 +117,8 @@ SWITCH_STANDARD_APP(detect_speech_function) switch_ivr_stop_detect_speech(session); } else if (!strcasecmp(argv[0], "param")) { switch_ivr_set_param_detect_speech(session, argv[1], argv[2]); + } else if (!strcasecmp(argv[0], "start_input_timers")) { + switch_ivr_detect_speech_start_input_timers(session); } else if (argc >= 3) { switch_ivr_detect_speech(session, argv[0], argv[1], argv[2], argv[3], NULL); } ----------------------------------------------------------------------- Summary of changes: src/mod/applications/mod_dptools/mod_dptools.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) hooks/post-receive -- FreeSWITCH From git at svn.freeswitch.org Mon Jan 31 23:16:03 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Mon, 31 Jan 2011 14:16:03 -0600 Subject: [Freeswitch-trunk] [GIT]FreeSWITCH branch master updated. v1.0.6-1119-g439df43 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "FreeSWITCH". The branch, master has been updated discards d395b654fb0abab4889d5b8c239728683e772959 (commit) discards acd56d2fe2a0458801010cc6b03c524023cbc597 (commit) via 439df43cae04a053a1c22befdd7f1009f6cb6dfa (commit) This update added new revisions after undoing existing revisions. That is to say, the old revision is not a strict subset of the new revision. This situation occurs when you --force push a change and generate a repository containing something like this: * -- * -- B -- O -- O -- O (d395b654fb0abab4889d5b8c239728683e772959) \ N -- N -- N (439df43cae04a053a1c22befdd7f1009f6cb6dfa) When this happens we assume that you've already had alert emails for all of the O revisions, and so we here report only the revisions in the N branch from the common base, B. Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 439df43cae04a053a1c22befdd7f1009f6cb6dfa Author: Luke Dashjr Date: Sun Aug 22 18:17:36 2010 -0500 document all of detect_speech's valid syntax diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index 5a1b8c5..6d014fa 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -28,6 +28,7 @@ * Michael Murdock * Neal Horman * Bret McDanel + * Luke Dashjr (OpenMethods, LLC) * * mod_dptools.c -- Raw Audio File Streaming Application Module * @@ -95,7 +96,7 @@ SWITCH_STANDARD_DIALPLAN(inline_dialplan_hunt) return extension; } -#define DETECT_SPEECH_SYNTAX " [] OR grammar [] OR pause OR resume" +#define DETECT_SPEECH_SYNTAX " [] OR grammar [] OR nogrammar OR pause OR resume OR stop OR param " SWITCH_STANDARD_APP(detect_speech_function) { char *argv[4]; ----------------------------------------------------------------------- Summary of changes: src/include/switch_ivr.h | 8 -------- src/mod/applications/mod_dptools/mod_dptools.c | 4 +--- src/switch_ivr_async.c | 13 ------------- 3 files changed, 1 insertions(+), 24 deletions(-) hooks/post-receive -- FreeSWITCH From git at svn.freeswitch.org Mon Jan 31 23:16:07 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Mon, 31 Jan 2011 14:16:07 -0600 Subject: [Freeswitch-trunk] [GIT]FreeSWITCH branch master updated. v1.0.6-1119-ge719ae6 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "FreeSWITCH". The branch, master has been updated discards 439df43cae04a053a1c22befdd7f1009f6cb6dfa (commit) via e719ae662b7cb08ebd7f8e732a140e9aeb502960 (commit) This update added new revisions after undoing existing revisions. That is to say, the old revision is not a strict subset of the new revision. This situation occurs when you --force push a change and generate a repository containing something like this: * -- * -- B -- O -- O -- O (439df43cae04a053a1c22befdd7f1009f6cb6dfa) \ N -- N -- N (e719ae662b7cb08ebd7f8e732a140e9aeb502960) When this happens we assume that you've already had alert emails for all of the O revisions, and so we here report only the revisions in the N branch from the common base, B. Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit e719ae662b7cb08ebd7f8e732a140e9aeb502960 Author: Luke Dashjr Date: Sat Aug 21 17:44:42 2010 -0500 Allow loading grammars without sending RECOGNIZE with start-recognize=false parameter diff --git a/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c b/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c index 41c0ccd..a27ddf0 100644 --- a/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c +++ b/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c @@ -26,6 +26,7 @@ * * Brian West * Christopher M. Rienzo + * Luke Dashjr (OpenMethods, LLC) * * mod_unimrcp.c -- UniMRCP module (MRCP client) * @@ -2451,6 +2452,8 @@ static switch_status_t recog_channel_set_params(speech_channel_t *schannel, mrcp if (id) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "(%s) \"%s\": \"%s\"\n", schannel->name, param_name, param_val); recog_channel_set_header(schannel, id->id, param_val, msg, recog_hdr); + } else if (!strcasecmp(param_name, "start-recognize")) { + // This parameter is used internally only, not in MRCP headers } else { /* this is probably a vendor-specific MRCP param */ apt_str_t apt_param_name = { 0 }; @@ -2782,6 +2785,7 @@ static switch_status_t recog_asr_load_grammar(switch_asr_handle_t *ah, const cha speech_channel_t *schannel = (speech_channel_t *) ah->private_info; const char *grammar_data = NULL; char *grammar_file_data = NULL; + char *start_recognize; switch_file_t *grammar_file = NULL; switch_size_t grammar_file_size = 0, to_read = 0; grammar_type_t type = GRAMMAR_TYPE_UNKNOWN; @@ -2886,7 +2890,9 @@ static switch_status_t recog_asr_load_grammar(switch_asr_handle_t *ah, const cha goto done; } - status = recog_channel_start(schannel, name); + start_recognize = (char *) switch_core_hash_find(schannel->params, "start-recognize"); + if (zstr(start_recognize) || strcasecmp(start_recognize, "false")) + status = recog_channel_start(schannel, name); done: ----------------------------------------------------------------------- Summary of changes: src/mod/applications/mod_dptools/mod_dptools.c | 3 +-- src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c | 8 +++++++- 2 files changed, 8 insertions(+), 3 deletions(-) hooks/post-receive -- FreeSWITCH From git at svn.freeswitch.org Mon Jan 31 23:16:10 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Mon, 31 Jan 2011 14:16:10 -0600 Subject: [Freeswitch-trunk] [GIT]FreeSWITCH branch master updated. v1.0.6-1120-g4cbdfbe Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "FreeSWITCH". The branch, master has been updated via 4cbdfbe481d7f9b448663418dccc88b017f9ce69 (commit) from e719ae662b7cb08ebd7f8e732a140e9aeb502960 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4cbdfbe481d7f9b448663418dccc88b017f9ce69 Author: Luke Dashjr Date: Sat Aug 21 19:43:53 2010 -0500 switch_core_asr interfaces for enable_grammar, disable_grammar, and disable_all_grammars diff --git a/src/include/switch_core.h b/src/include/switch_core.h index 650ffc1..26a048c 100644 --- a/src/include/switch_core.h +++ b/src/include/switch_core.h @@ -24,6 +24,7 @@ * Contributor(s): * * Anthony Minessale II + * Luke Dashjr (OpenMethods, LLC) * * * switch_core.h -- Core Library @@ -1748,6 +1749,29 @@ SWITCH_DECLARE(switch_status_t) switch_core_asr_load_grammar(switch_asr_handle_t SWITCH_DECLARE(switch_status_t) switch_core_asr_unload_grammar(switch_asr_handle_t *ah, const char *name); /*! + \brief Enable a grammar from an asr handle + \param ah the handle to enable the grammar from + \param name the name of the grammar to enable + \return SWITCH_STATUS_SUCCESS +*/ +SWITCH_DECLARE(switch_status_t) switch_core_asr_enable_grammar(switch_asr_handle_t *ah, const char *name); + +/*! + \brief Disable a grammar from an asr handle + \param ah the handle to disable the grammar from + \param name the name of the grammar to disable + \return SWITCH_STATUS_SUCCESS +*/ +SWITCH_DECLARE(switch_status_t) switch_core_asr_disable_grammar(switch_asr_handle_t *ah, const char *name); + +/*! + \brief Disable all grammars from an asr handle + \param ah the handle to disable the grammars from + \return SWITCH_STATUS_SUCCESS +*/ +SWITCH_DECLARE(switch_status_t) switch_core_asr_disable_all_grammars(switch_asr_handle_t *ah); + +/*! \brief Pause detection on an asr handle \param ah the handle to pause \return SWITCH_STATUS_SUCCESS diff --git a/src/include/switch_module_interfaces.h b/src/include/switch_module_interfaces.h index 078b83d..e0119b4 100644 --- a/src/include/switch_module_interfaces.h +++ b/src/include/switch_module_interfaces.h @@ -24,6 +24,7 @@ * Contributor(s): * * Anthony Minessale II + * Luke Dashjr (OpenMethods, LLC) * * * switch_module_interfaces.h -- Module Interface Definitions @@ -393,6 +394,12 @@ struct switch_asr_interface { switch_mutex_t *reflock; switch_loadable_module_interface_t *parent; struct switch_asr_interface *next; + /*! function to enable a grammar to the asr interface */ + switch_status_t (*asr_enable_grammar) (switch_asr_handle_t *ah, const char *name); + /*! function to disable a grammar to the asr interface */ + switch_status_t (*asr_disable_grammar) (switch_asr_handle_t *ah, const char *name); + /*! function to disable all grammars to the asr interface */ + switch_status_t (*asr_disable_all_grammars) (switch_asr_handle_t *ah); }; /*! an abstract representation of an asr speech interface. */ diff --git a/src/switch_core_asr.c b/src/switch_core_asr.c index fa4446e..691011a 100644 --- a/src/switch_core_asr.c +++ b/src/switch_core_asr.c @@ -27,6 +27,7 @@ * Michael Jerris * Paul D. Tinsley * Christopher M. Rienzo + * Luke Dashjr (OpenMethods, LLC) * * * switch_core_asr.c -- Main Core Library (Speech Detection Interface) @@ -160,6 +161,45 @@ SWITCH_DECLARE(switch_status_t) switch_core_asr_unload_grammar(switch_asr_handle return status; } +SWITCH_DECLARE(switch_status_t) switch_core_asr_enable_grammar(switch_asr_handle_t *ah, const char *name) +{ + switch_status_t status = SWITCH_STATUS_FALSE; + + switch_assert(ah != NULL); + + if (ah->asr_interface->asr_enable_grammar) { + status = ah->asr_interface->asr_enable_grammar(ah, name); + } + + return status; +} + +SWITCH_DECLARE(switch_status_t) switch_core_asr_disable_grammar(switch_asr_handle_t *ah, const char *name) +{ + switch_status_t status = SWITCH_STATUS_FALSE; + + switch_assert(ah != NULL); + + if (ah->asr_interface->asr_disable_grammar) { + status = ah->asr_interface->asr_disable_grammar(ah, name); + } + + return status; +} + +SWITCH_DECLARE(switch_status_t) switch_core_asr_disable_all_grammars(switch_asr_handle_t *ah) +{ + switch_status_t status = SWITCH_STATUS_FALSE; + + switch_assert(ah != NULL); + + if (ah->asr_interface->asr_disable_all_grammars) { + status = ah->asr_interface->asr_disable_all_grammars(ah); + } + + return status; +} + SWITCH_DECLARE(switch_status_t) switch_core_asr_pause(switch_asr_handle_t *ah) { switch_assert(ah != NULL); ----------------------------------------------------------------------- Summary of changes: src/include/switch_core.h | 24 +++++++++++++++++++ src/include/switch_module_interfaces.h | 7 +++++ src/switch_core_asr.c | 40 ++++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 0 deletions(-) hooks/post-receive -- FreeSWITCH From git at svn.freeswitch.org Mon Jan 31 23:16:14 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Mon, 31 Jan 2011 14:16:14 -0600 Subject: [Freeswitch-trunk] [GIT]FreeSWITCH branch master updated. v1.0.6-1121-g128d53c Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "FreeSWITCH". The branch, master has been updated via 128d53c2e6a73a6136efcfffa4e880e6635e43f1 (commit) from 4cbdfbe481d7f9b448663418dccc88b017f9ce69 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 128d53c2e6a73a6136efcfffa4e880e6635e43f1 Author: Luke Dashjr Date: Sat Aug 21 19:46:35 2010 -0500 Implement UniMRCP asr_enable_grammar, asr_disable_grammar, and asr_disable_all_grammars which allow for multiple grammar recognition diff --git a/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c b/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c index a27ddf0..b9cecd1 100644 --- a/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c +++ b/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c @@ -434,8 +434,8 @@ static const char *grammar_type_to_mime(grammar_type_t type, profile_t *profile) struct recognizer_data { /** the available grammars */ switch_hash_t *grammars; - /** the last grammar used (for pause/resume) */ - grammar_t *last_grammar; + /** the enabled grammars */ + switch_hash_t *enabled_grammars; /** recognize result */ char *result; /** true, if voice has started */ @@ -452,6 +452,9 @@ static switch_status_t recog_shutdown(); static switch_status_t recog_asr_open(switch_asr_handle_t *ah, const char *codec, int rate, const char *dest, switch_asr_flag_t *flags); static switch_status_t recog_asr_load_grammar(switch_asr_handle_t *ah, const char *grammar, const char *name); static switch_status_t recog_asr_unload_grammar(switch_asr_handle_t *ah, const char *name); +static switch_status_t recog_asr_enable_grammar(switch_asr_handle_t *ah, const char *name); +static switch_status_t recog_asr_disable_grammar(switch_asr_handle_t *ah, const char *name); +static switch_status_t recog_asr_disable_all_grammars(switch_asr_handle_t *ah); static switch_status_t recog_asr_close(switch_asr_handle_t *ah, switch_asr_flag_t *flags); static switch_status_t recog_asr_feed(switch_asr_handle_t *ah, void *data, unsigned int len, switch_asr_flag_t *flags); #if 0 @@ -472,9 +475,12 @@ static apt_bool_t recog_on_message_receive(mrcp_application_t *application, mrcp static apt_bool_t recog_stream_read(mpf_audio_stream_t *stream, mpf_frame_t *frame); /* recognizer specific speech_channel_funcs */ -static switch_status_t recog_channel_start(speech_channel_t *schannel, const char *name); +static switch_status_t recog_channel_start(speech_channel_t *schannel); static switch_status_t recog_channel_load_grammar(speech_channel_t *schannel, const char *name, grammar_type_t type, const char *data); static switch_status_t recog_channel_unload_grammar(speech_channel_t *schannel, const char *name); +static switch_status_t recog_channel_enable_grammar(speech_channel_t *schannel, const char *name); +static switch_status_t recog_channel_disable_grammar(speech_channel_t *schannel, const char *name); +static switch_status_t recog_channel_disable_all_grammars(speech_channel_t *schannel); static switch_status_t recog_channel_check_results(speech_channel_t *schannel); static switch_status_t recog_channel_set_start_of_input(speech_channel_t *schannel); static switch_status_t recog_channel_start_input_timers(speech_channel_t *schannel); @@ -2056,19 +2062,24 @@ static const char *grammar_type_to_mime(grammar_type_t type, profile_t *profile) * Start RECOGNIZE request * * @param schannel the channel to start - * @param name the name of the grammar to use or NULL if to reuse the last grammar * @return SWITCH_STATUS_SUCCESS if successful */ -static switch_status_t recog_channel_start(speech_channel_t *schannel, const char *name) +static switch_status_t recog_channel_start(speech_channel_t *schannel) { switch_status_t status = SWITCH_STATUS_SUCCESS; + switch_hash_index_t *egk; mrcp_message_t *mrcp_message; mrcp_recog_header_t *recog_header; mrcp_generic_header_t *generic_header; recognizer_data_t *r; char *start_input_timers; const char *mime_type; - grammar_t *grammar = NULL; + char *key; + switch_size_t len; + grammar_t *grammar; + switch_size_t grammar_uri_count = 0; + switch_size_t grammar_uri_list_len = 0; + char *grammar_uri_list = NULL; switch_mutex_lock(schannel->mutex); if (schannel->state != SPEECH_CHANNEL_READY) { @@ -2089,21 +2100,55 @@ static switch_status_t recog_channel_start(speech_channel_t *schannel, const cha start_input_timers = (char *) switch_core_hash_find(schannel->params, "start-input-timers"); r->timers_started = zstr(start_input_timers) || strcasecmp(start_input_timers, "false"); - /* get the cached grammar */ - if (zstr(name)) { - grammar = r->last_grammar; - } else { - grammar = (grammar_t *) switch_core_hash_find(r->grammars, name); - r->last_grammar = grammar; - } - if (grammar == NULL) { - if (name) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "(%s) Undefined grammar, %s\n", schannel->name, name); - } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "(%s) No grammar specified\n", schannel->name); + /* count enabled grammars */ + for (egk = switch_hash_first(NULL, r->enabled_grammars); egk; egk = switch_hash_next(egk)) { + // NOTE: This postponed type check is necessary to allow a non-URI-list grammar to execute alone + if (grammar_uri_count == 1 && grammar->type != GRAMMAR_TYPE_URI) + goto no_grammar_alone; + ++grammar_uri_count; + switch_hash_this(egk, (void *) &key, NULL, (void *) &grammar); + if (grammar->type != GRAMMAR_TYPE_URI && grammar_uri_count != 1) { + no_grammar_alone: + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "(%s) Grammar '%s' can only be used alone (not a URI list)\n", schannel->name, key); + status = SWITCH_STATUS_FALSE; + goto done; } + len = strlen(grammar->data); + if (!len) + continue; + grammar_uri_list_len += len; + if (grammar->data[len - 1] != '\n') + grammar_uri_list_len += 2; + } + + switch (grammar_uri_count) { + case 0: + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "(%s) No grammar specified\n", schannel->name); status = SWITCH_STATUS_FALSE; goto done; + case 1: + /* grammar should already be the unique grammar */ + break; + default: + /* get the enabled grammars list */ + grammar_uri_list = switch_core_alloc(schannel->memory_pool, grammar_uri_list_len + 1); + grammar_uri_list_len = 0; + for (egk = switch_hash_first(NULL, r->enabled_grammars); egk; egk = switch_hash_next(egk)) { + switch_hash_this(egk, (void *) &key, NULL, (void *) &grammar); + len = strlen(grammar->data); + if (!len) + continue; + memcpy(&(grammar_uri_list[grammar_uri_list_len]), grammar->data, len); + grammar_uri_list_len += len; + if (grammar_uri_list[grammar_uri_list_len - 1] != '\n') + { + grammar_uri_list_len += 2; + grammar_uri_list[grammar_uri_list_len - 2] = '\r'; + grammar_uri_list[grammar_uri_list_len - 1] = '\n'; + } + } + grammar_uri_list[grammar_uri_list_len++] = '\0'; + grammar = NULL; } /* create MRCP message */ @@ -2121,7 +2166,7 @@ static switch_status_t recog_channel_start(speech_channel_t *schannel, const cha } /* set Content-Type */ - mime_type = grammar_type_to_mime(grammar->type, schannel->profile); + mime_type = grammar_type_to_mime(grammar ? grammar->type : GRAMMAR_TYPE_URI, schannel->profile); if (zstr(mime_type)) { status = SWITCH_STATUS_FALSE; goto done; @@ -2130,7 +2175,7 @@ static switch_status_t recog_channel_start(speech_channel_t *schannel, const cha mrcp_generic_header_property_add(mrcp_message, GENERIC_HEADER_CONTENT_TYPE); /* set Content-ID for inline grammars */ - if (grammar->type != GRAMMAR_TYPE_URI) { + if (grammar && grammar->type != GRAMMAR_TYPE_URI) { apt_string_assign(&generic_header->content_id, grammar->name, mrcp_message->pool); mrcp_generic_header_property_add(mrcp_message, GENERIC_HEADER_CONTENT_ID); } @@ -2152,7 +2197,7 @@ static switch_status_t recog_channel_start(speech_channel_t *schannel, const cha recog_channel_set_params(schannel, mrcp_message, generic_header, recog_header); /* set message body */ - apt_string_assign(&mrcp_message->body, grammar->data, mrcp_message->pool); + apt_string_assign(&mrcp_message->body, grammar ? grammar->data : grammar_uri_list, mrcp_message->pool); /* Empty audio queue and send RECOGNIZE to MRCP server */ audio_queue_clear(schannel->audio_queue); @@ -2287,6 +2332,7 @@ static switch_status_t recog_channel_unload_grammar(speech_channel_t *schannel, } else { recognizer_data_t *r = (recognizer_data_t *) schannel->data; switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "(%s) Unloading grammar %s\n", schannel->name, grammar_name); + switch_core_hash_delete(r->enabled_grammars, grammar_name); switch_core_hash_delete(r->grammars, grammar_name); } @@ -2294,6 +2340,77 @@ static switch_status_t recog_channel_unload_grammar(speech_channel_t *schannel, } /** + * Enable speech recognition grammar + * + * @param schannel the recognizer channel + * @param grammar_name the name of the grammar to enable + * @return SWITCH_STATUS_SUCCESS if successful + */ +static switch_status_t recog_channel_enable_grammar(speech_channel_t *schannel, const char *grammar_name) +{ + switch_status_t status = SWITCH_STATUS_SUCCESS; + + if (zstr(grammar_name)) { + status = SWITCH_STATUS_FALSE; + } else { + recognizer_data_t *r = (recognizer_data_t *) schannel->data; + grammar_t *grammar; + grammar = (grammar_t *) switch_core_hash_find(r->grammars, grammar_name); + if (grammar == NULL) + { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "(%s) Undefined grammar, %s\n", schannel->name, grammar_name); + status = SWITCH_STATUS_FALSE; + } + else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "(%s) Enabling grammar %s\n", schannel->name, grammar_name); + switch_core_hash_insert(r->enabled_grammars, grammar_name, grammar); + } + } + + return status; +} + +/** + * Disable speech recognition grammar + * + * @param schannel the recognizer channel + * @param grammar_name the name of the grammar to disable + * @return SWITCH_STATUS_SUCCESS if successful + */ +static switch_status_t recog_channel_disable_grammar(speech_channel_t *schannel, const char *grammar_name) +{ + switch_status_t status = SWITCH_STATUS_SUCCESS; + + if (zstr(grammar_name)) { + status = SWITCH_STATUS_FALSE; + } else { + recognizer_data_t *r = (recognizer_data_t *) schannel->data; + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "(%s) Disabling grammar %s\n", schannel->name, grammar_name); + switch_core_hash_delete(r->enabled_grammars, grammar_name); + } + + return status; +} + +/** + * Disable all speech recognition grammars + * + * @param schannel the recognizer channel + * @return SWITCH_STATUS_SUCCESS if successful + */ +static switch_status_t recog_channel_disable_all_grammars(speech_channel_t *schannel) +{ + switch_status_t status = SWITCH_STATUS_SUCCESS; + + recognizer_data_t *r = (recognizer_data_t *) schannel->data; + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "(%s) Disabling all grammars\n", schannel->name); + switch_core_hash_destroy(&r->enabled_grammars); + switch_core_hash_init(&r->enabled_grammars, schannel->memory_pool); + + return status; +} + +/** * Check if recognition is complete * * @return SWITCH_STATUS_SUCCESS if results available or start of input @@ -2740,6 +2857,7 @@ static switch_status_t recog_asr_open(switch_asr_handle_t *ah, const char *codec schannel->data = r; memset(r, 0, sizeof(recognizer_data_t)); switch_core_hash_init(&r->grammars, ah->memory_pool); + switch_core_hash_init(&r->enabled_grammars, ah->memory_pool); /* Open the channel */ if (zstr(profile_name)) { @@ -2892,7 +3010,17 @@ static switch_status_t recog_asr_load_grammar(switch_asr_handle_t *ah, const cha start_recognize = (char *) switch_core_hash_find(schannel->params, "start-recognize"); if (zstr(start_recognize) || strcasecmp(start_recognize, "false")) - status = recog_channel_start(schannel, name); + { + if (recog_channel_disable_all_grammars(schannel) != SWITCH_STATUS_SUCCESS) { + status = SWITCH_STATUS_FALSE; + goto done; + } + if (recog_channel_enable_grammar(schannel, name) != SWITCH_STATUS_SUCCESS) { + status = SWITCH_STATUS_FALSE; + goto done; + } + status = recog_channel_start(schannel); + } done: @@ -2921,6 +3049,57 @@ static switch_status_t recog_asr_unload_grammar(switch_asr_handle_t *ah, const c } /** + * Process asr_enable_grammar request from FreeSWITCH. + * + * FreeSWITCH sends this request to enable recognition on this grammar. + * @param ah the FreeSWITCH speech recognition handle + * @param name the grammar name. + */ +static switch_status_t recog_asr_enable_grammar(switch_asr_handle_t *ah, const char *name) +{ + switch_status_t status = SWITCH_STATUS_SUCCESS; + speech_channel_t *schannel = (speech_channel_t *) ah->private_info; + if (zstr(name) || speech_channel_stop(schannel) != SWITCH_STATUS_SUCCESS || recog_channel_enable_grammar(schannel, name) != SWITCH_STATUS_SUCCESS) { + status = SWITCH_STATUS_FALSE; + } + return status; +} + +/** + * Process asr_disable_grammar request from FreeSWITCH. + * + * FreeSWITCH sends this request to disable recognition on this grammar. + * @param ah the FreeSWITCH speech recognition handle + * @param name the grammar name. + */ +static switch_status_t recog_asr_disable_grammar(switch_asr_handle_t *ah, const char *name) +{ + switch_status_t status = SWITCH_STATUS_SUCCESS; + speech_channel_t *schannel = (speech_channel_t *) ah->private_info; + if (zstr(name) || speech_channel_stop(schannel) != SWITCH_STATUS_SUCCESS || recog_channel_disable_grammar(schannel, name) != SWITCH_STATUS_SUCCESS) { + status = SWITCH_STATUS_FALSE; + } + return status; +} + +/** + * Process asr_disable_all_grammars request from FreeSWITCH. + * + * FreeSWITCH sends this request to disable recognition of all grammars. + * @param ah the FreeSWITCH speech recognition handle + * @param name the grammar name. + */ +static switch_status_t recog_asr_disable_all_grammars(switch_asr_handle_t *ah) +{ + switch_status_t status = SWITCH_STATUS_SUCCESS; + speech_channel_t *schannel = (speech_channel_t *) ah->private_info; + if (speech_channel_stop(schannel) != SWITCH_STATUS_SUCCESS || recog_channel_disable_all_grammars(schannel) != SWITCH_STATUS_SUCCESS) { + status = SWITCH_STATUS_FALSE; + } + return status; +} + +/** * Process asr_close request from FreeSWITCH * * @param ah the FreeSWITCH speech recognition handle @@ -2934,6 +3113,7 @@ static switch_status_t recog_asr_close(switch_asr_handle_t *ah, switch_asr_flag_ speech_channel_stop(schannel); speech_channel_destroy(schannel); switch_core_hash_destroy(&r->grammars); + switch_core_hash_destroy(&r->enabled_grammars); /* this lets FreeSWITCH's speech_thread know the handle is closed */ switch_set_flag(ah, SWITCH_ASR_FLAG_CLOSED); @@ -2958,14 +3138,13 @@ static switch_status_t recog_asr_feed(switch_asr_handle_t *ah, void *data, unsig /** * Process asr_start request from FreeSWITCH * @param ah the FreeSWITCH speech recognition handle - * @param name name of the grammar to use * @return SWITCH_STATUS_SUCCESS if successful */ -static switch_status_t recog_asr_start(switch_asr_handle_t *ah, const char *name) +static switch_status_t recog_asr_start(switch_asr_handle_t *ah) { switch_status_t status; speech_channel_t *schannel = (speech_channel_t *) ah->private_info; - status = recog_channel_start(schannel, name); + status = recog_channel_start(schannel); return status; } #endif @@ -2978,7 +3157,7 @@ static switch_status_t recog_asr_start(switch_asr_handle_t *ah, const char *name static switch_status_t recog_asr_resume(switch_asr_handle_t *ah) { speech_channel_t *schannel = (speech_channel_t *) ah->private_info; - return recog_channel_start(schannel, NULL); + return recog_channel_start(schannel); } /** @@ -3237,6 +3416,9 @@ static switch_status_t recog_load(switch_loadable_module_interface_t *module_int asr_interface->asr_open = recog_asr_open; asr_interface->asr_load_grammar = recog_asr_load_grammar; asr_interface->asr_unload_grammar = recog_asr_unload_grammar; + asr_interface->asr_enable_grammar = recog_asr_enable_grammar; + asr_interface->asr_disable_grammar = recog_asr_disable_grammar; + asr_interface->asr_disable_all_grammars = recog_asr_disable_all_grammars; asr_interface->asr_close = recog_asr_close; asr_interface->asr_feed = recog_asr_feed; #if 0 ----------------------------------------------------------------------- Summary of changes: src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c | 234 +++++++++++++++++++++++++---- 1 files changed, 208 insertions(+), 26 deletions(-) hooks/post-receive -- FreeSWITCH From git at svn.freeswitch.org Mon Jan 31 23:16:17 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Mon, 31 Jan 2011 14:16:17 -0600 Subject: [Freeswitch-trunk] [GIT]FreeSWITCH branch master updated. v1.0.6-1122-g6d7e019 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "FreeSWITCH". The branch, master has been updated via 6d7e019b5c0244f53c16361d2667049b430adb55 (commit) from 128d53c2e6a73a6136efcfffa4e880e6635e43f1 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 6d7e019b5c0244f53c16361d2667049b430adb55 Author: Luke Dashjr Date: Sun Aug 22 00:26:21 2010 -0500 switch_ivr interfaces to enable/disable grammar: switch_ivr_detect_speech_enable_grammar, switch_ivr_detect_speech_disable_grammar, and switch_ivr_detect_speech_disable_all_grammars diff --git a/src/include/switch_ivr.h b/src/include/switch_ivr.h index 40ba1dc..8641766 100644 --- a/src/include/switch_ivr.h +++ b/src/include/switch_ivr.h @@ -26,6 +26,7 @@ * Anthony Minessale II * Neal Horman * Bret McDanel + * Luke Dashjr (OpenMethods, LLC) * * switch_ivr.h -- IVR Library * @@ -198,6 +199,29 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_load_grammar(switch_cor */ SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_unload_grammar(switch_core_session_t *session, const char *name); +/*! + \brief Enable a grammar on a background speech detection handle + \param session The session to change the grammar on + \param name the grammar name + \return SWITCH_STATUS_SUCCESS if all is well +*/ +SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_enable_grammar(switch_core_session_t *session, const char *name); + +/*! + \brief Disable a grammar on a background speech detection handle + \param session The session to change the grammar on + \param name the grammar name + \return SWITCH_STATUS_SUCCESS if all is well +*/ +SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_disable_grammar(switch_core_session_t *session, const char *name); + +/*! + \brief Disable all grammars on a background speech detection handle + \param session The session to change the grammar on + \return SWITCH_STATUS_SUCCESS if all is well +*/ +SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_disable_all_grammars(switch_core_session_t *session); + SWITCH_DECLARE(switch_status_t) switch_ivr_set_param_detect_speech(switch_core_session_t *session, const char *name, const char *val); /*! diff --git a/src/switch_ivr_async.c b/src/switch_ivr_async.c index 4fe5732..672750a 100644 --- a/src/switch_ivr_async.c +++ b/src/switch_ivr_async.c @@ -26,6 +26,7 @@ * Anthony Minessale II * Michael Jerris * Bret McDanel + * Luke Dashjr (OpenMethods, LLC) * * switch_ivr_async.c -- IVR Library (async operations) * @@ -2745,6 +2746,57 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_unload_grammar(switch_c return SWITCH_STATUS_FALSE; } +SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_enable_grammar(switch_core_session_t *session, const char *name) +{ + switch_channel_t *channel = switch_core_session_get_channel(session); + switch_asr_flag_t flags = SWITCH_ASR_FLAG_NONE; + struct speech_thread_handle *sth = switch_channel_get_private(channel, SWITCH_SPEECH_KEY); + switch_status_t status; + + if (sth) { + if ((status = switch_core_asr_enable_grammar(sth->ah, name)) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Error enabling Grammar\n"); + switch_core_asr_close(sth->ah, &flags); + } + return status; + } + return SWITCH_STATUS_FALSE; +} + +SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_disable_grammar(switch_core_session_t *session, const char *name) +{ + switch_channel_t *channel = switch_core_session_get_channel(session); + switch_asr_flag_t flags = SWITCH_ASR_FLAG_NONE; + struct speech_thread_handle *sth = switch_channel_get_private(channel, SWITCH_SPEECH_KEY); + switch_status_t status; + + if (sth) { + if ((status = switch_core_asr_disable_grammar(sth->ah, name)) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Error disabling Grammar\n"); + switch_core_asr_close(sth->ah, &flags); + } + return status; + } + return SWITCH_STATUS_FALSE; +} + +SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_disable_all_grammars(switch_core_session_t *session) +{ + switch_channel_t *channel = switch_core_session_get_channel(session); + switch_asr_flag_t flags = SWITCH_ASR_FLAG_NONE; + struct speech_thread_handle *sth = switch_channel_get_private(channel, SWITCH_SPEECH_KEY); + switch_status_t status; + + if (sth) { + if ((status = switch_core_asr_disable_all_grammars(sth->ah)) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Error disabling all Grammars\n"); + switch_core_asr_close(sth->ah, &flags); + } + return status; + } + return SWITCH_STATUS_FALSE; +} + SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech(switch_core_session_t *session, const char *mod_name, const char *grammar, const char *name, const char *dest, switch_asr_handle_t *ah) ----------------------------------------------------------------------- Summary of changes: src/include/switch_ivr.h | 24 +++++++++++++++++++++ src/switch_ivr_async.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 0 deletions(-) hooks/post-receive -- FreeSWITCH From git at svn.freeswitch.org Mon Jan 31 23:16:20 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Mon, 31 Jan 2011 14:16:20 -0600 Subject: [Freeswitch-trunk] [GIT]FreeSWITCH branch master updated. v1.0.6-1123-g0f39c8f Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "FreeSWITCH". The branch, master has been updated via 0f39c8f9c3d8e8bce05c551e0168e476ce29437a (commit) from 6d7e019b5c0244f53c16361d2667049b430adb55 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 0f39c8f9c3d8e8bce05c551e0168e476ce29437a Author: Luke Dashjr Date: Sun Aug 22 18:12:18 2010 -0500 expose ASR enable/disable grammar (and disable all grammars) to dialplan via mod_dptools diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index 5a1b8c5..e942bc6 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -28,6 +28,7 @@ * Michael Murdock * Neal Horman * Bret McDanel + * Luke Dashjr (OpenMethods, LLC) * * mod_dptools.c -- Raw Audio File Streaming Application Module * @@ -95,7 +96,7 @@ SWITCH_STANDARD_DIALPLAN(inline_dialplan_hunt) return extension; } -#define DETECT_SPEECH_SYNTAX " [] OR grammar [] OR pause OR resume" +#define DETECT_SPEECH_SYNTAX " [] OR grammar [] OR pause OR resume OR grammaron/grammaroff OR grammarsalloff" SWITCH_STANDARD_APP(detect_speech_function) { char *argv[4]; @@ -108,6 +109,12 @@ SWITCH_STANDARD_APP(detect_speech_function) switch_ivr_detect_speech_load_grammar(session, argv[1], argv[2]); } else if (!strcasecmp(argv[0], "nogrammar")) { switch_ivr_detect_speech_unload_grammar(session, argv[1]); + } else if (!strcasecmp(argv[0], "grammaron")) { + switch_ivr_detect_speech_enable_grammar(session, argv[1]); + } else if (!strcasecmp(argv[0], "grammaroff")) { + switch_ivr_detect_speech_disable_grammar(session, argv[1]); + } else if (!strcasecmp(argv[0], "grammarsalloff")) { + switch_ivr_detect_speech_disable_all_grammars(session); } else if (!strcasecmp(argv[0], "pause")) { switch_ivr_pause_detect_speech(session); } else if (!strcasecmp(argv[0], "resume")) { ----------------------------------------------------------------------- Summary of changes: src/mod/applications/mod_dptools/mod_dptools.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) hooks/post-receive -- FreeSWITCH From git at svn.freeswitch.org Mon Jan 31 23:16:23 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Mon, 31 Jan 2011 14:16:23 -0600 Subject: [Freeswitch-trunk] [GIT]FreeSWITCH branch master updated. v1.0.6-1125-g8f483f4 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "FreeSWITCH". The branch, master has been updated via 8f483f41c78ae3dd1bad7c3378733f04438f6af1 (commit) via 439df43cae04a053a1c22befdd7f1009f6cb6dfa (commit) from 0f39c8f9c3d8e8bce05c551e0168e476ce29437a (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 8f483f41c78ae3dd1bad7c3378733f04438f6af1 Merge: 0f39c8f 439df43 Author: Luke Dashjr Date: Sun Aug 22 20:24:24 2010 -0500 MERGE: document all of detect_speech's valid syntax diff --cc src/mod/applications/mod_dptools/mod_dptools.c index e942bc6,6d014fa..f573661 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@@ -96,7 -96,7 +96,7 @@@ SWITCH_STANDARD_DIALPLAN(inline_dialpla return extension; } - #define DETECT_SPEECH_SYNTAX " [] OR grammar [] OR pause OR resume OR grammaron/grammaroff OR grammarsalloff" -#define DETECT_SPEECH_SYNTAX " [] OR grammar [] OR nogrammar OR pause OR resume OR stop OR param " ++#define DETECT_SPEECH_SYNTAX " [] OR grammar [] OR nogrammar OR grammaron/grammaroff OR grammarsalloff OR pause OR resume OR stop OR param " SWITCH_STANDARD_APP(detect_speech_function) { char *argv[4]; commit 439df43cae04a053a1c22befdd7f1009f6cb6dfa Author: Luke Dashjr Date: Sun Aug 22 18:17:36 2010 -0500 document all of detect_speech's valid syntax diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index 5a1b8c5..6d014fa 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -28,6 +28,7 @@ * Michael Murdock * Neal Horman * Bret McDanel + * Luke Dashjr (OpenMethods, LLC) * * mod_dptools.c -- Raw Audio File Streaming Application Module * @@ -95,7 +96,7 @@ SWITCH_STANDARD_DIALPLAN(inline_dialplan_hunt) return extension; } -#define DETECT_SPEECH_SYNTAX " [] OR grammar [] OR pause OR resume" +#define DETECT_SPEECH_SYNTAX " [] OR grammar [] OR nogrammar OR pause OR resume OR stop OR param " SWITCH_STANDARD_APP(detect_speech_function) { char *argv[4]; ----------------------------------------------------------------------- Summary of changes: src/mod/applications/mod_dptools/mod_dptools.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) hooks/post-receive -- FreeSWITCH From git at svn.freeswitch.org Mon Jan 31 23:16:26 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Mon, 31 Jan 2011 14:16:26 -0600 Subject: [Freeswitch-trunk] [GIT]FreeSWITCH branch master updated. v1.0.6-1128-g92a9bac Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "FreeSWITCH". The branch, master has been updated via 92a9bacc44576e7b1d41c48752af597801e41d21 (commit) via d395b654fb0abab4889d5b8c239728683e772959 (commit) via acd56d2fe2a0458801010cc6b03c524023cbc597 (commit) from 8f483f41c78ae3dd1bad7c3378733f04438f6af1 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 92a9bacc44576e7b1d41c48752af597801e41d21 Merge: 8f483f4 d395b65 Author: Luke Dashjr Date: Sun Aug 22 20:24:53 2010 -0500 MERGE: expose ASR start_input_timers to dialplan via IVR and mod_dptools diff --cc src/mod/applications/mod_dptools/mod_dptools.c index f573661,2f49630..fe089a6 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@@ -96,7 -96,7 +96,7 @@@ SWITCH_STANDARD_DIALPLAN(inline_dialpla return extension; } - #define DETECT_SPEECH_SYNTAX " [] OR grammar [] OR nogrammar OR grammaron/grammaroff OR grammarsalloff OR pause OR resume OR stop OR param " -#define DETECT_SPEECH_SYNTAX " [] OR grammar [] OR pause OR resume OR start_input_timers" ++#define DETECT_SPEECH_SYNTAX " [] OR grammar [] OR nogrammar OR grammaron/grammaroff OR grammarsalloff OR pause OR resume OR start_input_timers OR stop OR param " SWITCH_STANDARD_APP(detect_speech_function) { char *argv[4]; commit d395b654fb0abab4889d5b8c239728683e772959 Author: Luke Dashjr Date: Sun Aug 22 18:07:24 2010 -0500 expose ASR start_input_timers to dialplan via mod_dptools diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index 5a1b8c5..2f49630 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -28,6 +28,7 @@ * Michael Murdock * Neal Horman * Bret McDanel + * Luke Dashjr (OpenMethods, LLC) * * mod_dptools.c -- Raw Audio File Streaming Application Module * @@ -95,7 +96,7 @@ SWITCH_STANDARD_DIALPLAN(inline_dialplan_hunt) return extension; } -#define DETECT_SPEECH_SYNTAX " [] OR grammar [] OR pause OR resume" +#define DETECT_SPEECH_SYNTAX " [] OR grammar [] OR pause OR resume OR start_input_timers" SWITCH_STANDARD_APP(detect_speech_function) { char *argv[4]; @@ -116,6 +117,8 @@ SWITCH_STANDARD_APP(detect_speech_function) switch_ivr_stop_detect_speech(session); } else if (!strcasecmp(argv[0], "param")) { switch_ivr_set_param_detect_speech(session, argv[1], argv[2]); + } else if (!strcasecmp(argv[0], "start_input_timers")) { + switch_ivr_detect_speech_start_input_timers(session); } else if (argc >= 3) { switch_ivr_detect_speech(session, argv[0], argv[1], argv[2], argv[3], NULL); } commit acd56d2fe2a0458801010cc6b03c524023cbc597 Author: Luke Dashjr Date: Sun Aug 22 18:00:40 2010 -0500 expose ASR start_input_timers on the IVR abstraction level diff --git a/src/include/switch_ivr.h b/src/include/switch_ivr.h index 40ba1dc..692ad8d 100644 --- a/src/include/switch_ivr.h +++ b/src/include/switch_ivr.h @@ -26,6 +26,7 @@ * Anthony Minessale II * Neal Horman * Bret McDanel + * Luke Dashjr (OpenMethods, LLC) * * switch_ivr.h -- IVR Library * @@ -201,6 +202,13 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_unload_grammar(switch_c SWITCH_DECLARE(switch_status_t) switch_ivr_set_param_detect_speech(switch_core_session_t *session, const char *name, const char *val); /*! + \brief Start input timers on a background speech detection handle + \param session The session to start the timers on + \return SWITCH_STATUS_SUCCESS if all is well +*/ +SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_start_input_timers(switch_core_session_t *session); + +/*! \brief Record a session to disk \param session the session to record \param file the path to the file diff --git a/src/switch_ivr_async.c b/src/switch_ivr_async.c index 4fe5732..ae23d0a 100644 --- a/src/switch_ivr_async.c +++ b/src/switch_ivr_async.c @@ -26,6 +26,7 @@ * Anthony Minessale II * Michael Jerris * Bret McDanel + * Luke Dashjr (OpenMethods, LLC) * * switch_ivr_async.c -- IVR Library (async operations) * @@ -2728,6 +2729,18 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_set_param_detect_speech(switch_core_s return status; } +SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_start_input_timers(switch_core_session_t *session) +{ + switch_channel_t *channel = switch_core_session_get_channel(session); + struct speech_thread_handle *sth = switch_channel_get_private(channel, SWITCH_SPEECH_KEY); + + if (sth) { + switch_core_asr_start_input_timers(sth->ah); + return SWITCH_STATUS_SUCCESS; + } + return SWITCH_STATUS_FALSE; +} + SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_unload_grammar(switch_core_session_t *session, const char *name) { switch_channel_t *channel = switch_core_session_get_channel(session); ----------------------------------------------------------------------- Summary of changes: src/include/switch_ivr.h | 7 +++++++ src/mod/applications/mod_dptools/mod_dptools.c | 4 +++- src/switch_ivr_async.c | 12 ++++++++++++ 3 files changed, 22 insertions(+), 1 deletions(-) hooks/post-receive -- FreeSWITCH From git at svn.freeswitch.org Mon Jan 31 23:16:30 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Mon, 31 Jan 2011 14:16:30 -0600 Subject: [Freeswitch-trunk] [GIT]FreeSWITCH branch master updated. v1.0.6-1129-g15e65cf Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "FreeSWITCH". The branch, master has been updated via 15e65cfafb8a46caca8bb8a63d55edf817f17f2d (commit) from 92a9bacc44576e7b1d41c48752af597801e41d21 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 15e65cfafb8a46caca8bb8a63d55edf817f17f2d Author: Luke Dashjr Date: Wed Jan 26 14:40:35 2011 -0600 MERGE: DTMF recognition via ASR modules (implemented in UniMRCP) diff --git a/src/include/switch_core.h b/src/include/switch_core.h index 26a048c..a3d74e9 100644 --- a/src/include/switch_core.h +++ b/src/include/switch_core.h @@ -1715,6 +1715,15 @@ SWITCH_DECLARE(switch_status_t) switch_core_asr_close(switch_asr_handle_t *ah, s SWITCH_DECLARE(switch_status_t) switch_core_asr_feed(switch_asr_handle_t *ah, void *data, unsigned int len, switch_asr_flag_t *flags); /*! + \brief Feed DTMF to an asr handle + \param ah the handle to feed data to + \param dtmf a string of DTMF digits + \param flags flags to influence behaviour + \return SWITCH_STATUS_SUCCESS +*/ +SWITCH_DECLARE(switch_status_t) switch_core_asr_feed_dtmf(switch_asr_handle_t *ah, const switch_dtmf_t *dtmf, switch_asr_flag_t *flags); + +/*! \brief Check an asr handle for results \param ah the handle to check \param flags flags to influence behaviour diff --git a/src/include/switch_module_interfaces.h b/src/include/switch_module_interfaces.h index e0119b4..8303af7 100644 --- a/src/include/switch_module_interfaces.h +++ b/src/include/switch_module_interfaces.h @@ -400,6 +400,8 @@ struct switch_asr_interface { switch_status_t (*asr_disable_grammar) (switch_asr_handle_t *ah, const char *name); /*! function to disable all grammars to the asr interface */ switch_status_t (*asr_disable_all_grammars) (switch_asr_handle_t *ah); + /*! function to feed DTMF to the ASR */ + switch_status_t (*asr_feed_dtmf) (switch_asr_handle_t *ah, const switch_dtmf_t *dtmf, switch_asr_flag_t *flags); }; /*! an abstract representation of an asr speech interface. */ diff --git a/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c b/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c index b9cecd1..b3679cf 100644 --- a/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c +++ b/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c @@ -49,6 +49,7 @@ #include "mrcp_resource_loader.h" #include "mpf_engine.h" #include "mpf_codec_manager.h" +#include "mpf_dtmf_generator.h" #include "mpf_rtp_termination_factory.h" #include "mrcp_sofiasip_client_agent.h" #include "mrcp_unirtsp_client_agent.h" @@ -442,6 +443,12 @@ struct recognizer_data { int start_of_input; /** true, if input timers have started */ int timers_started; + /** UniMRCP mpf stream */ + mpf_audio_stream_t *unimrcp_stream; + /** DTMF generator */ + mpf_dtmf_generator_t *dtmf_generator; + /** true, if presently transmitting DTMF */ + char dtmf_generator_active; }; typedef struct recognizer_data recognizer_data_t; @@ -457,6 +464,7 @@ static switch_status_t recog_asr_disable_grammar(switch_asr_handle_t *ah, const static switch_status_t recog_asr_disable_all_grammars(switch_asr_handle_t *ah); static switch_status_t recog_asr_close(switch_asr_handle_t *ah, switch_asr_flag_t *flags); static switch_status_t recog_asr_feed(switch_asr_handle_t *ah, void *data, unsigned int len, switch_asr_flag_t *flags); +static switch_status_t recog_asr_feed_dtmf(switch_asr_handle_t *ah, const switch_dtmf_t *dtmf, switch_asr_flag_t *flags); #if 0 static switch_status_t recog_asr_start(switch_asr_handle_t *ah, const char *name); #endif @@ -472,6 +480,7 @@ static void recog_asr_float_param(switch_asr_handle_t *ah, char *param, double v /* recognizer's interface for UniMRCP */ static apt_bool_t recog_message_handler(const mrcp_app_message_t *app_message); static apt_bool_t recog_on_message_receive(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message); +static apt_bool_t recog_stream_open(mpf_audio_stream_t *stream, mpf_codec_t *codec); static apt_bool_t recog_stream_read(mpf_audio_stream_t *stream, mpf_frame_t *frame); /* recognizer specific speech_channel_funcs */ @@ -3114,6 +3123,9 @@ static switch_status_t recog_asr_close(switch_asr_handle_t *ah, switch_asr_flag_ speech_channel_destroy(schannel); switch_core_hash_destroy(&r->grammars); switch_core_hash_destroy(&r->enabled_grammars); + if (r->dtmf_generator) { + mpf_dtmf_generator_destroy(r->dtmf_generator); + } /* this lets FreeSWITCH's speech_thread know the handle is closed */ switch_set_flag(ah, SWITCH_ASR_FLAG_CLOSED); @@ -3134,6 +3146,39 @@ static switch_status_t recog_asr_feed(switch_asr_handle_t *ah, void *data, unsig return speech_channel_write(schannel, data, &slen); } +/** + * Process asr_feed_dtmf request from FreeSWITCH + * + * @param ah the FreeSWITCH speech recognition handle + * @return SWITCH_STATUS_SUCCESS if successful + */ +static switch_status_t recog_asr_feed_dtmf(switch_asr_handle_t *ah, const switch_dtmf_t *dtmf, switch_asr_flag_t *flags) +{ + speech_channel_t *schannel = (speech_channel_t *) ah->private_info; + recognizer_data_t *r = (recognizer_data_t *) schannel->data; + char digits[2]; + + if (!r->dtmf_generator) { + if (!r->unimrcp_stream) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "(%s) Cannot queue DTMF: No UniMRCP stream object open\n", schannel->name); + return SWITCH_STATUS_FALSE; + } + r->dtmf_generator = mpf_dtmf_generator_create(r->unimrcp_stream, schannel->unimrcp_session->pool); + if (!r->dtmf_generator) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "(%s) Cannot queue DTMF: Failed to create DTMF generator\n", schannel->name); + return SWITCH_STATUS_FALSE; + } + } + + digits[0] = dtmf->digit; + digits[1] = '\0'; + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "(%s) Queued DTMF: %s\n", schannel->name, digits); + mpf_dtmf_generator_enqueue(r->dtmf_generator, digits); + r->dtmf_generator_active = 1; + + return SWITCH_STATUS_SUCCESS; +} + #if 0 /** * Process asr_start request from FreeSWITCH @@ -3380,6 +3425,23 @@ static apt_bool_t recog_on_message_receive(mrcp_application_t *application, mrcp } /** + * UniMRCP callback requesting open for speech recognition + * + * @param stream the UniMRCP stream + * @param codec the codec + * @return TRUE + */ +static apt_bool_t recog_stream_open(mpf_audio_stream_t *stream, mpf_codec_t *codec) +{ + speech_channel_t *schannel = (speech_channel_t *) stream->obj; + recognizer_data_t *r = (recognizer_data_t *) schannel->data; + + r->unimrcp_stream = stream; + + return TRUE; +} + +/** * UniMRCP callback requesting next frame for speech recognition * * @param stream the UniMRCP stream @@ -3389,6 +3451,7 @@ static apt_bool_t recog_on_message_receive(mrcp_application_t *application, mrcp static apt_bool_t recog_stream_read(mpf_audio_stream_t *stream, mpf_frame_t *frame) { speech_channel_t *schannel = (speech_channel_t *) stream->obj; + recognizer_data_t *r = (recognizer_data_t *) schannel->data; switch_size_t to_read = frame->codec_frame.size; /* grab the data. pad it if there isn't enough */ @@ -3398,6 +3461,13 @@ static apt_bool_t recog_stream_read(mpf_audio_stream_t *stream, mpf_frame_t *fra } frame->type |= MEDIA_FRAME_TYPE_AUDIO; } + + if (r->dtmf_generator_active) { + if (!mpf_dtmf_generator_put_frame(r->dtmf_generator, frame)) { + if (!mpf_dtmf_generator_sending(r->dtmf_generator)) + r->dtmf_generator_active = 0; + } + } return TRUE; } @@ -3421,6 +3491,7 @@ static switch_status_t recog_load(switch_loadable_module_interface_t *module_int asr_interface->asr_disable_all_grammars = recog_asr_disable_all_grammars; asr_interface->asr_close = recog_asr_close; asr_interface->asr_feed = recog_asr_feed; + asr_interface->asr_feed_dtmf = recog_asr_feed_dtmf; #if 0 asr_interface->asr_start = recog_asr_start; #endif @@ -3443,7 +3514,7 @@ static switch_status_t recog_load(switch_loadable_module_interface_t *module_int globals.recog.dispatcher.on_channel_remove = speech_on_channel_remove; globals.recog.dispatcher.on_message_receive = recog_on_message_receive; globals.recog.audio_stream_vtable.destroy = NULL; - globals.recog.audio_stream_vtable.open_rx = NULL; + globals.recog.audio_stream_vtable.open_rx = recog_stream_open; globals.recog.audio_stream_vtable.close_rx = NULL; globals.recog.audio_stream_vtable.read_frame = recog_stream_read; globals.recog.audio_stream_vtable.open_tx = NULL; diff --git a/src/switch_core_asr.c b/src/switch_core_asr.c index 691011a..7f231ef 100644 --- a/src/switch_core_asr.c +++ b/src/switch_core_asr.c @@ -239,6 +239,19 @@ SWITCH_DECLARE(switch_status_t) switch_core_asr_feed(switch_asr_handle_t *ah, vo return ah->asr_interface->asr_feed(ah, data, len, flags); } +SWITCH_DECLARE(switch_status_t) switch_core_asr_feed_dtmf(switch_asr_handle_t *ah, const switch_dtmf_t *dtmf, switch_asr_flag_t *flags) +{ + switch_status_t status = SWITCH_STATUS_SUCCESS; + + switch_assert(ah != NULL); + + if (ah->asr_interface->asr_feed_dtmf) { + status = ah->asr_interface->asr_feed_dtmf(ah, dtmf, flags); + } + + return status; +} + SWITCH_DECLARE(switch_status_t) switch_core_asr_check_results(switch_asr_handle_t *ah, switch_asr_flag_t *flags) { switch_assert(ah != NULL); diff --git a/src/switch_ivr_async.c b/src/switch_ivr_async.c index 66cd369..5df7af3 100644 --- a/src/switch_ivr_async.c +++ b/src/switch_ivr_async.c @@ -2660,6 +2660,20 @@ static switch_bool_t speech_callback(switch_media_bug_t *bug, void *user_data, s return SWITCH_TRUE; } +static switch_status_t speech_on_dtmf(switch_core_session_t *session, const switch_dtmf_t *dtmf, switch_dtmf_direction_t direction) +{ + switch_channel_t *channel = switch_core_session_get_channel(session); + struct speech_thread_handle *sth = switch_channel_get_private(channel, SWITCH_SPEECH_KEY); + switch_status_t status = SWITCH_STATUS_SUCCESS; + switch_asr_flag_t flags = SWITCH_ASR_FLAG_NONE; + + if (switch_core_asr_feed_dtmf(sth->ah, dtmf, &flags) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error Feeding DTMF\n"); + } + + return status; +} + SWITCH_DECLARE(switch_status_t) switch_ivr_stop_detect_speech(switch_core_session_t *session) { switch_channel_t *channel = switch_core_session_get_channel(session); @@ -2875,6 +2889,11 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech(switch_core_session_t * return status; } + if ((status = switch_core_event_hook_add_recv_dtmf(session, speech_on_dtmf)) != SWITCH_STATUS_SUCCESS) { + switch_ivr_stop_detect_speech(session); + return status; + } + switch_channel_set_private(channel, SWITCH_SPEECH_KEY, sth); return SWITCH_STATUS_SUCCESS; ----------------------------------------------------------------------- Summary of changes: src/include/switch_core.h | 9 ++++ src/include/switch_module_interfaces.h | 2 + src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c | 73 ++++++++++++++++++++++++++++- src/switch_core_asr.c | 13 +++++ src/switch_ivr_async.c | 19 ++++++++ 5 files changed, 115 insertions(+), 1 deletions(-) hooks/post-receive -- FreeSWITCH From git at svn.freeswitch.org Mon Jan 31 23:17:02 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Mon, 31 Jan 2011 14:17:02 -0600 Subject: [Freeswitch-trunk] [GIT]FreeSWITCH branch master updated. git2svn-syncpoint-master-1635-g02082c9 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "FreeSWITCH". The branch, master has been updated via 02082c930cc08cd65b3ac51d2e8231e502bd8f31 (commit) via 15e65cfafb8a46caca8bb8a63d55edf817f17f2d (commit) from 89253a139117b32fa0a6dc101e53e9b830361048 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 02082c930cc08cd65b3ac51d2e8231e502bd8f31 Merge: 89253a1 15e65cf Author: Luke Dashjr Date: Wed Jan 26 14:55:24 2011 -0600 MERGE: OpenMethods DTMF recognition via ASR modules commit 15e65cfafb8a46caca8bb8a63d55edf817f17f2d Author: Luke Dashjr Date: Wed Jan 26 14:40:35 2011 -0600 MERGE: DTMF recognition via ASR modules (implemented in UniMRCP) diff --git a/src/include/switch_core.h b/src/include/switch_core.h index 26a048c..a3d74e9 100644 --- a/src/include/switch_core.h +++ b/src/include/switch_core.h @@ -1715,6 +1715,15 @@ SWITCH_DECLARE(switch_status_t) switch_core_asr_close(switch_asr_handle_t *ah, s SWITCH_DECLARE(switch_status_t) switch_core_asr_feed(switch_asr_handle_t *ah, void *data, unsigned int len, switch_asr_flag_t *flags); /*! + \brief Feed DTMF to an asr handle + \param ah the handle to feed data to + \param dtmf a string of DTMF digits + \param flags flags to influence behaviour + \return SWITCH_STATUS_SUCCESS +*/ +SWITCH_DECLARE(switch_status_t) switch_core_asr_feed_dtmf(switch_asr_handle_t *ah, const switch_dtmf_t *dtmf, switch_asr_flag_t *flags); + +/*! \brief Check an asr handle for results \param ah the handle to check \param flags flags to influence behaviour diff --git a/src/include/switch_module_interfaces.h b/src/include/switch_module_interfaces.h index e0119b4..8303af7 100644 --- a/src/include/switch_module_interfaces.h +++ b/src/include/switch_module_interfaces.h @@ -400,6 +400,8 @@ struct switch_asr_interface { switch_status_t (*asr_disable_grammar) (switch_asr_handle_t *ah, const char *name); /*! function to disable all grammars to the asr interface */ switch_status_t (*asr_disable_all_grammars) (switch_asr_handle_t *ah); + /*! function to feed DTMF to the ASR */ + switch_status_t (*asr_feed_dtmf) (switch_asr_handle_t *ah, const switch_dtmf_t *dtmf, switch_asr_flag_t *flags); }; /*! an abstract representation of an asr speech interface. */ diff --git a/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c b/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c index b9cecd1..b3679cf 100644 --- a/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c +++ b/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c @@ -49,6 +49,7 @@ #include "mrcp_resource_loader.h" #include "mpf_engine.h" #include "mpf_codec_manager.h" +#include "mpf_dtmf_generator.h" #include "mpf_rtp_termination_factory.h" #include "mrcp_sofiasip_client_agent.h" #include "mrcp_unirtsp_client_agent.h" @@ -442,6 +443,12 @@ struct recognizer_data { int start_of_input; /** true, if input timers have started */ int timers_started; + /** UniMRCP mpf stream */ + mpf_audio_stream_t *unimrcp_stream; + /** DTMF generator */ + mpf_dtmf_generator_t *dtmf_generator; + /** true, if presently transmitting DTMF */ + char dtmf_generator_active; }; typedef struct recognizer_data recognizer_data_t; @@ -457,6 +464,7 @@ static switch_status_t recog_asr_disable_grammar(switch_asr_handle_t *ah, const static switch_status_t recog_asr_disable_all_grammars(switch_asr_handle_t *ah); static switch_status_t recog_asr_close(switch_asr_handle_t *ah, switch_asr_flag_t *flags); static switch_status_t recog_asr_feed(switch_asr_handle_t *ah, void *data, unsigned int len, switch_asr_flag_t *flags); +static switch_status_t recog_asr_feed_dtmf(switch_asr_handle_t *ah, const switch_dtmf_t *dtmf, switch_asr_flag_t *flags); #if 0 static switch_status_t recog_asr_start(switch_asr_handle_t *ah, const char *name); #endif @@ -472,6 +480,7 @@ static void recog_asr_float_param(switch_asr_handle_t *ah, char *param, double v /* recognizer's interface for UniMRCP */ static apt_bool_t recog_message_handler(const mrcp_app_message_t *app_message); static apt_bool_t recog_on_message_receive(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message); +static apt_bool_t recog_stream_open(mpf_audio_stream_t *stream, mpf_codec_t *codec); static apt_bool_t recog_stream_read(mpf_audio_stream_t *stream, mpf_frame_t *frame); /* recognizer specific speech_channel_funcs */ @@ -3114,6 +3123,9 @@ static switch_status_t recog_asr_close(switch_asr_handle_t *ah, switch_asr_flag_ speech_channel_destroy(schannel); switch_core_hash_destroy(&r->grammars); switch_core_hash_destroy(&r->enabled_grammars); + if (r->dtmf_generator) { + mpf_dtmf_generator_destroy(r->dtmf_generator); + } /* this lets FreeSWITCH's speech_thread know the handle is closed */ switch_set_flag(ah, SWITCH_ASR_FLAG_CLOSED); @@ -3134,6 +3146,39 @@ static switch_status_t recog_asr_feed(switch_asr_handle_t *ah, void *data, unsig return speech_channel_write(schannel, data, &slen); } +/** + * Process asr_feed_dtmf request from FreeSWITCH + * + * @param ah the FreeSWITCH speech recognition handle + * @return SWITCH_STATUS_SUCCESS if successful + */ +static switch_status_t recog_asr_feed_dtmf(switch_asr_handle_t *ah, const switch_dtmf_t *dtmf, switch_asr_flag_t *flags) +{ + speech_channel_t *schannel = (speech_channel_t *) ah->private_info; + recognizer_data_t *r = (recognizer_data_t *) schannel->data; + char digits[2]; + + if (!r->dtmf_generator) { + if (!r->unimrcp_stream) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "(%s) Cannot queue DTMF: No UniMRCP stream object open\n", schannel->name); + return SWITCH_STATUS_FALSE; + } + r->dtmf_generator = mpf_dtmf_generator_create(r->unimrcp_stream, schannel->unimrcp_session->pool); + if (!r->dtmf_generator) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "(%s) Cannot queue DTMF: Failed to create DTMF generator\n", schannel->name); + return SWITCH_STATUS_FALSE; + } + } + + digits[0] = dtmf->digit; + digits[1] = '\0'; + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "(%s) Queued DTMF: %s\n", schannel->name, digits); + mpf_dtmf_generator_enqueue(r->dtmf_generator, digits); + r->dtmf_generator_active = 1; + + return SWITCH_STATUS_SUCCESS; +} + #if 0 /** * Process asr_start request from FreeSWITCH @@ -3380,6 +3425,23 @@ static apt_bool_t recog_on_message_receive(mrcp_application_t *application, mrcp } /** + * UniMRCP callback requesting open for speech recognition + * + * @param stream the UniMRCP stream + * @param codec the codec + * @return TRUE + */ +static apt_bool_t recog_stream_open(mpf_audio_stream_t *stream, mpf_codec_t *codec) +{ + speech_channel_t *schannel = (speech_channel_t *) stream->obj; + recognizer_data_t *r = (recognizer_data_t *) schannel->data; + + r->unimrcp_stream = stream; + + return TRUE; +} + +/** * UniMRCP callback requesting next frame for speech recognition * * @param stream the UniMRCP stream @@ -3389,6 +3451,7 @@ static apt_bool_t recog_on_message_receive(mrcp_application_t *application, mrcp static apt_bool_t recog_stream_read(mpf_audio_stream_t *stream, mpf_frame_t *frame) { speech_channel_t *schannel = (speech_channel_t *) stream->obj; + recognizer_data_t *r = (recognizer_data_t *) schannel->data; switch_size_t to_read = frame->codec_frame.size; /* grab the data. pad it if there isn't enough */ @@ -3398,6 +3461,13 @@ static apt_bool_t recog_stream_read(mpf_audio_stream_t *stream, mpf_frame_t *fra } frame->type |= MEDIA_FRAME_TYPE_AUDIO; } + + if (r->dtmf_generator_active) { + if (!mpf_dtmf_generator_put_frame(r->dtmf_generator, frame)) { + if (!mpf_dtmf_generator_sending(r->dtmf_generator)) + r->dtmf_generator_active = 0; + } + } return TRUE; } @@ -3421,6 +3491,7 @@ static switch_status_t recog_load(switch_loadable_module_interface_t *module_int asr_interface->asr_disable_all_grammars = recog_asr_disable_all_grammars; asr_interface->asr_close = recog_asr_close; asr_interface->asr_feed = recog_asr_feed; + asr_interface->asr_feed_dtmf = recog_asr_feed_dtmf; #if 0 asr_interface->asr_start = recog_asr_start; #endif @@ -3443,7 +3514,7 @@ static switch_status_t recog_load(switch_loadable_module_interface_t *module_int globals.recog.dispatcher.on_channel_remove = speech_on_channel_remove; globals.recog.dispatcher.on_message_receive = recog_on_message_receive; globals.recog.audio_stream_vtable.destroy = NULL; - globals.recog.audio_stream_vtable.open_rx = NULL; + globals.recog.audio_stream_vtable.open_rx = recog_stream_open; globals.recog.audio_stream_vtable.close_rx = NULL; globals.recog.audio_stream_vtable.read_frame = recog_stream_read; globals.recog.audio_stream_vtable.open_tx = NULL; diff --git a/src/switch_core_asr.c b/src/switch_core_asr.c index 691011a..7f231ef 100644 --- a/src/switch_core_asr.c +++ b/src/switch_core_asr.c @@ -239,6 +239,19 @@ SWITCH_DECLARE(switch_status_t) switch_core_asr_feed(switch_asr_handle_t *ah, vo return ah->asr_interface->asr_feed(ah, data, len, flags); } +SWITCH_DECLARE(switch_status_t) switch_core_asr_feed_dtmf(switch_asr_handle_t *ah, const switch_dtmf_t *dtmf, switch_asr_flag_t *flags) +{ + switch_status_t status = SWITCH_STATUS_SUCCESS; + + switch_assert(ah != NULL); + + if (ah->asr_interface->asr_feed_dtmf) { + status = ah->asr_interface->asr_feed_dtmf(ah, dtmf, flags); + } + + return status; +} + SWITCH_DECLARE(switch_status_t) switch_core_asr_check_results(switch_asr_handle_t *ah, switch_asr_flag_t *flags) { switch_assert(ah != NULL); diff --git a/src/switch_ivr_async.c b/src/switch_ivr_async.c index 66cd369..5df7af3 100644 --- a/src/switch_ivr_async.c +++ b/src/switch_ivr_async.c @@ -2660,6 +2660,20 @@ static switch_bool_t speech_callback(switch_media_bug_t *bug, void *user_data, s return SWITCH_TRUE; } +static switch_status_t speech_on_dtmf(switch_core_session_t *session, const switch_dtmf_t *dtmf, switch_dtmf_direction_t direction) +{ + switch_channel_t *channel = switch_core_session_get_channel(session); + struct speech_thread_handle *sth = switch_channel_get_private(channel, SWITCH_SPEECH_KEY); + switch_status_t status = SWITCH_STATUS_SUCCESS; + switch_asr_flag_t flags = SWITCH_ASR_FLAG_NONE; + + if (switch_core_asr_feed_dtmf(sth->ah, dtmf, &flags) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error Feeding DTMF\n"); + } + + return status; +} + SWITCH_DECLARE(switch_status_t) switch_ivr_stop_detect_speech(switch_core_session_t *session) { switch_channel_t *channel = switch_core_session_get_channel(session); @@ -2875,6 +2889,11 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech(switch_core_session_t * return status; } + if ((status = switch_core_event_hook_add_recv_dtmf(session, speech_on_dtmf)) != SWITCH_STATUS_SUCCESS) { + switch_ivr_stop_detect_speech(session); + return status; + } + switch_channel_set_private(channel, SWITCH_SPEECH_KEY, sth); return SWITCH_STATUS_SUCCESS; ----------------------------------------------------------------------- Summary of changes: src/include/switch_core.h | 9 ++++ src/include/switch_module_interfaces.h | 2 + src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c | 73 ++++++++++++++++++++++++++++- src/switch_core_asr.c | 13 +++++ src/switch_ivr_async.c | 19 ++++++++ 5 files changed, 115 insertions(+), 1 deletions(-) hooks/post-receive -- FreeSWITCH From git at svn.freeswitch.org Mon Jan 31 23:17:05 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Mon, 31 Jan 2011 14:17:05 -0600 Subject: [Freeswitch-trunk] [GIT]FreeSWITCH branch master updated. git2svn-syncpoint-master-1668-g1623e5d Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "FreeSWITCH". The branch, master has been updated via 1623e5d2952d63e2e49d454cd6fdf921a8516227 (commit) via 256a82dbf2d7f4b4e1d7527f1e6a15d8d0d38a21 (commit) via c8f5c66c3520ecda8f8dbc07dc01f1d4035058e4 (commit) via 2ad81ac82f3c3c989e4d7d11f788c43c2c6f20d8 (commit) via 49a5effcdf2cea9e0ddcf146cf3fe85d1872e654 (commit) via be3483b924a674e4c4f0f05734e7e4917634f3ca (commit) via e6e4bcea734fbfb54b901ff8b1107ddfe76b7010 (commit) via 068d36a5c95c5a4143f423b7c36cbe6d5cea36d5 (commit) via 9986f4ebf2a0c40cc99bc7f9f03f2dec6ae74645 (commit) via 6d3abd41cadef3a2bff8175487c094c80d7d9cf7 (commit) via b3ac44f555a80f8278c5f915cfb36766903905a4 (commit) via 9e6503a482ff533ff214b01a07c3432be14ff1ce (commit) via 97a2b4f9025099bdab5718a13ee36d15a6152411 (commit) via 68b2756970bd4280eba700b7439afdff374fd9e3 (commit) via 9b0c16b5d48a7b9d0ea15ac429a8ca4c8eef8693 (commit) via f05fe55594ffca6edc8f4e74204650aa219ed1ac (commit) via 08f494b80802aacf101705382f149ca4b028eb57 (commit) via daa28cfccae9b171221408f3af4f8c10283e67b3 (commit) via c64b78577f65b586ff6d7af711c79d0427fc61c5 (commit) via 9ade16e9291aa74b4483bb9b9d9db266e082f7cc (commit) via 314a2a1e2061ef321fa5f9b32a9c70ef0040cdb8 (commit) via 48c02b7cd2770f6aee1d6e89f5ecfe207231f398 (commit) via f954d21ab8f84ea3518525d6f8a5a25c5cd39d6b (commit) via f8254f81607c9b2fe8ece3c48cb6dff700bcbead (commit) via 608be370bcca24023ee9d05ee4a99c133044f0d3 (commit) via 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 (commit) via b889b44f1d632810662359f6becce869056a076c (commit) via 22c05ad542e3a36dd7dbb71bef5aca5ff009b1b9 (commit) via 008e527c0f5c86e20521c4ebacf69adcb269b08a (commit) via 425df0c78389d30561a7f025a1a3e3b2fbc5e413 (commit) via a01814794c1fb49b77a6015edc8e1ad6c925bae3 (commit) via 9ffca057f109725986b741cb6019dce620c056b7 (commit) via 6f58e6aa425283137effa286d7f8638aa035aff4 (commit) from 02082c930cc08cd65b3ac51d2e8231e502bd8f31 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 1623e5d2952d63e2e49d454cd6fdf921a8516227 Merge: 256a82d 02082c9 Author: Brian West Date: Mon Jan 31 14:13:03 2011 -0600 Merge branch 'openmethods-merged-dtmf-20110126' of git://scm.dashjr.org/var/scmroot/git/freeswitch commit 256a82dbf2d7f4b4e1d7527f1e6a15d8d0d38a21 Author: Jeff Lenk Date: Mon Jan 31 10:12:28 2011 -0600 OPENZAP-140 VS2010 build cleanup diff --git a/libs/freetdm/msvc/testboost/testboost.2010.vcxproj b/libs/freetdm/msvc/testboost/testboost.2010.vcxproj index 6206148..314440b 100644 --- a/libs/freetdm/msvc/testboost/testboost.2010.vcxproj +++ b/libs/freetdm/msvc/testboost/testboost.2010.vcxproj @@ -105,7 +105,7 @@ 4100;%(DisableSpecificWarnings) - ..\..\debug\freetdm.lib;%(AdditionalDependencies) + %(AdditionalDependencies) true Console false @@ -162,7 +162,7 @@ 4100;%(DisableSpecificWarnings) - freetdm.lib;%(AdditionalDependencies) + %(AdditionalDependencies) true Console false @@ -199,7 +199,7 @@ MachineX64 - freetdm.lib;%(AdditionalDependencies) + %(AdditionalDependencies) ../../$(PlatformName)\$(Configuration);%(AdditionalLibraryDirectories) diff --git a/libs/freetdm/msvc/testboost/testsangomaboost.2010.vcxproj b/libs/freetdm/msvc/testboost/testsangomaboost.2010.vcxproj index 5994da6..4077a60 100644 --- a/libs/freetdm/msvc/testboost/testsangomaboost.2010.vcxproj +++ b/libs/freetdm/msvc/testboost/testsangomaboost.2010.vcxproj @@ -105,7 +105,7 @@ 4100;%(DisableSpecificWarnings) - ..\..\debug\freetdm.lib;%(AdditionalDependencies) + %(AdditionalDependencies) true Console false @@ -162,7 +162,7 @@ 4100;%(DisableSpecificWarnings) - freetdm.lib;%(AdditionalDependencies) + %(AdditionalDependencies) true Console false @@ -199,7 +199,7 @@ MachineX64 - freetdm.lib;%(AdditionalDependencies) + %(AdditionalDependencies) ../../$(PlatformName)\$(Configuration);%(AdditionalLibraryDirectories) diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.2010.vcxproj b/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.2010.vcxproj index 78689c3..684e432 100644 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.2010.vcxproj +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.2010.vcxproj @@ -61,11 +61,11 @@ <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\ - $(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ true - $(SolutionDir)$(Configuration)\ - $(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ false $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ @@ -102,7 +102,7 @@ 4100;%(DisableSpecificWarnings) - freetdm.lib;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir);%(AdditionalLibraryDirectories) true Windows @@ -151,7 +151,7 @@ 4100;%(DisableSpecificWarnings) - freetdm.lib;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir);%(AdditionalLibraryDirectories) true Windows diff --git a/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.2010.vcxproj b/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.2010.vcxproj index 40d0a73..a21be22 100644 --- a/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.2010.vcxproj +++ b/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.2010.vcxproj @@ -61,14 +61,14 @@ <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\ - $(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ true $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ true - $(SolutionDir)$(Configuration)\ - $(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ false $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ commit c8f5c66c3520ecda8f8dbc07dc01f1d4035058e4 Author: Daniel Swarbrick Date: Mon Jan 31 15:41:58 2011 +0100 mostly complete implementation of channel list via SNMP diff --git a/src/mod/event_handlers/mod_snmp/FREESWITCH-MIB b/src/mod/event_handlers/mod_snmp/FREESWITCH-MIB index 11c3999..8448526 100644 --- a/src/mod/event_handlers/mod_snmp/FREESWITCH-MIB +++ b/src/mod/event_handlers/mod_snmp/FREESWITCH-MIB @@ -3,11 +3,14 @@ FREESWITCH-MIB DEFINITIONS ::= BEGIN IMPORTS OBJECT-TYPE, MODULE-IDENTITY, Integer32, Gauge32, Counter32, Counter64, TimeTicks, - enterprises, + enterprises FROM SNMPv2-SMI - DisplayString + DisplayString, DateAndTime FROM SNMPv2-TC + + InetAddressType, InetAddress + FROM INET-ADDRESS-MIB ; @@ -109,13 +112,27 @@ maxSessionsPerSecond OBJECT-TYPE ChannelEntry ::= SEQUENCE { - chanUUID DisplayString, - chanDirection DisplayString, - chanCreated DisplayString, - chanName DisplayString, - chanState DisplayString, - chanCIDName DisplayString, - chanCIDNum DisplayString + chanIndex Integer32, + chanUUID DisplayString, + chanDirection DisplayString, + chanCreated DateAndTime, + chanName DisplayString, + chanState DisplayString, + chanCIDName DisplayString, + chanCIDNum DisplayString, + chanInetAddressType InetAddressType, + chanInetAddress InetAddress, + chanDest DisplayString, + chanApplication DisplayString, + chanAppData DisplayString, + chanDialplan DisplayString, + chanContext DisplayString, + chanReadCodec DisplayString, + chanReadRate Gauge32, + chanReadBitRate Gauge32, + chanWriteCodec DisplayString, + chanWriteRate Gauge32, + chanWriteBitRate Gauge32 } channelList OBJECT-TYPE @@ -135,60 +152,172 @@ channelEntry OBJECT-TYPE INDEX { chanIndex } ::= { channelList 1 } +chanIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel SNMP index." + ::= { channelEntry 1 } + chanUUID OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION - "The channel UUID." - ::= { channelEntry 1 } + "Channel UUID." + ::= { channelEntry 2 } chanDirection OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION - "The channel direction." - ::= { channelEntry 2 } + "Channel direction." + ::= { channelEntry 3 } chanCreated OBJECT-TYPE - SYNTAX DisplayString + SYNTAX DateAndTime MAX-ACCESS read-only STATUS current DESCRIPTION "Channel creation timestamp." - ::= { channelEntry 3 } + ::= { channelEntry 4 } chanName OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION - "The channel name." - ::= { channelEntry 4 } + "Channel name." + ::= { channelEntry 5 } chanState OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION - "The channel state." - ::= { channelEntry 5 } + "Channel state." + ::= { channelEntry 6 } chanCIDName OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION - "The channel caller ID name." - ::= { channelEntry 6 } + "Channel caller ID name." + ::= { channelEntry 7 } chanCIDNum OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION - "The channel caller ID number." - ::= { channelEntry 7 } + "Channel caller ID number." + ::= { channelEntry 8 } + +chanInetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel originator's IP address type (IPv4 or IPv6)." + ::= { channelEntry 9 } + +chanInetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel originator's IP address." + ::= { channelEntry 10 } + +chanDest OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel destination." + ::= { channelEntry 11 } + +chanApplication OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel application." + ::= { channelEntry 12 } + +chanAppData OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel application data." + ::= { channelEntry 13 } + +chanDialplan OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel dialplan." + ::= { channelEntry 14 } + +chanContext OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel dialplan context." + ::= { channelEntry 15 } + +chanReadCodec OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel read codec." + ::= { channelEntry 16 } + +chanReadRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel read samples per second." + ::= { channelEntry 17 } + +chanReadBitRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel read bits per second." + ::= { channelEntry 18 } + +chanWriteCodec OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel write codec." + ::= { channelEntry 19 } + +chanWriteRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel write samples per second." + ::= { channelEntry 20 } + +chanWriteBitRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel write bits per second." + ::= { channelEntry 21 } END diff --git a/src/mod/event_handlers/mod_snmp/subagent.c b/src/mod/event_handlers/mod_snmp/subagent.c index 7b9faa7..43975ee 100644 --- a/src/mod/event_handlers/mod_snmp/subagent.c +++ b/src/mod/event_handlers/mod_snmp/subagent.c @@ -42,6 +42,17 @@ netsnmp_handler_registration *ch_reginfo; uint32_t idx; +static void time_t_to_datetime(time_t epoch, char *buf, switch_size_t buflen) +{ + struct tm *dt; + uint16_t year; + + dt = gmtime(&epoch); + year = dt->tm_year + 1900; + switch_snprintf(buf, buflen, "%c%c%c%c%c%c%c%c+%c%c", year >> 8, year & 0xff, dt->tm_mon + 1, dt->tm_mday, dt->tm_hour, dt->tm_min, dt->tm_sec, 0, 0, 0); +} + + static int sql_count_callback(void *pArg, int argc, char **argv, char **columnNames) { uint32_t *count = (uint32_t *) pArg; @@ -69,11 +80,31 @@ static int channelList_callback(void *pArg, int argc, char **argv, char **column entry->idx = idx++; strncpy(entry->uuid, argv[0], sizeof(entry->uuid)); strncpy(entry->direction, argv[1], sizeof(entry->direction)); - strncpy(entry->created, argv[2], sizeof(entry->created)); + entry->created_epoch = atoi(argv[3]); strncpy(entry->name, argv[4], sizeof(entry->name)); strncpy(entry->state, argv[5], sizeof(entry->state)); strncpy(entry->cid_name, argv[6], sizeof(entry->cid_name)); strncpy(entry->cid_num, argv[7], sizeof(entry->cid_num)); + strncpy(entry->dest, argv[9], sizeof(entry->dest)); + strncpy(entry->application, argv[10], sizeof(entry->application)); + strncpy(entry->application_data, argv[11], sizeof(entry->application_data)); + strncpy(entry->dialplan, argv[12], sizeof(entry->dialplan)); + strncpy(entry->context, argv[13], sizeof(entry->context)); + strncpy(entry->read_codec, argv[14], sizeof(entry->read_codec)); + entry->read_rate = atoi(argv[15]); + entry->read_bitrate = atoi(argv[16]); + strncpy(entry->write_codec, argv[17], sizeof(entry->write_codec)); + entry->write_rate = atoi(argv[18]); + entry->write_bitrate = atoi(argv[19]); + + memset(&entry->ip_addr, 0, sizeof(entry->ip_addr)); + if (strchr(argv[8], ':')) { + switch_inet_pton(AF_INET6, argv[8], &entry->ip_addr); + entry->addr_family = AF_INET6; + } else { + switch_inet_pton(AF_INET, argv[8], &entry->ip_addr); + entry->addr_family = AF_INET; + } netsnmp_tdata_row_add_index(row, ASN_INTEGER, &entry->idx, sizeof(entry->idx)); netsnmp_tdata_add_row(ch_table, row); @@ -128,9 +159,9 @@ void init_subagent(switch_memory_pool_t *pool) netsnmp_register_scalar_group(netsnmp_create_handler_registration("systemStats", handle_systemStats, systemStats_oid, OID_LENGTH(systemStats_oid), HANDLER_CAN_RONLY), 1, 7); ch_table_info = switch_core_alloc(pool, sizeof(netsnmp_table_registration_info)); - netsnmp_table_helper_add_index(ch_table_info, ASN_INTEGER); - ch_table_info->min_column = 1; - ch_table_info->max_column = 7; + netsnmp_table_helper_add_indexes(ch_table_info, ASN_INTEGER, 0); + ch_table_info->min_column = CH_INDEX; + ch_table_info->max_column = CH_WRITE_BITRATE; ch_table = netsnmp_tdata_create_table("channelList", 0); ch_reginfo = netsnmp_create_handler_registration("channelList", handle_channelList, channelList_oid, OID_LENGTH(channelList_oid), HANDLER_CAN_RONLY); netsnmp_tdata_register(ch_reginfo, ch_table, ch_table_info); @@ -191,15 +222,15 @@ int handle_systemStats(netsnmp_mib_handler *handler, netsnmp_handler_registratio break; case SS_SESSIONS_SINCE_STARTUP: int_val = switch_core_session_id() - 1; - snmp_set_var_typed_value(requests->requestvb, ASN_COUNTER, (u_char *) &int_val, sizeof(int_val)); + snmp_set_var_typed_integer(requests->requestvb, ASN_COUNTER, int_val); break; case SS_CURRENT_SESSIONS: int_val = switch_core_session_count(); - snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val)); + snmp_set_var_typed_integer(requests->requestvb, ASN_GAUGE, int_val); break; case SS_MAX_SESSIONS: switch_core_session_ctl(SCSC_MAX_SESSIONS, &int_val); - snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val)); + snmp_set_var_typed_integer(requests->requestvb, ASN_GAUGE, int_val); break; case SS_CURRENT_CALLS: { @@ -213,17 +244,17 @@ int handle_systemStats(netsnmp_mib_handler *handler, netsnmp_handler_registratio gethostname(hostname, sizeof(hostname)); sprintf(sql, "SELECT COUNT(*) FROM calls WHERE hostname='%s'", hostname); switch_cache_db_execute_sql_callback(dbh, sql, sql_count_callback, &int_val, NULL); - snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val)); + snmp_set_var_typed_integer(requests->requestvb, ASN_GAUGE, int_val); switch_cache_db_release_db_handle(&dbh); } break; case SS_SESSIONS_PER_SECOND: switch_core_session_ctl(SCSC_LAST_SPS, &int_val); - snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val)); + snmp_set_var_typed_integer(requests->requestvb, ASN_GAUGE, int_val); break; case SS_MAX_SESSIONS_PER_SECOND: switch_core_session_ctl(SCSC_SPS, &int_val); - snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val)); + snmp_set_var_typed_integer(requests->requestvb, ASN_GAUGE, int_val); break; default: snmp_log(LOG_WARNING, "Unregistered OID-suffix requested (%d)\n", (int) subid); @@ -246,6 +277,7 @@ int handle_channelList(netsnmp_mib_handler *handler, netsnmp_handler_registratio netsnmp_request_info *request; netsnmp_table_request_info *table_info; chan_entry_t *entry; + char dt_str[12]; switch (reqinfo->mode) { case MODE_GET: @@ -254,6 +286,9 @@ int handle_channelList(netsnmp_mib_handler *handler, netsnmp_handler_registratio entry = (chan_entry_t *) netsnmp_tdata_extract_entry(request); switch (table_info->colnum) { + case CH_INDEX: + snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER, entry->idx); + break; case CH_UUID: snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->uuid, strlen(entry->uuid)); break; @@ -261,7 +296,8 @@ int handle_channelList(netsnmp_mib_handler *handler, netsnmp_handler_registratio snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->direction, strlen(entry->direction)); break; case CH_CREATED: - snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->created, strlen(entry->created)); + time_t_to_datetime(entry->created_epoch, (char *) &dt_str, sizeof(dt_str)); + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) &dt_str, sizeof(dt_str)); break; case CH_NAME: snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->name, strlen(entry->name)); @@ -275,6 +311,53 @@ int handle_channelList(netsnmp_mib_handler *handler, netsnmp_handler_registratio case CH_CID_NUM: snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->cid_num, strlen(entry->cid_num)); break; + case CH_IP_ADDR_TYPE: + if (entry->addr_family == AF_INET6) { + snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER, INETADDRESSTYPE_IPV6); + } else { + snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER, INETADDRESSTYPE_IPV4); + } + break; + case CH_IP_ADDR: + if (entry->addr_family == AF_INET6) { + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) &entry->ip_addr.v6, sizeof(entry->ip_addr.v6)); + } else { + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) &entry->ip_addr.v4, sizeof(entry->ip_addr.v4)); + } + break; + case CH_DEST: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->dest, strlen(entry->dest)); + break; + case CH_APPLICATION: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->application, strlen(entry->application)); + break; + case CH_APPLICATION_DATA: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->application_data, strlen(entry->application_data)); + break; + case CH_DIALPLAN: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->dialplan, strlen(entry->dialplan)); + break; + case CH_CONTEXT: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->context, strlen(entry->context)); + break; + case CH_READ_CODEC: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->read_codec, strlen(entry->read_codec)); + break; + case CH_READ_RATE: + snmp_set_var_typed_value(request->requestvb, ASN_GAUGE, (u_char *) &entry->read_rate, sizeof(entry->read_rate)); + break; + case CH_READ_BITRATE: + snmp_set_var_typed_value(request->requestvb, ASN_GAUGE, (u_char *) &entry->read_bitrate, sizeof(entry->read_bitrate)); + break; + case CH_WRITE_CODEC: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->write_codec, strlen(entry->write_codec)); + break; + case CH_WRITE_RATE: + snmp_set_var_typed_value(request->requestvb, ASN_GAUGE, (u_char *) &entry->write_rate, sizeof(entry->write_rate)); + break; + case CH_WRITE_BITRATE: + snmp_set_var_typed_value(request->requestvb, ASN_GAUGE, (u_char *) &entry->write_bitrate, sizeof(entry->write_bitrate)); + break; default: snmp_log(LOG_WARNING, "Unregistered OID-suffix requested (%d)\n", table_info->colnum); netsnmp_set_request_error(reqinfo, request, SNMP_NOSUCHOBJECT); diff --git a/src/mod/event_handlers/mod_snmp/subagent.h b/src/mod/event_handlers/mod_snmp/subagent.h index 0070b2c..5da87a6 100644 --- a/src/mod/event_handlers/mod_snmp/subagent.h +++ b/src/mod/event_handlers/mod_snmp/subagent.h @@ -15,23 +15,58 @@ #define SS_MAX_SESSIONS_PER_SECOND 7 /* .1.3.6.1.4.1.27880.1.9 */ -#define CH_UUID 1 -#define CH_DIRECTION 2 -#define CH_CREATED 3 -#define CH_NAME 4 -#define CH_STATE 5 -#define CH_CID_NAME 6 -#define CH_CID_NUM 7 +#define CH_INDEX 1 +#define CH_UUID 2 +#define CH_DIRECTION 3 +#define CH_CREATED 4 +#define CH_NAME 5 +#define CH_STATE 6 +#define CH_CID_NAME 7 +#define CH_CID_NUM 8 +#define CH_IP_ADDR_TYPE 9 +#define CH_IP_ADDR 10 +#define CH_DEST 11 +#define CH_APPLICATION 12 +#define CH_APPLICATION_DATA 13 +#define CH_DIALPLAN 14 +#define CH_CONTEXT 15 +#define CH_READ_CODEC 16 +#define CH_READ_RATE 17 +#define CH_READ_BITRATE 18 +#define CH_WRITE_CODEC 19 +#define CH_WRITE_RATE 20 +#define CH_WRITE_BITRATE 21 + +/* Why aren't these in net-snmp-includes.h ? */ +#define INETADDRESSTYPE_UNKNOWN 0 +#define INETADDRESSTYPE_IPV4 1 +#define INETADDRESSTYPE_IPV6 2 +#define INETADDRESSTYPE_IPV4Z 3 +#define INETADDRESSTYPE_IPV6Z 4 +#define INETADDRESSTYPE_DNS 16 typedef struct { uint32_t idx; char uuid[38]; char direction[32]; - char created[128]; + time_t created_epoch; char name[1024]; char state[64]; char cid_name[1024]; char cid_num[256]; + ip_t ip_addr; + uint8_t addr_family; + char dest[1024]; + char application[128]; + char application_data[4096]; + char dialplan[128]; + char context[128]; + char read_codec[128]; + uint32_t read_rate; + uint32_t read_bitrate; + char write_codec[128]; + uint32_t write_rate; + uint32_t write_bitrate; } chan_entry_t; void init_subagent(switch_memory_pool_t *pool); commit 2ad81ac82f3c3c989e4d7d11f788c43c2c6f20d8 Author: Anthony Minessale Date: Sat Jan 29 13:43:59 2011 -0600 fix || where it should be or in sql stmt that may cause stray records in the calls table diff --git a/src/switch_core_sqldb.c b/src/switch_core_sqldb.c index 4167b4a..35311c9 100644 --- a/src/switch_core_sqldb.c +++ b/src/switch_core_sqldb.c @@ -1160,15 +1160,14 @@ static void core_event_handler(switch_event_t *event) case SWITCH_EVENT_CHANNEL_DESTROY: { const char *uuid = switch_event_get_header(event, "unique-id"); - const char *sig = switch_event_get_header(event, "signal_bridge"); if (uuid) { new_sql() = switch_mprintf("delete from channels where uuid='%q' and hostname='%q'", uuid, switch_core_get_variable("hostname")); - if (switch_true(sig)) { - new_sql() = switch_mprintf("delete from calls where (caller_uuid='%q' || callee_uuid='%q') and hostname='%q'", - uuid, uuid, switch_core_get_variable("hostname")); - } + + new_sql() = switch_mprintf("delete from calls where (caller_uuid='%q' or callee_uuid='%q') and hostname='%q'", + uuid, uuid, switch_core_get_variable("hostname")); + } } break; @@ -1410,7 +1409,7 @@ static void core_event_handler(switch_event_t *event) } break; case SWITCH_EVENT_CHANNEL_UNBRIDGE: - new_sql() = switch_mprintf("delete from calls where caller_uuid='%s' and hostname='%q'", + new_sql() = switch_mprintf("delete from calls where (caller_uuid='%s' or callee_uuid='%q') and hostname='%q'", switch_event_get_header_nil(event, "caller-unique-id"), switch_core_get_variable("hostname")); break; case SWITCH_EVENT_SHUTDOWN: commit 49a5effcdf2cea9e0ddcf146cf3fe85d1872e654 Author: Marc Olivier Chouinard Date: Sat Jan 29 03:09:06 2011 -0500 mod_callcenter: Add error response for queue load and queue reload (FS-2988) diff --git a/src/mod/applications/mod_callcenter/mod_callcenter.c b/src/mod/applications/mod_callcenter/mod_callcenter.c index d1de632..61305bb 100644 --- a/src/mod/applications/mod_callcenter/mod_callcenter.c +++ b/src/mod/applications/mod_callcenter/mod_callcenter.c @@ -2625,8 +2625,10 @@ SWITCH_STANDARD_API(cc_config_api_function) cc_queue_t *queue = NULL; if ((queue = get_queue(queue_name))) { queue_rwunlock(queue); + stream->write_function(stream, "%s", "+OK\n"); + } else { + stream->write_function(stream, "%s", "-ERR Invalid Queue not found!\n"); } - stream->write_function(stream, "%s", "+OK\n"); } } else if (action && !strcasecmp(action, "unload")) { if (argc-initial_argc < 1) { @@ -2648,8 +2650,10 @@ SWITCH_STANDARD_API(cc_config_api_function) destroy_queue(queue_name, SWITCH_FALSE); if ((queue = get_queue(queue_name))) { queue_rwunlock(queue); + stream->write_function(stream, "%s", "+OK\n"); + } else { + stream->write_function(stream, "%s", "-ERR Invalid Queue not found!\n"); } - stream->write_function(stream, "%s", "+OK\n"); } } else if (action && !strcasecmp(action, "list")) { if (argc-initial_argc < 1) { @@ -2671,7 +2675,6 @@ SWITCH_STANDARD_API(cc_config_api_function) goto done; } else { const char *queue_name = argv[0 + initial_argc]; - struct list_result cbt; cbt.row_process = 0; cbt.stream = stream; commit be3483b924a674e4c4f0f05734e7e4917634f3ca Merge: e6e4bce 068d36a Author: Raymond Chandler Date: Fri Jan 28 16:42:20 2011 -0500 Merge branch 'master' of fs-git:freeswitch commit e6e4bcea734fbfb54b901ff8b1107ddfe76b7010 Author: Raymond Chandler Date: Fri Jan 28 16:42:15 2011 -0500 TEST-002 diff --git a/conf/freeswitch.xml b/conf/freeswitch.xml index 5fc9402..6914128 100644 --- a/conf/freeswitch.xml +++ b/conf/freeswitch.xml @@ -61,5 +61,4 @@ - commit 068d36a5c95c5a4143f423b7c36cbe6d5cea36d5 Author: Daniel Swarbrick Date: Fri Jan 28 22:32:14 2011 +0100 partial implementation of channel list via snmp diff --git a/src/mod/event_handlers/mod_snmp/FREESWITCH-MIB b/src/mod/event_handlers/mod_snmp/FREESWITCH-MIB index 9584c8b..11c3999 100644 --- a/src/mod/event_handlers/mod_snmp/FREESWITCH-MIB +++ b/src/mod/event_handlers/mod_snmp/FREESWITCH-MIB @@ -107,4 +107,88 @@ maxSessionsPerSecond OBJECT-TYPE "Maximum permissible sessions per second" ::= { systemStats 7 } + +ChannelEntry ::= SEQUENCE { + chanUUID DisplayString, + chanDirection DisplayString, + chanCreated DisplayString, + chanName DisplayString, + chanState DisplayString, + chanCIDName DisplayString, + chanCIDNum DisplayString +} + +channelList OBJECT-TYPE + SYNTAX SEQUENCE OF ChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing a list of active channels" + ::= { core 9 } + +channelEntry OBJECT-TYPE + SYNTAX ChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A channel entry" + INDEX { chanIndex } + ::= { channelList 1 } + +chanUUID OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The channel UUID." + ::= { channelEntry 1 } + +chanDirection OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The channel direction." + ::= { channelEntry 2 } + +chanCreated OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Channel creation timestamp." + ::= { channelEntry 3 } + +chanName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The channel name." + ::= { channelEntry 4 } + +chanState OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The channel state." + ::= { channelEntry 5 } + +chanCIDName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The channel caller ID name." + ::= { channelEntry 6 } + +chanCIDNum OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The channel caller ID number." + ::= { channelEntry 7 } + END diff --git a/src/mod/event_handlers/mod_snmp/mod_snmp.c b/src/mod/event_handlers/mod_snmp/mod_snmp.c index 56c7be1..d415d4f 100644 --- a/src/mod/event_handlers/mod_snmp/mod_snmp.c +++ b/src/mod/event_handlers/mod_snmp/mod_snmp.c @@ -109,7 +109,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_snmp_load) */ netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_AGENTX_PING_INTERVAL, 2); - init_subagent(); + init_subagent(pool); init_snmp("mod_snmp"); return status; diff --git a/src/mod/event_handlers/mod_snmp/subagent.c b/src/mod/event_handlers/mod_snmp/subagent.c index bad3dc6..7b9faa7 100644 --- a/src/mod/event_handlers/mod_snmp/subagent.c +++ b/src/mod/event_handlers/mod_snmp/subagent.c @@ -36,27 +36,108 @@ #include #include "subagent.h" +netsnmp_table_registration_info *ch_table_info; +netsnmp_tdata *ch_table; +netsnmp_handler_registration *ch_reginfo; +uint32_t idx; -void init_subagent(void) + +static int sql_count_callback(void *pArg, int argc, char **argv, char **columnNames) { - static oid identity_oid[] = { 1,3,6,1,4,1,27880,1,1 }; - static oid systemStats_oid[] = { 1,3,6,1,4,1,27880,1,2 }; + uint32_t *count = (uint32_t *) pArg; + *count = atoi(argv[0]); + return 0; +} - DEBUGMSGTL(("init_subagent", "Initializing\n")); - netsnmp_register_scalar_group(netsnmp_create_handler_registration("identity", handle_identity, identity_oid, OID_LENGTH(identity_oid), HANDLER_CAN_RONLY), 1, 2); - netsnmp_register_scalar_group(netsnmp_create_handler_registration("systemStats", handle_systemStats, systemStats_oid, OID_LENGTH(systemStats_oid), HANDLER_CAN_RONLY), 1, 7); +static int channelList_callback(void *pArg, int argc, char **argv, char **columnNames) +{ + chan_entry_t *entry; + netsnmp_tdata_row *row; + + switch_zmalloc(entry, sizeof(chan_entry_t)); + if (!entry) + return 0; + + row = netsnmp_tdata_create_row(); + if (!row) { + switch_safe_free(entry); + return 0; + } + row->data = entry; + + entry->idx = idx++; + strncpy(entry->uuid, argv[0], sizeof(entry->uuid)); + strncpy(entry->direction, argv[1], sizeof(entry->direction)); + strncpy(entry->created, argv[2], sizeof(entry->created)); + strncpy(entry->name, argv[4], sizeof(entry->name)); + strncpy(entry->state, argv[5], sizeof(entry->state)); + strncpy(entry->cid_name, argv[6], sizeof(entry->cid_name)); + strncpy(entry->cid_num, argv[7], sizeof(entry->cid_num)); + + netsnmp_tdata_row_add_index(row, ASN_INTEGER, &entry->idx, sizeof(entry->idx)); + netsnmp_tdata_add_row(ch_table, row); + return 0; } -static int sql_count_callback(void *pArg, int argc, char **argv, char **columnNames) +void channelList_free(netsnmp_cache *cache, void *magic) { - uint32_t *count = (uint32_t *) pArg; - *count = atoi(argv[0]); + netsnmp_tdata_row *row = netsnmp_tdata_row_first(ch_table); + + /* Delete table rows one by one */ + while (row) { + netsnmp_tdata_remove_and_delete_row(ch_table, row); + switch_safe_free(row->data); + row = netsnmp_tdata_row_first(ch_table); + } +} + + +int channelList_load(netsnmp_cache *cache, void *vmagic) +{ + switch_cache_db_handle_t *dbh; + char sql[1024] = "", hostname[256] = ""; + + channelList_free(cache, NULL); + + if (switch_core_db_handle(&dbh) != SWITCH_STATUS_SUCCESS) { + return 0; + } + + idx = 1; + gethostname(hostname, sizeof(hostname)); + sprintf(sql, "SELECT * FROM channels WHERE hostname='%s' ORDER BY created_epoch", hostname); + switch_cache_db_execute_sql_callback(dbh, sql, channelList_callback, NULL, NULL); + + switch_cache_db_release_db_handle(&dbh); + return 0; } +void init_subagent(switch_memory_pool_t *pool) +{ + static oid identity_oid[] = { 1,3,6,1,4,1,27880,1,1 }; + static oid systemStats_oid[] = { 1,3,6,1,4,1,27880,1,2 }; + static oid channelList_oid[] = { 1,3,6,1,4,1,27880,1,9 }; + + DEBUGMSGTL(("init_subagent", "mod_snmp subagent initializing\n")); + + netsnmp_register_scalar_group(netsnmp_create_handler_registration("identity", handle_identity, identity_oid, OID_LENGTH(identity_oid), HANDLER_CAN_RONLY), 1, 2); + netsnmp_register_scalar_group(netsnmp_create_handler_registration("systemStats", handle_systemStats, systemStats_oid, OID_LENGTH(systemStats_oid), HANDLER_CAN_RONLY), 1, 7); + + ch_table_info = switch_core_alloc(pool, sizeof(netsnmp_table_registration_info)); + netsnmp_table_helper_add_index(ch_table_info, ASN_INTEGER); + ch_table_info->min_column = 1; + ch_table_info->max_column = 7; + ch_table = netsnmp_tdata_create_table("channelList", 0); + ch_reginfo = netsnmp_create_handler_registration("channelList", handle_channelList, channelList_oid, OID_LENGTH(channelList_oid), HANDLER_CAN_RONLY); + netsnmp_tdata_register(ch_reginfo, ch_table, ch_table_info); + netsnmp_inject_handler(ch_reginfo, netsnmp_get_cache_handler(5, channelList_load, channelList_free, channelList_oid, OID_LENGTH(channelList_oid))); +} + + int handle_identity(netsnmp_mib_handler *handler, netsnmp_handler_registration *reginfo, netsnmp_agent_request_info *reqinfo, netsnmp_request_info *requests) { netsnmp_request_info *request = NULL; @@ -97,7 +178,7 @@ int handle_systemStats(netsnmp_mib_handler *handler, netsnmp_handler_registratio netsnmp_request_info *request = NULL; oid subid; switch_time_t uptime; - uint32_t int_val; + uint32_t int_val = 0; switch(reqinfo->mode) { case MODE_GET: @@ -160,6 +241,55 @@ int handle_systemStats(netsnmp_mib_handler *handler, netsnmp_handler_registratio } +int handle_channelList(netsnmp_mib_handler *handler, netsnmp_handler_registration *reginfo, netsnmp_agent_request_info *reqinfo, netsnmp_request_info *requests) +{ + netsnmp_request_info *request; + netsnmp_table_request_info *table_info; + chan_entry_t *entry; + + switch (reqinfo->mode) { + case MODE_GET: + for (request = requests; request; request = request->next) { + table_info = netsnmp_extract_table_info(request); + entry = (chan_entry_t *) netsnmp_tdata_extract_entry(request); + + switch (table_info->colnum) { + case CH_UUID: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->uuid, strlen(entry->uuid)); + break; + case CH_DIRECTION: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->direction, strlen(entry->direction)); + break; + case CH_CREATED: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->created, strlen(entry->created)); + break; + case CH_NAME: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->name, strlen(entry->name)); + break; + case CH_STATE: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->state, strlen(entry->state)); + break; + case CH_CID_NAME: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->cid_name, strlen(entry->cid_name)); + break; + case CH_CID_NUM: + snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->cid_num, strlen(entry->cid_num)); + break; + default: + snmp_log(LOG_WARNING, "Unregistered OID-suffix requested (%d)\n", table_info->colnum); + netsnmp_set_request_error(reqinfo, request, SNMP_NOSUCHOBJECT); + } + } + break; + default: + /* we should never get here, so this is a really bad error */ + snmp_log(LOG_ERR, "Unknown mode (%d) in handle_foo\n", reqinfo->mode ); + return SNMP_ERR_GENERR; + } + + return SNMP_ERR_NOERROR; +} + /* For Emacs: * Local Variables: diff --git a/src/mod/event_handlers/mod_snmp/subagent.h b/src/mod/event_handlers/mod_snmp/subagent.h index 3315378..0070b2c 100644 --- a/src/mod/event_handlers/mod_snmp/subagent.h +++ b/src/mod/event_handlers/mod_snmp/subagent.h @@ -14,9 +14,29 @@ #define SS_SESSIONS_PER_SECOND 6 #define SS_MAX_SESSIONS_PER_SECOND 7 +/* .1.3.6.1.4.1.27880.1.9 */ +#define CH_UUID 1 +#define CH_DIRECTION 2 +#define CH_CREATED 3 +#define CH_NAME 4 +#define CH_STATE 5 +#define CH_CID_NAME 6 +#define CH_CID_NUM 7 -void init_subagent(void); +typedef struct { + uint32_t idx; + char uuid[38]; + char direction[32]; + char created[128]; + char name[1024]; + char state[64]; + char cid_name[1024]; + char cid_num[256]; +} chan_entry_t; + +void init_subagent(switch_memory_pool_t *pool); Netsnmp_Node_Handler handle_identity; Netsnmp_Node_Handler handle_systemStats; +Netsnmp_Node_Handler handle_channelList; #endif /* subagent_H */ commit 9986f4ebf2a0c40cc99bc7f9f03f2dec6ae74645 Merge: 6d3abd4 b3ac44f Author: Raymond Chandler Date: Fri Jan 28 16:12:07 2011 -0500 Merge branch 'master' of fs-git:freeswitch commit 6d3abd41cadef3a2bff8175487c094c80d7d9cf7 Author: Raymond Chandler Date: Fri Jan 28 16:11:55 2011 -0500 TEST-001 diff --git a/conf/freeswitch.xml b/conf/freeswitch.xml index 6ed99ef..5fc9402 100644 --- a/conf/freeswitch.xml +++ b/conf/freeswitch.xml @@ -63,4 +63,3 @@ - commit b3ac44f555a80f8278c5f915cfb36766903905a4 Author: Daniel Swarbrick Date: Fri Jan 28 20:36:06 2011 +0100 add support for getting current call count diff --git a/src/mod/event_handlers/mod_snmp/subagent.c b/src/mod/event_handlers/mod_snmp/subagent.c index 8f08baf..bad3dc6 100644 --- a/src/mod/event_handlers/mod_snmp/subagent.c +++ b/src/mod/event_handlers/mod_snmp/subagent.c @@ -49,6 +49,14 @@ void init_subagent(void) } +static int sql_count_callback(void *pArg, int argc, char **argv, char **columnNames) +{ + uint32_t *count = (uint32_t *) pArg; + *count = atoi(argv[0]); + return 0; +} + + int handle_identity(netsnmp_mib_handler *handler, netsnmp_handler_registration *reginfo, netsnmp_agent_request_info *reqinfo, netsnmp_request_info *requests) { netsnmp_request_info *request = NULL; @@ -113,13 +121,20 @@ int handle_systemStats(netsnmp_mib_handler *handler, netsnmp_handler_registratio snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val)); break; case SS_CURRENT_CALLS: - /* - * This is zero for now, since there is no convenient way to get total call - * count (not to be confused with session count), without touching the - * database. - */ - int_val = 0; + { + switch_cache_db_handle_t *dbh; + char sql[1024] = "", hostname[256] = ""; + + if (switch_core_db_handle(&dbh) != SWITCH_STATUS_SUCCESS) { + return SNMP_ERR_GENERR; + } + + gethostname(hostname, sizeof(hostname)); + sprintf(sql, "SELECT COUNT(*) FROM calls WHERE hostname='%s'", hostname); + switch_cache_db_execute_sql_callback(dbh, sql, sql_count_callback, &int_val, NULL); snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val)); + switch_cache_db_release_db_handle(&dbh); + } break; case SS_SESSIONS_PER_SECOND: switch_core_session_ctl(SCSC_LAST_SPS, &int_val); commit 9e6503a482ff533ff214b01a07c3432be14ff1ce Author: Raymond Chandler Date: Fri Jan 28 14:33:30 2011 -0500 test diff --git a/conf/freeswitch.xml b/conf/freeswitch.xml index 80e7728..6ed99ef 100644 --- a/conf/freeswitch.xml +++ b/conf/freeswitch.xml @@ -64,4 +64,3 @@ - commit 97a2b4f9025099bdab5718a13ee36d15a6152411 Author: Raymond Chandler Date: Fri Jan 28 14:24:07 2011 -0500 test diff --git a/conf/freeswitch.xml b/conf/freeswitch.xml index 6ed99ef..80e7728 100644 --- a/conf/freeswitch.xml +++ b/conf/freeswitch.xml @@ -64,3 +64,4 @@ + commit 68b2756970bd4280eba700b7439afdff374fd9e3 Author: Raymond Chandler Date: Fri Jan 28 14:21:31 2011 -0500 test diff --git a/conf/freeswitch.xml b/conf/freeswitch.xml index 5fc9402..6ed99ef 100644 --- a/conf/freeswitch.xml +++ b/conf/freeswitch.xml @@ -63,3 +63,4 @@ + commit 9b0c16b5d48a7b9d0ea15ac429a8ca4c8eef8693 Author: Raymond Chandler Date: Fri Jan 28 14:20:21 2011 -0500 test diff --git a/conf/freeswitch.xml b/conf/freeswitch.xml index 6ed99ef..5fc9402 100644 --- a/conf/freeswitch.xml +++ b/conf/freeswitch.xml @@ -63,4 +63,3 @@ - commit f05fe55594ffca6edc8f4e74204650aa219ed1ac Author: Raymond Chandler Date: Fri Jan 28 14:19:07 2011 -0500 test diff --git a/conf/freeswitch.xml b/conf/freeswitch.xml index 80e7728..6ed99ef 100644 --- a/conf/freeswitch.xml +++ b/conf/freeswitch.xml @@ -64,4 +64,3 @@ - commit 08f494b80802aacf101705382f149ca4b028eb57 Author: Daniel Swarbrick Date: Fri Jan 28 20:14:10 2011 +0100 typo diff --git a/src/mod/event_handlers/mod_snmp/subagent.c b/src/mod/event_handlers/mod_snmp/subagent.c index 2da9ebe..8f08baf 100644 --- a/src/mod/event_handlers/mod_snmp/subagent.c +++ b/src/mod/event_handlers/mod_snmp/subagent.c @@ -109,7 +109,7 @@ int handle_systemStats(netsnmp_mib_handler *handler, netsnmp_handler_registratio snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val)); break; case SS_MAX_SESSIONS: - switch_core_session_ctl(SCSC_MAX_SESSIONS, &int_val);; + switch_core_session_ctl(SCSC_MAX_SESSIONS, &int_val); snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val)); break; case SS_CURRENT_CALLS: commit daa28cfccae9b171221408f3af4f8c10283e67b3 Author: Jeff Lenk Date: Fri Jan 28 09:19:03 2011 -0600 add missing files diff --git a/libs/freetdm/msvc/freetdm.2010.vcxproj b/libs/freetdm/msvc/freetdm.2010.vcxproj index 71eb6db..aecb9ef 100644 --- a/libs/freetdm/msvc/freetdm.2010.vcxproj +++ b/libs/freetdm/msvc/freetdm.2010.vcxproj @@ -188,6 +188,7 @@ + @@ -209,6 +210,7 @@ + diff --git a/libs/freetdm/msvc/freetdm.2010.vcxproj.filters b/libs/freetdm/msvc/freetdm.2010.vcxproj.filters index ed642ba..e6dc40d 100644 --- a/libs/freetdm/msvc/freetdm.2010.vcxproj.filters +++ b/libs/freetdm/msvc/freetdm.2010.vcxproj.filters @@ -71,6 +71,9 @@ Header Files + + Header Files + @@ -124,5 +127,8 @@ Source Files + + Source Files + \ No newline at end of file commit c64b78577f65b586ff6d7af711c79d0427fc61c5 Author: Travis Cross Date: Fri Jan 28 09:01:47 2011 +0000 .gitignore compressed files diff --git a/.gitignore b/.gitignore index 304b42c..c53d07d 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,12 @@ *.ilk *.bsc *.pch +*.tar +*.gz +*.tgz +*.xz +*.bz2 +*.tbz2 core.* /Path /w32/Library/lastversion @@ -79,7 +85,6 @@ configure.lineno /scripts/fsxs /scripts/gentls_cert /a.out.dSYM -/freeswitch-sounds-* src/mod/applications/mod_easyroute/Makefile src/mod/applications/mod_lcr/Makefile src/mod/applications/mod_nibblebill/Makefile diff --git a/src/mod/endpoints/mod_gsmopen/.gitignore b/src/mod/endpoints/mod_gsmopen/.gitignore index 9fdeeb1..fe8dc68 100644 --- a/src/mod/endpoints/mod_gsmopen/.gitignore +++ b/src/mod/endpoints/mod_gsmopen/.gitignore @@ -1,2 +1,4 @@ !/gsmlib/gsmlib-*/aclocal.m4 !/gsmlib/gsmlib-*/configure +!/gsmlib/gsmlib-1.10.tar.gz +!/gsmlib/gsmlib_1.10-12ubuntu1.diff.gz commit 9ade16e9291aa74b4483bb9b9d9db266e082f7cc Author: Brian West Date: Thu Jan 27 18:38:16 2011 -0600 swigall diff --git a/src/mod/languages/mod_managed/freeswitch_wrap.cxx b/src/mod/languages/mod_managed/freeswitch_wrap.cxx index aa2a84f..3ee6ff6 100644 --- a/src/mod/languages/mod_managed/freeswitch_wrap.cxx +++ b/src/mod/languages/mod_managed/freeswitch_wrap.cxx @@ -7413,6 +7413,20 @@ SWIGEXPORT void * SWIGSTDCALL CSharp_switch_core_session_get_dmachine(void * jar } +SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_session_set_codec_slin(void * jarg1, void * jarg2) { + int jresult ; + switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + switch_slin_data_t *arg2 = (switch_slin_data_t *) 0 ; + switch_status_t result; + + arg1 = (switch_core_session_t *)jarg1; + arg2 = (switch_slin_data_t *)jarg2; + result = (switch_status_t)switch_core_session_set_codec_slin(arg1,arg2); + jresult = result; + return jresult; +} + + SWIGEXPORT char * SWIGSTDCALL CSharp_switch_core_get_uuid() { char * jresult ; char *result = 0 ; @@ -22794,6 +22808,119 @@ SWIGEXPORT void SWIGSTDCALL CSharp_delete_switch_api_interface(void * jarg1) { } +SWIGEXPORT void SWIGSTDCALL CSharp_switch_slin_data_session_set(void * jarg1, void * jarg2) { + switch_slin_data *arg1 = (switch_slin_data *) 0 ; + switch_core_session_t *arg2 = (switch_core_session_t *) 0 ; + + arg1 = (switch_slin_data *)jarg1; + arg2 = (switch_core_session_t *)jarg2; + if (arg1) (arg1)->session = arg2; + +} + + +SWIGEXPORT void * SWIGSTDCALL CSharp_switch_slin_data_session_get(void * jarg1) { + void * jresult ; + switch_slin_data *arg1 = (switch_slin_data *) 0 ; + switch_core_session_t *result = 0 ; + + arg1 = (switch_slin_data *)jarg1; + result = (switch_core_session_t *) ((arg1)->session); + jresult = (void *)result; + return jresult; +} + + +SWIGEXPORT void SWIGSTDCALL CSharp_switch_slin_data_write_frame_set(void * jarg1, void * jarg2) { + switch_slin_data *arg1 = (switch_slin_data *) 0 ; + switch_frame_t *arg2 = (switch_frame_t *) 0 ; + + arg1 = (switch_slin_data *)jarg1; + arg2 = (switch_frame_t *)jarg2; + if (arg1) (arg1)->write_frame = *arg2; + +} + + +SWIGEXPORT void * SWIGSTDCALL CSharp_switch_slin_data_write_frame_get(void * jarg1) { + void * jresult ; + switch_slin_data *arg1 = (switch_slin_data *) 0 ; + switch_frame_t *result = 0 ; + + arg1 = (switch_slin_data *)jarg1; + result = (switch_frame_t *)& ((arg1)->write_frame); + jresult = (void *)result; + return jresult; +} + + +SWIGEXPORT void SWIGSTDCALL CSharp_switch_slin_data_codec_set(void * jarg1, void * jarg2) { + switch_slin_data *arg1 = (switch_slin_data *) 0 ; + switch_codec_t *arg2 = (switch_codec_t *) 0 ; + + arg1 = (switch_slin_data *)jarg1; + arg2 = (switch_codec_t *)jarg2; + if (arg1) (arg1)->codec = *arg2; + +} + + +SWIGEXPORT void * SWIGSTDCALL CSharp_switch_slin_data_codec_get(void * jarg1) { + void * jresult ; + switch_slin_data *arg1 = (switch_slin_data *) 0 ; + switch_codec_t *result = 0 ; + + arg1 = (switch_slin_data *)jarg1; + result = (switch_codec_t *)& ((arg1)->codec); + jresult = (void *)result; + return jresult; +} + + +SWIGEXPORT void SWIGSTDCALL CSharp_switch_slin_data_frame_data_set(void * jarg1, char * jarg2) { + switch_slin_data *arg1 = (switch_slin_data *) 0 ; + char *arg2 ; + + arg1 = (switch_slin_data *)jarg1; + arg2 = (char *)jarg2; + { + if (arg2) strncpy((char *)arg1->frame_data, (const char *)arg2, 4096); + else arg1->frame_data[0] = 0; + } +} + + +SWIGEXPORT char * SWIGSTDCALL CSharp_switch_slin_data_frame_data_get(void * jarg1) { + char * jresult ; + switch_slin_data *arg1 = (switch_slin_data *) 0 ; + char *result = 0 ; + + arg1 = (switch_slin_data *)jarg1; + result = (char *)(char *) ((arg1)->frame_data); + jresult = SWIG_csharp_string_callback((const char *)result); + return jresult; +} + + +SWIGEXPORT void * SWIGSTDCALL CSharp_new_switch_slin_data() { + void * jresult ; + switch_slin_data *result = 0 ; + + result = (switch_slin_data *)new switch_slin_data(); + jresult = (void *)result; + return jresult; +} + + +SWIGEXPORT void SWIGSTDCALL CSharp_delete_switch_slin_data(void * jarg1) { + switch_slin_data *arg1 = (switch_slin_data *) 0 ; + + arg1 = (switch_slin_data *)jarg1; + delete arg1; + +} + + SWIGEXPORT void SWIGSTDCALL CSharp_switch_channel_timetable_profile_created_set(void * jarg1, void * jarg2) { switch_channel_timetable *arg1 = (switch_channel_timetable *) 0 ; switch_time_t arg2 ; diff --git a/src/mod/languages/mod_managed/managed/swig.cs b/src/mod/languages/mod_managed/managed/swig.cs index 5a2188a..48d585e 100644 --- a/src/mod/languages/mod_managed/managed/swig.cs +++ b/src/mod/languages/mod_managed/managed/swig.cs @@ -1357,6 +1357,11 @@ public class freeswitch { return ret; } + public static switch_status_t switch_core_session_set_codec_slin(SWIGTYPE_p_switch_core_session session, switch_slin_data data) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_session_set_codec_slin(SWIGTYPE_p_switch_core_session.getCPtr(session), switch_slin_data.getCPtr(data)); + return ret; + } + public static string switch_core_get_uuid() { string ret = freeswitchPINVOKE.switch_core_get_uuid(); return ret; @@ -7504,6 +7509,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_get_dmachine")] public static extern IntPtr switch_core_session_get_dmachine(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_set_codec_slin")] + public static extern int switch_core_session_set_codec_slin(HandleRef jarg1, HandleRef jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_get_uuid")] public static extern string switch_core_get_uuid(); @@ -11188,6 +11196,36 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_delete_switch_api_interface")] public static extern void delete_switch_api_interface(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_slin_data_session_set")] + public static extern void switch_slin_data_session_set(HandleRef jarg1, HandleRef jarg2); + + [DllImport("mod_managed", EntryPoint="CSharp_switch_slin_data_session_get")] + public static extern IntPtr switch_slin_data_session_get(HandleRef jarg1); + + [DllImport("mod_managed", EntryPoint="CSharp_switch_slin_data_write_frame_set")] + public static extern void switch_slin_data_write_frame_set(HandleRef jarg1, HandleRef jarg2); + + [DllImport("mod_managed", EntryPoint="CSharp_switch_slin_data_write_frame_get")] + public static extern IntPtr switch_slin_data_write_frame_get(HandleRef jarg1); + + [DllImport("mod_managed", EntryPoint="CSharp_switch_slin_data_codec_set")] + public static extern void switch_slin_data_codec_set(HandleRef jarg1, HandleRef jarg2); + + [DllImport("mod_managed", EntryPoint="CSharp_switch_slin_data_codec_get")] + public static extern IntPtr switch_slin_data_codec_get(HandleRef jarg1); + + [DllImport("mod_managed", EntryPoint="CSharp_switch_slin_data_frame_data_set")] + public static extern void switch_slin_data_frame_data_set(HandleRef jarg1, string jarg2); + + [DllImport("mod_managed", EntryPoint="CSharp_switch_slin_data_frame_data_get")] + public static extern string switch_slin_data_frame_data_get(HandleRef jarg1); + + [DllImport("mod_managed", EntryPoint="CSharp_new_switch_slin_data")] + public static extern IntPtr new_switch_slin_data(); + + [DllImport("mod_managed", EntryPoint="CSharp_delete_switch_slin_data")] + public static extern void delete_switch_slin_data(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_timetable_profile_created_set")] public static extern void switch_channel_timetable_profile_created_set(HandleRef jarg1, HandleRef jarg2); @@ -28401,7 +28439,8 @@ public enum switch_rtp_bug_flag_t { RTP_BUG_IGNORE_MARK_BIT = (1 << 2), RTP_BUG_SEND_LINEAR_TIMESTAMPS = (1 << 3), RTP_BUG_START_SEQ_AT_ZERO = (1 << 4), - RTP_BUG_NEVER_SEND_MARKER = (1 << 5) + RTP_BUG_NEVER_SEND_MARKER = (1 << 5), + RTP_BUG_IGNORE_DTMF_DURATION = (1 << 6) } } @@ -29437,6 +29476,96 @@ public enum switch_signal_t { namespace FreeSWITCH.Native { +using System; +using System.Runtime.InteropServices; + +public class switch_slin_data : IDisposable { + private HandleRef swigCPtr; + protected bool swigCMemOwn; + + internal switch_slin_data(IntPtr cPtr, bool cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = new HandleRef(this, cPtr); + } + + internal static HandleRef getCPtr(switch_slin_data obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } + + ~switch_slin_data() { + Dispose(); + } + + public virtual void Dispose() { + lock(this) { + if(swigCPtr.Handle != IntPtr.Zero && swigCMemOwn) { + swigCMemOwn = false; + freeswitchPINVOKE.delete_switch_slin_data(swigCPtr); + } + swigCPtr = new HandleRef(null, IntPtr.Zero); + GC.SuppressFinalize(this); + } + } + + public SWIGTYPE_p_switch_core_session session { + set { + freeswitchPINVOKE.switch_slin_data_session_set(swigCPtr, SWIGTYPE_p_switch_core_session.getCPtr(value)); + } + get { + IntPtr cPtr = freeswitchPINVOKE.switch_slin_data_session_get(swigCPtr); + SWIGTYPE_p_switch_core_session ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_switch_core_session(cPtr, false); + return ret; + } + } + + public switch_frame write_frame { + set { + freeswitchPINVOKE.switch_slin_data_write_frame_set(swigCPtr, switch_frame.getCPtr(value)); + } + get { + IntPtr cPtr = freeswitchPINVOKE.switch_slin_data_write_frame_get(swigCPtr); + switch_frame ret = (cPtr == IntPtr.Zero) ? null : new switch_frame(cPtr, false); + return ret; + } + } + + public switch_codec codec { + set { + freeswitchPINVOKE.switch_slin_data_codec_set(swigCPtr, switch_codec.getCPtr(value)); + } + get { + IntPtr cPtr = freeswitchPINVOKE.switch_slin_data_codec_get(swigCPtr); + switch_codec ret = (cPtr == IntPtr.Zero) ? null : new switch_codec(cPtr, false); + return ret; + } + } + + public string frame_data { + set { + freeswitchPINVOKE.switch_slin_data_frame_data_set(swigCPtr, value); + } + get { + string ret = freeswitchPINVOKE.switch_slin_data_frame_data_get(swigCPtr); + return ret; + } + } + + public switch_slin_data() : this(freeswitchPINVOKE.new_switch_slin_data(), true) { + } + +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 1.3.35 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + [System.Flags] public enum switch_speech_flag_enum_t { SWITCH_SPEECH_FLAG_NONE = 0, SWITCH_SPEECH_FLAG_HASTEXT = (1 << 0), @@ -30146,7 +30275,7 @@ public enum switch_status_t { SWITCH_STATUS_FALSE, SWITCH_STATUS_TIMEOUT, SWITCH_STATUS_RESTART, - SWITCH_STATUS_TERM, + SWITCH_STATUS_INTR, SWITCH_STATUS_NOTIMPL, SWITCH_STATUS_MEMERR, SWITCH_STATUS_NOOP, @@ -30163,6 +30292,7 @@ public enum switch_status_t { SWITCH_STATUS_TOO_SMALL, SWITCH_STATUS_FOUND, SWITCH_STATUS_CONTINUE, + SWITCH_STATUS_TERM, SWITCH_STATUS_NOT_INITALIZED } commit 314a2a1e2061ef321fa5f9b32a9c70ef0040cdb8 Author: Brian West Date: Thu Jan 27 10:40:49 2011 -0600 FS-3004 diff --git a/src/mod/applications/mod_spandsp/mod_spandsp_fax.c b/src/mod/applications/mod_spandsp/mod_spandsp_fax.c index 21c6a68..4dd936b 100644 --- a/src/mod/applications/mod_spandsp/mod_spandsp_fax.c +++ b/src/mod/applications/mod_spandsp/mod_spandsp_fax.c @@ -40,6 +40,9 @@ #define MAX_FEC_ENTRIES 4 #define MAX_FEC_SPAN 4 +#define SPANDSP_EVENT_TXFAXRESULT "spandsp::txfaxresult" +#define SPANDSP_EVENT_RXFAXRESULT "spandsp::rxfaxresult" + /***************************************************************************** OUR DEFINES AND STRUCTS *****************************************************************************/ @@ -305,7 +308,14 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_core_session_t *session; switch_channel_t *channel; pvt_t *pvt; - char *tmp; + char *fax_document_transferred_pages = NULL; + char *fax_document_total_pages = NULL; + char *fax_image_resolution = NULL; + char *fax_image_size = NULL; + char *fax_bad_rows = NULL; + char *fax_transfer_rate = NULL; + char *fax_result_code = NULL; + switch_event_t *event; pvt = (pvt_t *) user_data; switch_assert(pvt); @@ -353,13 +363,12 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "==============================================================================\n"); /* - Set our channel variables + Set our channel variables, variables are also used in event */ - tmp = switch_mprintf("%i", result); - if (tmp) { - switch_channel_set_variable(channel, "fax_result_code", tmp); - switch_safe_free(tmp); + fax_result_code = switch_core_session_sprintf(session, "%i", result); + if (fax_result_code) { + switch_channel_set_variable(channel, "fax_result_code", fax_result_code); } switch_channel_set_variable(channel, "fax_result_text", t30_completion_code_to_str(result)); @@ -368,49 +377,56 @@ static void phase_e_handler(t30_state_t *s, void *user_data, int result) switch_channel_set_variable(channel, "fax_local_station_id", local_ident); switch_channel_set_variable(channel, "fax_remote_station_id", far_ident); - tmp = switch_mprintf("%i", pvt->app_mode == FUNCTION_TX ? t.pages_tx : t.pages_rx); - if (tmp) { - switch_channel_set_variable(channel, "fax_document_transferred_pages", tmp); - switch_safe_free(tmp); + fax_document_transferred_pages = switch_core_session_sprintf(session, "%i", pvt->app_mode == FUNCTION_TX ? t.pages_tx : t.pages_rx); + if (fax_document_transferred_pages) { + switch_channel_set_variable(channel, "fax_document_transferred_pages", fax_document_transferred_pages); } - tmp = switch_mprintf("%i", t.pages_in_file); - if (tmp) { - switch_channel_set_variable(channel, "fax_document_total_pages", tmp); - switch_safe_free(tmp); + fax_document_total_pages = switch_core_session_sprintf(session, "%i", t.pages_in_file); + if (fax_document_total_pages) { + switch_channel_set_variable(channel, "fax_document_total_pages", fax_document_total_pages); } - tmp = switch_mprintf("%ix%i", t.x_resolution, t.y_resolution); - if (tmp) { - switch_channel_set_variable(channel, "fax_image_resolution", tmp); - switch_safe_free(tmp); + fax_image_resolution = switch_core_session_sprintf(session, "%ix%i", t.x_resolution, t.y_resolution); + if (fax_image_resolution) { + switch_channel_set_variable(channel, "fax_image_resolution", fax_image_resolution); } - tmp = switch_mprintf("%d", t.image_size); - if (tmp) { - switch_channel_set_variable(channel, "fax_image_size", tmp); - switch_safe_free(tmp); + fax_image_size = switch_core_session_sprintf(session, "%d", t.image_size); + if (fax_image_size) { + switch_channel_set_variable(channel, "fax_image_size", fax_image_size); } - tmp = switch_mprintf("%d", t.bad_rows); - if (tmp) { - switch_channel_set_variable(channel, "fax_bad_rows", tmp); - switch_safe_free(tmp); + fax_bad_rows = switch_core_session_sprintf(session, "%d", t.bad_rows); + if (fax_bad_rows) { + switch_channel_set_variable(channel, "fax_bad_rows", fax_bad_rows); } - tmp = switch_mprintf("%i", t.bit_rate); - if (tmp) { - switch_channel_set_variable(channel, "fax_transfer_rate", tmp); - switch_safe_free(tmp); + fax_transfer_rate = switch_core_session_sprintf(session, "%i", t.bit_rate); + if (fax_transfer_rate) { + switch_channel_set_variable(channel, "fax_transfer_rate", fax_transfer_rate); } /* switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); */ pvt->done = 1; - /* - TODO Fire events - */ + /* Fire event */ + + if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, pvt->app_mode == FUNCTION_TX ? SPANDSP_EVENT_TXFAXRESULT : SPANDSP_EVENT_RXFAXRESULT) == SWITCH_STATUS_SUCCESS) { + 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-document-total-pages", fax_document_total_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); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-bad-rows", fax_bad_rows); + 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-result-code", fax_result_code); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-result-text", t30_completion_code_to_str(result)); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-ecm-used", (t.error_correcting_mode) ? "on" : "off"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-local-station-id", local_ident); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fax-remote-station-id", far_ident); + switch_core_session_queue_private_event(session, &event, SWITCH_FALSE); + } } static int t38_tx_packet_handler(t38_core_state_t *s, void *user_data, const uint8_t *buf, int len, int count) @@ -1026,7 +1042,6 @@ void mod_spandsp_fax_process_fax(switch_core_session_t *session, const char *dat switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Fax TX filename not set.\n"); goto done; } else if (pvt->app_mode == FUNCTION_RX) { - char *fname; const char *prefix; switch_time_t time; @@ -1036,11 +1051,7 @@ void mod_spandsp_fax_process_fax(switch_core_session_t *session, const char *dat prefix = globals.prepend_string; } - fname = switch_mprintf("%s/%s-%ld-%ld.tif", globals.spool, prefix, globals.total_sessions, time); - if (fname) { - pvt->filename = switch_core_session_strdup(session, fname); - switch_safe_free(fname); - } else { + if (!(pvt->filename = switch_core_session_sprintf(session, "%s/%s-%ld-%ld.tif", globals.spool, prefix, globals.total_sessions, time))) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Cannot automatically set fax RX destination file\n"); goto done; } commit 48c02b7cd2770f6aee1d6e89f5ecfe207231f398 Author: Raymond Chandler Date: Thu Jan 27 16:49:09 2011 -0500 test diff --git a/build/modules.conf.in b/build/modules.conf.in index b46c2ff..84a9e9a 100644 --- a/build/modules.conf.in +++ b/build/modules.conf.in @@ -112,4 +112,3 @@ say/mod_say_ru ## Experimental Modules (don't cry if they're broken) #../../contrib/mod/xml_int/mod_xml_odbc - commit f954d21ab8f84ea3518525d6f8a5a25c5cd39d6b Merge: f8254f8 608be37 Author: Raymond Chandler Date: Thu Jan 27 16:24:20 2011 -0500 Merge branch 'master' of fs-git:freeswitch commit f8254f81607c9b2fe8ece3c48cb6dff700bcbead Author: Raymond Chandler Date: Thu Jan 27 16:24:11 2011 -0500 test diff --git a/build/modules.conf.in b/build/modules.conf.in index 84a9e9a..b46c2ff 100644 --- a/build/modules.conf.in +++ b/build/modules.conf.in @@ -112,3 +112,4 @@ say/mod_say_ru ## Experimental Modules (don't cry if they're broken) #../../contrib/mod/xml_int/mod_xml_odbc + commit 608be370bcca24023ee9d05ee4a99c133044f0d3 Author: Daniel Swarbrick Date: Thu Jan 27 21:33:17 2011 +0100 reduce agentx heartbeat to 2s, add management hook for mutex lock/unlock diff --git a/src/mod/event_handlers/mod_snmp/mod_snmp.c b/src/mod/event_handlers/mod_snmp/mod_snmp.c index 0310637..56c7be1 100644 --- a/src/mod/event_handlers/mod_snmp/mod_snmp.c +++ b/src/mod/event_handlers/mod_snmp/mod_snmp.c @@ -48,6 +48,20 @@ SWITCH_MODULE_RUNTIME_FUNCTION(mod_snmp_runtime); SWITCH_MODULE_DEFINITION(mod_snmp, mod_snmp_load, mod_snmp_shutdown, mod_snmp_runtime); +static switch_status_t snmp_manage(char *relative_oid, switch_management_action_t action, char *data, switch_size_t datalen) +{ + if (action == SMA_GET) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Mutex lock request from relative OID %s.\n", relative_oid); + switch_mutex_lock(globals.mutex); + } else if (action == SMA_SET) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Mutex unlock request from relative OID %s.\n", relative_oid); + switch_mutex_unlock(globals.mutex); + } + + return SWITCH_STATUS_SUCCESS; +} + + static int snmp_callback_log(int major, int minor, void *serverarg, void *clientarg) { struct snmp_log_message *slm = (struct snmp_log_message *) serverarg; @@ -71,10 +85,14 @@ static switch_status_t load_config(switch_memory_pool_t *pool) SWITCH_MODULE_LOAD_FUNCTION(mod_snmp_load) { switch_status_t status = SWITCH_STATUS_SUCCESS; + switch_management_interface_t *management_interface; load_config(pool); *module_interface = switch_loadable_module_create_module_interface(pool, modname); + management_interface = switch_loadable_module_create_interface(*module_interface, SWITCH_MANAGEMENT_INTERFACE); + management_interface->relative_oid = "1000"; + management_interface->management_function = snmp_manage; /* Register callback function so we get Net-SNMP logging handled by FreeSWITCH */ snmp_register_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_LOGGING, snmp_callback_log, NULL); @@ -86,10 +104,10 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_snmp_load) init_agent("mod_snmp"); /* - * Override master/subagent ping interval to 5s, to ensure that + * Override master/subagent ping interval to 2s, to ensure that * agent_check_and_process() never blocks for longer than that. */ - netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_AGENTX_PING_INTERVAL, 5); + netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_AGENTX_PING_INTERVAL, 2); init_subagent(); init_snmp("mod_snmp"); @@ -107,6 +125,8 @@ SWITCH_MODULE_RUNTIME_FUNCTION(mod_snmp_runtime) switch_mutex_unlock(globals.mutex); } + switch_yield(5000); + return SWITCH_STATUS_SUCCESS; } commit 4b941542a309a8c7f7ad5d01cfef9d1c487376a8 Author: Anthony Minessale Date: Thu Jan 27 10:34:05 2011 -0600 fix out of place parens in logic test diff --git a/src/switch_channel.c b/src/switch_channel.c index 918ad82..de472a9 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -2564,8 +2564,8 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_ring_ready_value(swi char *app; switch_event_t *event; - if (!switch_channel_test_flag(channel, CF_RING_READY) && !switch_channel_test_flag(channel, CF_EARLY_MEDIA && - !switch_channel_test_flag(channel, CF_ANSWERED))) { + if (!switch_channel_test_flag(channel, CF_RING_READY) && + !switch_channel_test_flag(channel, CF_EARLY_MEDIA) && !switch_channel_test_flag(channel, CF_ANSWERED)) { switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_channel_get_uuid(channel), SWITCH_LOG_NOTICE, "Ring-Ready %s!\n", channel->name); switch_channel_set_flag_value(channel, CF_RING_READY, rv); if (channel->caller_profile && channel->caller_profile->times) { commit b889b44f1d632810662359f6becce869056a076c Author: Anthony Minessale Date: Thu Jan 27 10:28:49 2011 -0600 add channel data to speech events when chosen to fire diff --git a/src/switch_ivr_async.c b/src/switch_ivr_async.c index 4354f0d..0a646b6 100644 --- a/src/switch_ivr_async.c +++ b/src/switch_ivr_async.c @@ -3129,6 +3129,7 @@ static void *SWITCH_THREAD_FUNC speech_thread(switch_thread_t *thread, void *obj switch_event_t *dup; if (switch_event_dup(&dup, event) == SWITCH_STATUS_SUCCESS) { + switch_channel_event_set_data(channel, dup); switch_event_fire(&dup); } commit 22c05ad542e3a36dd7dbb71bef5aca5ff009b1b9 Author: Brian West Date: Thu Jan 27 09:41:18 2011 -0600 fixes from tony diff --git a/scripts/perl/dhcp-inform.pl b/scripts/perl/dhcp-inform.pl index 3f977ca..2ca4bb8 100644 --- a/scripts/perl/dhcp-inform.pl +++ b/scripts/perl/dhcp-inform.pl @@ -61,12 +61,7 @@ while ($sock->recv($newmsg, 1024)) { } print "Sending option 66 as $opt_u\n"; - $handle = IO::Socket::INET->new(Proto => 'udp', - PeerPort => '68', - LocalPort => '67', - ReuseAddr => 1, - PeerAddr => $dhcpreq->ciaddr(), - ) or die "socket: $@"; - $handle->send($dhcpresp->serialize()) + + $sock->send($dhcpresp->serialize()) } } commit 008e527c0f5c86e20521c4ebacf69adcb269b08a Author: Anthony Minessale Date: Thu Jan 27 08:18:22 2011 -0600 FS-3012 diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 643b3dd..47f94b1 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -808,6 +808,18 @@ void sofia_event_callback(nua_event_t event, } } + if ((event == nua_i_invite) && (!session)) { + uint32_t sess_count = switch_core_session_count(); + uint32_t sess_max = switch_core_session_limit(0); + + if (sess_count >= sess_max || !sofia_test_pflag(profile, PFLAG_RUNNING) || !switch_core_ready()) { + nua_respond(nh, 503, "Maximum Calls In Progress", SIPTAG_RETRY_AFTER_STR("300"), TAG_END()); + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "No more sessions allowed at this time.\n"); + + goto done; + } + } if (sofia_test_pflag(profile, PFLAG_AUTH_ALL) && tech_pvt && tech_pvt->key && sip) { sip_authorization_t const *authorization = NULL; commit 425df0c78389d30561a7f025a1a3e3b2fbc5e413 Author: Leon de Rooij Date: Thu Jan 27 14:17:49 2011 +0100 Added test_reactive to mod_lua freeswitch.Dbh diff --git a/src/mod/languages/mod_lua/freeswitch.i b/src/mod/languages/mod_lua/freeswitch.i index 9ccaf8e..25faa5a 100644 --- a/src/mod/languages/mod_lua/freeswitch.i +++ b/src/mod/languages/mod_lua/freeswitch.i @@ -89,6 +89,7 @@ class Dbh { ~Dbh(); bool release(); bool connected(); + bool test_reactive(char *test_sql, char *drop_sql = NULL, char *reactive_sql = NULL); bool query(char *sql, SWIGLUA_FN lua_fun); int affected_rows(); }; diff --git a/src/mod/languages/mod_lua/freeswitch_lua.cpp b/src/mod/languages/mod_lua/freeswitch_lua.cpp index 01f708d..b388f2e 100644 --- a/src/mod/languages/mod_lua/freeswitch_lua.cpp +++ b/src/mod/languages/mod_lua/freeswitch_lua.cpp @@ -350,6 +350,16 @@ bool Dbh::connected() return m_connected; } +bool Dbh::test_reactive(char *test_sql, char *drop_sql, char *reactive_sql) +{ + if (m_connected) { + if (switch_cache_db_test_reactive(dbh, test_sql, drop_sql, reactive_sql) == SWITCH_TRUE) { + return true; + } + } + return false; +} + int Dbh::query_callback(void *pArg, int argc, char **argv, char **cargv) { SWIGLUA_FN *lua_fun = (SWIGLUA_FN *)pArg; diff --git a/src/mod/languages/mod_lua/freeswitch_lua.h b/src/mod/languages/mod_lua/freeswitch_lua.h index 5f79662..6411d69 100644 --- a/src/mod/languages/mod_lua/freeswitch_lua.h +++ b/src/mod/languages/mod_lua/freeswitch_lua.h @@ -62,6 +62,7 @@ namespace LUA { ~Dbh(); bool release(); bool connected(); + bool test_reactive(char *test_sql, char *drop_sql = NULL, char *reactive_sql = NULL); bool query(char *sql, SWIGLUA_FN lua_fun); int affected_rows(); }; diff --git a/src/mod/languages/mod_lua/mod_lua_wrap.cpp b/src/mod/languages/mod_lua/mod_lua_wrap.cpp index f10ed63..1d84a39 100644 --- a/src/mod/languages/mod_lua/mod_lua_wrap.cpp +++ b/src/mod/languages/mod_lua/mod_lua_wrap.cpp @@ -7254,6 +7254,184 @@ fail: } +static int _wrap_Dbh_test_reactive__SWIG_0(lua_State* L) { + int SWIG_arg = -1; + LUA::Dbh *arg1 = (LUA::Dbh *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) 0 ; + char *arg4 = (char *) 0 ; + bool result; + + SWIG_check_num_args("test_reactive",4,4) + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("test_reactive",1,"LUA::Dbh *"); + if(!lua_isstring(L,2)) SWIG_fail_arg("test_reactive",2,"char *"); + if(!lua_isstring(L,3)) SWIG_fail_arg("test_reactive",3,"char *"); + if(!lua_isstring(L,4)) SWIG_fail_arg("test_reactive",4,"char *"); + + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_LUA__Dbh,0))){ + SWIG_fail_ptr("Dbh_test_reactive",1,SWIGTYPE_p_LUA__Dbh); + } + + arg2 = (char *)lua_tostring(L, 2); + arg3 = (char *)lua_tostring(L, 3); + arg4 = (char *)lua_tostring(L, 4); + result = (bool)(arg1)->test_reactive(arg2,arg3,arg4); + SWIG_arg=0; + lua_pushboolean(L,(int)(result==true)); SWIG_arg++; + return SWIG_arg; + + if(0) SWIG_fail; + +fail: + lua_error(L); + return SWIG_arg; +} + + +static int _wrap_Dbh_test_reactive__SWIG_1(lua_State* L) { + int SWIG_arg = -1; + LUA::Dbh *arg1 = (LUA::Dbh *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) 0 ; + bool result; + + SWIG_check_num_args("test_reactive",3,3) + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("test_reactive",1,"LUA::Dbh *"); + if(!lua_isstring(L,2)) SWIG_fail_arg("test_reactive",2,"char *"); + if(!lua_isstring(L,3)) SWIG_fail_arg("test_reactive",3,"char *"); + + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_LUA__Dbh,0))){ + SWIG_fail_ptr("Dbh_test_reactive",1,SWIGTYPE_p_LUA__Dbh); + } + + arg2 = (char *)lua_tostring(L, 2); + arg3 = (char *)lua_tostring(L, 3); + result = (bool)(arg1)->test_reactive(arg2,arg3); + SWIG_arg=0; + lua_pushboolean(L,(int)(result==true)); SWIG_arg++; + return SWIG_arg; + + if(0) SWIG_fail; + +fail: + lua_error(L); + return SWIG_arg; +} + + +static int _wrap_Dbh_test_reactive__SWIG_2(lua_State* L) { + int SWIG_arg = -1; + LUA::Dbh *arg1 = (LUA::Dbh *) 0 ; + char *arg2 = (char *) 0 ; + bool result; + + SWIG_check_num_args("test_reactive",2,2) + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("test_reactive",1,"LUA::Dbh *"); + if(!lua_isstring(L,2)) SWIG_fail_arg("test_reactive",2,"char *"); + + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_LUA__Dbh,0))){ + SWIG_fail_ptr("Dbh_test_reactive",1,SWIGTYPE_p_LUA__Dbh); + } + + arg2 = (char *)lua_tostring(L, 2); + result = (bool)(arg1)->test_reactive(arg2); + SWIG_arg=0; + lua_pushboolean(L,(int)(result==true)); SWIG_arg++; + return SWIG_arg; + + if(0) SWIG_fail; + +fail: + lua_error(L); + return SWIG_arg; +} + + +static int _wrap_Dbh_test_reactive(lua_State* L) { + int argc; + int argv[5]={ + 1,2,3,4,5 + }; + + argc = lua_gettop(L); + if (argc == 2) { + int _v; + { + void *ptr; + if (SWIG_isptrtype(L,argv[0])==0 || SWIG_ConvertPtr(L,argv[0], (void **) &ptr, SWIGTYPE_p_LUA__Dbh, 0)) { + _v = 0; + } else { + _v = 1; + } + } + if (_v) { + { + _v = lua_isstring(L,argv[1]); + } + if (_v) { + return _wrap_Dbh_test_reactive__SWIG_2(L); + } + } + } + if (argc == 3) { + int _v; + { + void *ptr; + if (SWIG_isptrtype(L,argv[0])==0 || SWIG_ConvertPtr(L,argv[0], (void **) &ptr, SWIGTYPE_p_LUA__Dbh, 0)) { + _v = 0; + } else { + _v = 1; + } + } + if (_v) { + { + _v = lua_isstring(L,argv[1]); + } + if (_v) { + { + _v = lua_isstring(L,argv[2]); + } + if (_v) { + return _wrap_Dbh_test_reactive__SWIG_1(L); + } + } + } + } + if (argc == 4) { + int _v; + { + void *ptr; + if (SWIG_isptrtype(L,argv[0])==0 || SWIG_ConvertPtr(L,argv[0], (void **) &ptr, SWIGTYPE_p_LUA__Dbh, 0)) { + _v = 0; + } else { + _v = 1; + } + } + if (_v) { + { + _v = lua_isstring(L,argv[1]); + } + if (_v) { + { + _v = lua_isstring(L,argv[2]); + } + if (_v) { + { + _v = lua_isstring(L,argv[3]); + } + if (_v) { + return _wrap_Dbh_test_reactive__SWIG_0(L); + } + } + } + } + } + + lua_pushstring(L,"No matching function for overloaded 'Dbh_test_reactive'"); + lua_error(L);return 0; +} + + static int _wrap_Dbh_query(lua_State* L) { int SWIG_arg = -1; LUA::Dbh *arg1 = (LUA::Dbh *) 0 ; @@ -7328,6 +7506,7 @@ delete arg1; static swig_lua_method swig_LUA_Dbh_methods[] = { {"release", _wrap_Dbh_release}, {"connected", _wrap_Dbh_connected}, + {"test_reactive", _wrap_Dbh_test_reactive}, {"query", _wrap_Dbh_query}, {"affected_rows", _wrap_Dbh_affected_rows}, {0,0} commit a01814794c1fb49b77a6015edc8e1ad6c925bae3 Author: Leon de Rooij Date: Thu Jan 27 13:10:26 2011 +0100 Added optional core: prefix to first arg passed to freeswitch.Dbh for giving direct access to sqlite db diff --git a/src/mod/languages/mod_lua/freeswitch_lua.cpp b/src/mod/languages/mod_lua/freeswitch_lua.cpp index 1a170dc..01f708d 100644 --- a/src/mod/languages/mod_lua/freeswitch_lua.cpp +++ b/src/mod/languages/mod_lua/freeswitch_lua.cpp @@ -312,15 +312,21 @@ switch_status_t Session::run_dtmf_callback(void *input, switch_input_type_t ityp Dbh::Dbh(char *dsn, char *user, char *pass) { switch_cache_db_connection_options_t options = { {0} }; + const char *prefix = "core:"; + m_connected = false; - options.odbc_options.dsn = dsn; - options.odbc_options.user = user; - options.odbc_options.pass = pass; - - if (switch_cache_db_get_db_handle(&dbh, SCDB_TYPE_ODBC, &options) == SWITCH_STATUS_SUCCESS) { - m_connected = true; + if (strstr(dsn, prefix) == dsn) { + options.core_db_options.db_path = &dsn[strlen(prefix)]; + if (switch_cache_db_get_db_handle(&dbh, SCDB_TYPE_CORE_DB, &options) == SWITCH_STATUS_SUCCESS) { + m_connected = true; + } } else { - m_connected = false; + options.odbc_options.dsn = dsn; + options.odbc_options.user = user; + options.odbc_options.pass = pass; + if (switch_cache_db_get_db_handle(&dbh, SCDB_TYPE_ODBC, &options) == SWITCH_STATUS_SUCCESS) { + m_connected = true; + } } } commit 9ffca057f109725986b741cb6019dce620c056b7 Author: David Yat Sin Date: Wed Jan 26 17:24:25 2011 -0500 chlog: freetdm - isdn: fix for not including some bearer-cap contents on BRI diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support.c b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support.c index 64147b7..23fe08b 100644 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support.c +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support.c @@ -873,38 +873,32 @@ ftdm_status_t set_bear_cap_ie(ftdm_channel_t *ftdmchan, BearCap *bearCap) bearCap->tranMode.pres = PRSNT_NODEF; bearCap->tranMode.val = IN_TM_CIRCUIT; - if (!FTDM_SPAN_IS_BRI(ftdmchan->span)) { - /* Trillium stack rejests lyr1Ident on BRI, but Netbricks always sends it. - Check with Trillium if this ever causes calls to fail in the field */ + bearCap->usrInfoLyr1Prot.pres = PRSNT_NODEF; + bearCap->usrInfoLyr1Prot.val = sngisdn_get_usrInfoLyr1Prot_from_user(ftdmchan->caller_data.bearer_layer1); - /* PRI only params */ - bearCap->usrInfoLyr1Prot.pres = PRSNT_NODEF; - bearCap->usrInfoLyr1Prot.val = sngisdn_get_usrInfoLyr1Prot_from_user(ftdmchan->caller_data.bearer_layer1); - - switch (signal_data->switchtype) { - case SNGISDN_SWITCH_NI2: - case SNGISDN_SWITCH_4ESS: - case SNGISDN_SWITCH_5ESS: - case SNGISDN_SWITCH_DMS100: - case SNGISDN_SWITCH_INSNET: - if (bearCap->usrInfoLyr1Prot.val == IN_UIL1_G711ALAW) { - ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Overriding bearer cap to u-law\n"); - bearCap->usrInfoLyr1Prot.val = IN_UIL1_G711ULAW; - } - break; - case SNGISDN_SWITCH_EUROISDN: - case SNGISDN_SWITCH_QSIG: - if (bearCap->usrInfoLyr1Prot.val == IN_UIL1_G711ULAW) { - ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Overriding bearer cap to a-law\n"); - bearCap->usrInfoLyr1Prot.val = IN_UIL1_G711ALAW; - } - break; - } - - - bearCap->lyr1Ident.pres = PRSNT_NODEF; - bearCap->lyr1Ident.val = IN_L1_IDENT; + switch (signal_data->switchtype) { + case SNGISDN_SWITCH_NI2: + case SNGISDN_SWITCH_4ESS: + case SNGISDN_SWITCH_5ESS: + case SNGISDN_SWITCH_DMS100: + case SNGISDN_SWITCH_INSNET: + if (bearCap->usrInfoLyr1Prot.val == IN_UIL1_G711ALAW) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Overriding bearer cap to u-law\n"); + bearCap->usrInfoLyr1Prot.val = IN_UIL1_G711ULAW; + } + break; + case SNGISDN_SWITCH_EUROISDN: + case SNGISDN_SWITCH_QSIG: + if (bearCap->usrInfoLyr1Prot.val == IN_UIL1_G711ULAW) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Overriding bearer cap to a-law\n"); + bearCap->usrInfoLyr1Prot.val = IN_UIL1_G711ALAW; + } + break; } + + bearCap->lyr1Ident.pres = PRSNT_NODEF; + bearCap->lyr1Ident.val = IN_L1_IDENT; + return FTDM_SUCCESS; } commit 6f58e6aa425283137effa286d7f8638aa035aff4 Author: Anthony Minessale Date: Wed Jan 26 15:19:28 2011 -0600 FS-2771 diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index 472f2d9..12b3193 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -152,7 +152,8 @@ typedef enum { CFLAG_BRIDGE_TO = (1 << 6), CFLAG_WAIT_MOD = (1 << 7), CFLAG_VID_FLOOR = (1 << 8), - CFLAG_WASTE_BANDWIDTH = (1 << 9) + CFLAG_WASTE_BANDWIDTH = (1 << 9), + CFLAG_OUTCALL = (1 << 10) } conf_flag_t; typedef enum { @@ -288,6 +289,8 @@ typedef struct conference_obj { uint32_t avg_tally; switch_time_t run_time; char *uuid_str; + uint32_t originating; + switch_call_cause_t cancel_cause; } conference_obj_t; /* Relationship with another member */ @@ -395,11 +398,16 @@ SWITCH_STANDARD_API(conf_api_main); static switch_status_t conference_outcall(conference_obj_t *conference, char *conference_name, switch_core_session_t *session, - char *bridgeto, uint32_t timeout, char *flags, char *cid_name, char *cid_num, switch_call_cause_t *cause); + char *bridgeto, uint32_t timeout, + char *flags, + char *cid_name, + char *cid_num, + switch_call_cause_t *cause, + switch_call_cause_t *cancel_cause); static switch_status_t conference_outcall_bg(conference_obj_t *conference, char *conference_name, switch_core_session_t *session, char *bridgeto, uint32_t timeout, const char *flags, const char *cid_name, - const char *cid_num, const char *call_uuid); + const char *cid_num, const char *call_uuid, switch_call_cause_t *cancel_cause); SWITCH_STANDARD_APP(conference_function); static void launch_conference_thread(conference_obj_t *conference); static void launch_conference_video_thread(conference_obj_t *conference); @@ -1381,6 +1389,14 @@ static void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, v /* Rinse ... Repeat */ end: + if (switch_test_flag(conference, CFLAG_OUTCALL)) { + conference->cancel_cause = SWITCH_CAUSE_ORIGINATOR_CANCEL; + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Ending pending outcall channels for Conference: '%s'\n", conference->name); + while(conference->originating) { + switch_yield(200000); + } + } + if (switch_event_create(&event, SWITCH_EVENT_PRESENCE_IN) == SWITCH_STATUS_SUCCESS) { switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", CONF_CHAT_PROTO); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", conference->name); @@ -2404,6 +2420,8 @@ static void conference_loop_output(conference_member_t *member) switch_channel_set_private(channel, "_conference_autocall_list_", NULL); + switch_set_flag(member->conference, CFLAG_OUTCALL); + if (toval) { to = atoi(toval); if (to < 10 || to > 500) { @@ -2422,7 +2440,8 @@ static void conference_loop_output(conference_member_t *member) for (x = 0; x < argc; x++) { char *dial_str = switch_mprintf("%s%s", switch_str_nil(prefix), argv[x]); switch_assert(dial_str); - conference_outcall_bg(member->conference, NULL, NULL, dial_str, to, switch_str_nil(flags), cid_name, cid_num, NULL); + conference_outcall_bg(member->conference, NULL, NULL, dial_str, to, switch_str_nil(flags), cid_name, cid_num, NULL, + &member->conference->cancel_cause); switch_safe_free(dial_str); } switch_safe_free(cpstr); @@ -4244,9 +4263,9 @@ static switch_status_t conf_api_sub_dial(conference_obj_t *conference, switch_st } if (conference) { - conference_outcall(conference, NULL, NULL, argv[2], 60, NULL, argv[4], argv[3], &cause); + conference_outcall(conference, NULL, NULL, argv[2], 60, NULL, argv[4], argv[3], &cause, NULL); } else { - conference_outcall(NULL, argv[0], NULL, argv[2], 60, NULL, argv[4], argv[3], &cause); + conference_outcall(NULL, argv[0], NULL, argv[2], 60, NULL, argv[4], argv[3], &cause, NULL); } stream->write_function(stream, "Call Requested: result: [%s]\n", switch_channel_cause2str(cause)); @@ -4269,9 +4288,9 @@ static switch_status_t conf_api_sub_bgdial(conference_obj_t *conference, switch_ switch_uuid_format(uuid_str, &uuid); if (conference) { - conference_outcall_bg(conference, NULL, NULL, argv[2], 60, NULL, argv[4], argv[3], uuid_str); + conference_outcall_bg(conference, NULL, NULL, argv[2], 60, NULL, argv[4], argv[3], uuid_str, NULL); } else { - conference_outcall_bg(NULL, argv[0], NULL, argv[2], 60, NULL, argv[4], argv[3], uuid_str); + conference_outcall_bg(NULL, argv[0], NULL, argv[2], 60, NULL, argv[4], argv[3], uuid_str, NULL); } stream->write_function(stream, "OK Job-UUID: %s\n", uuid_str); @@ -4785,7 +4804,11 @@ SWITCH_STANDARD_API(conf_api_main) static switch_status_t conference_outcall(conference_obj_t *conference, char *conference_name, switch_core_session_t *session, - char *bridgeto, uint32_t timeout, char *flags, char *cid_name, char *cid_num, switch_call_cause_t *cause) + char *bridgeto, uint32_t timeout, + char *flags, char *cid_name, + char *cid_num, + switch_call_cause_t *cause, + switch_call_cause_t *cancel_cause) { switch_core_session_t *peer_session = NULL; switch_channel_t *peer_channel; @@ -4831,8 +4854,15 @@ static switch_status_t conference_outcall(conference_obj_t *conference, /* establish an outbound call leg */ - if (switch_ivr_originate(session, &peer_session, cause, bridgeto, timeout, NULL, cid_name, cid_num, NULL, NULL, SOF_NO_LIMITS, NULL) != - SWITCH_STATUS_SUCCESS) { + switch_mutex_lock(conference->mutex); + conference->originating++; + switch_mutex_unlock(conference->mutex); + status = switch_ivr_originate(session, &peer_session, cause, bridgeto, timeout, NULL, cid_name, cid_num, NULL, NULL, SOF_NO_LIMITS, cancel_cause); + switch_mutex_lock(conference->mutex); + conference->originating--; + switch_mutex_unlock(conference->mutex); + + if (status != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Cannot create outgoing channel, cause: %s\n", switch_channel_cause2str(*cause)); if (caller_channel) { @@ -4909,6 +4939,7 @@ struct bg_call { char *cid_num; char *conference_name; char *uuid; + switch_call_cause_t *cancel_cause; switch_memory_pool_t *pool; }; @@ -4921,7 +4952,7 @@ static void *SWITCH_THREAD_FUNC conference_outcall_run(switch_thread_t *thread, switch_event_t *event; conference_outcall(call->conference, call->conference_name, - call->session, call->bridgeto, call->timeout, call->flags, call->cid_name, call->cid_num, &cause); + call->session, call->bridgeto, call->timeout, call->flags, call->cid_name, call->cid_num, &cause, call->cancel_cause); if (call->conference && test_eflag(call->conference, EFLAG_BGDIAL_RESULT) && switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) { @@ -4949,7 +4980,7 @@ static void *SWITCH_THREAD_FUNC conference_outcall_run(switch_thread_t *thread, static switch_status_t conference_outcall_bg(conference_obj_t *conference, char *conference_name, switch_core_session_t *session, char *bridgeto, uint32_t timeout, const char *flags, const char *cid_name, - const char *cid_num, const char *call_uuid) + const char *cid_num, const char *call_uuid, switch_call_cause_t *cancel_cause) { struct bg_call *call = NULL; switch_thread_t *thread; @@ -4963,6 +4994,7 @@ static switch_status_t conference_outcall_bg(conference_obj_t *conference, call->conference = conference; call->session = session; call->timeout = timeout; + call->cancel_cause = cancel_cause; if (conference) { pool = conference->pool; @@ -5717,7 +5749,7 @@ SWITCH_STANDARD_APP(conference_function) /* if we're using "bridge:" make an outbound call and bridge it in */ if (!zstr(bridgeto) && strcasecmp(bridgeto, "none")) { switch_call_cause_t cause; - if (conference_outcall(conference, NULL, session, bridgeto, 60, NULL, NULL, NULL, &cause) != SWITCH_STATUS_SUCCESS) { + if (conference_outcall(conference, NULL, session, bridgeto, 60, NULL, NULL, NULL, &cause, NULL) != SWITCH_STATUS_SUCCESS) { goto done; } } else { ----------------------------------------------------------------------- Summary of changes: .gitignore | 7 +- conf/freeswitch.xml | 3 - libs/freetdm/msvc/freetdm.2010.vcxproj | 2 + libs/freetdm/msvc/freetdm.2010.vcxproj.filters | 6 + libs/freetdm/msvc/testboost/testboost.2010.vcxproj | 6 +- .../msvc/testboost/testsangomaboost.2010.vcxproj | 6 +- .../ftmod_sangoma_boost.2010.vcxproj | 12 +- .../ftmod_sangoma_isdn_support.c | 54 ++--- .../ftmod/ftmod_wanpipe/ftmod_wanpipe.2010.vcxproj | 8 +- scripts/perl/dhcp-inform.pl | 9 +- .../applications/mod_callcenter/mod_callcenter.c | 9 +- .../applications/mod_conference/mod_conference.c | 60 ++++- src/mod/applications/mod_spandsp/mod_spandsp_fax.c | 89 ++++--- src/mod/endpoints/mod_gsmopen/.gitignore | 2 + src/mod/endpoints/mod_sofia/sofia.c | 12 + src/mod/event_handlers/mod_snmp/FREESWITCH-MIB | 217 ++++++++++++++++- src/mod/event_handlers/mod_snmp/mod_snmp.c | 26 ++- src/mod/event_handlers/mod_snmp/subagent.c | 260 ++++++++++++++++++-- src/mod/event_handlers/mod_snmp/subagent.h | 57 +++++- src/mod/languages/mod_lua/freeswitch.i | 1 + src/mod/languages/mod_lua/freeswitch_lua.cpp | 32 ++- src/mod/languages/mod_lua/freeswitch_lua.h | 1 + src/mod/languages/mod_lua/mod_lua_wrap.cpp | 179 ++++++++++++++ src/mod/languages/mod_managed/freeswitch_wrap.cxx | 127 ++++++++++ src/mod/languages/mod_managed/managed/swig.cs | 134 ++++++++++- src/switch_channel.c | 4 +- src/switch_core_sqldb.c | 11 +- src/switch_ivr_async.c | 1 + 28 files changed, 1182 insertions(+), 153 deletions(-) hooks/post-receive -- FreeSWITCH From git at svn.freeswitch.org Mon Jan 31 23:56:45 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Mon, 31 Jan 2011 14:56:45 -0600 Subject: [Freeswitch-trunk] [GIT]FreeSWITCH branch master updated. git2svn-syncpoint-master-1669-g766f2d6 Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "FreeSWITCH". The branch, master has been updated via 766f2d61651f161b074fad2f987b4f10532a9a7a (commit) from 1623e5d2952d63e2e49d454cd6fdf921a8516227 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 766f2d61651f161b074fad2f987b4f10532a9a7a Author: Travis Cross Date: Mon Jan 31 18:24:08 2011 +0000 fix typo: cant -> can't diff --git a/src/mod/applications/mod_spy/mod_spy.c b/src/mod/applications/mod_spy/mod_spy.c index 9986703..e0a9317 100644 --- a/src/mod/applications/mod_spy/mod_spy.c +++ b/src/mod/applications/mod_spy/mod_spy.c @@ -201,14 +201,14 @@ static void event_handler(switch_event_t *event) } if (!(peer_session = switch_core_session_locate(peer_uuid))) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cant locate peer session for uuid %s\n", peer_uuid); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't locate peer session for uuid %s\n", peer_uuid); return; } peer_channel = switch_core_session_get_channel(peer_session); if (switch_event_create(&peer_event, SWITCH_EVENT_CHANNEL_BRIDGE) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cant create bridge event for peer channel %s\n", peer_uuid); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't create bridge event for peer channel %s\n", peer_uuid); goto end; } @@ -249,7 +249,7 @@ SWITCH_STANDARD_APP(userspy_function) status = switch_core_hash_insert(globals.spy_hash, argv[0], (void *) uuid); if ((status != SWITCH_STATUS_SUCCESS)) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Cant insert to spy hash\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Can't insert to spy hash\n"); switch_channel_hangup(channel, SWITCH_CAUSE_SERVICE_NOT_IMPLEMENTED); switch_thread_rwlock_unlock(globals.spy_hash_lock); return; ----------------------------------------------------------------------- Summary of changes: src/mod/applications/mod_spy/mod_spy.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) hooks/post-receive -- FreeSWITCH From git at svn.freeswitch.org Mon Jan 31 23:56:49 2011 From: git at svn.freeswitch.org (git at svn.freeswitch.org) Date: Mon, 31 Jan 2011 14:56:49 -0600 Subject: [Freeswitch-trunk] [GIT]FreeSWITCH branch master updated. git2svn-syncpoint-master-1670-g1f1541b Message-ID: This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "FreeSWITCH". The branch, master has been updated via 1f1541b474c549d6a13b6a943d13f046d463751a (commit) from 766f2d61651f161b074fad2f987b4f10532a9a7a (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 1f1541b474c549d6a13b6a943d13f046d463751a Author: Travis Cross Date: Mon Jan 31 18:34:24 2011 +0000 lower log-level of a mod_spy message When a session loses a race to bridge a call, the CHANNEL_BRIDGE event handler is still run, yet session_locate is going to return null as it won't get a read-lock on the peer's session. Since this is a normal and common condition, let's log this as a debug message rather than as an error condition. diff --git a/src/mod/applications/mod_spy/mod_spy.c b/src/mod/applications/mod_spy/mod_spy.c index e0a9317..1797539 100644 --- a/src/mod/applications/mod_spy/mod_spy.c +++ b/src/mod/applications/mod_spy/mod_spy.c @@ -201,7 +201,7 @@ static void event_handler(switch_event_t *event) } if (!(peer_session = switch_core_session_locate(peer_uuid))) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't locate peer session for uuid %s\n", peer_uuid); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Can't locate peer session for uuid %s\n", peer_uuid); return; } ----------------------------------------------------------------------- Summary of changes: src/mod/applications/mod_spy/mod_spy.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) hooks/post-receive -- FreeSWITCH