Commit Graph

2494 Commits

Author SHA1 Message Date
Chris Rienzo 0c8f5ed60d FS-11453 [core] remove dependency to libtap for unit tests
move all core unit tests to tests/unit
2018-12-20 10:18:28 -05:00
Chris Rienzo 2226c3c621 FS-11453 [mod_rayo] convert to fst testing 2018-12-20 10:18:14 -05:00
Chris Rienzo 101512ba33 FS-11442 [mod_test] new module, mod_test - mock ASR interface. 2018-12-20 10:17:50 -05:00
Chris Rienzo a4a0dd81bb FS-11442 [core] allow multiple test modules to be loaded in the same test program. 2018-12-20 10:17:39 -05:00
Chris Rienzo 5014e11eeb FS-11442 [core] Add test helpers for wall time measurements and integer/double range checks. Improve simple test log output to identify which test the failure is in. 2018-12-20 10:17:27 -05:00
Chris Rienzo 3dd0eadcc1 FS-11442 [core] added test helpers for constructing XML objects 2018-12-20 10:17:15 -05:00
Chris Rienzo e95beb8d4f FS-11442 [core] added fst_play_and_detect_app_test and fst_sched_recv_dtmf 2018-12-20 10:17:04 -05:00
Chris Rienzo 3f512c0a74 FS-11439 [core] Update switch_test.h so unprivileged users can execute tests when basedir is owned by root. 2018-12-20 10:16:53 -05:00
Seven Du e36caa7544 FS-11416 fix build error FCT_FIXTURE_SUITE_BGN undefined 2018-12-20 10:16:46 -05:00
Chris Rienzo d298b4f93a FS-11416 [core] add test framework header files. 2018-09-27 14:19:48 -04:00
Seven Du 710d011c85 FS-11340 export switch_vad_state2str and update vad_test to support the latest params
FS-11340 check the status for read frame avoid crash
2018-09-24 20:22:24 +00:00
Seven Du bdc21a0607 FS-11405 #resolve tweak macro to use do while 0
the original one will leave an extra semicolon after }
2018-09-24 18:52:07 +00:00
Mike Jerris 0367b3b023 FS-11382: [core] add switch_pool_strip_whitespace function to strip whitespace using pool allocation 2018-09-06 17:49:46 +00:00
Mike Jerris 99df402921 Merge pull request #1492 in FS/freeswitch from ~HUNYI/freeswitch:bugfix/FS-8579-broadcast-hold-bleg to master
* commit '554387c8dc53b0e3a8b9d530a799d681cef5e6e6':
  Skip holding b leg only if it is on hold
2018-09-05 22:35:31 +00:00
Mike Jerris a4db3a4355 Merge pull request #1491 in FS/freeswitch from ~HUNYI/freeswitch:feature/FS-8900-improve-record_follow_transfer to master
* commit '069da397f5b9e7adb10c2c9d8d03f83d195dae37':
  Improve recording transfer
2018-09-05 22:34:38 +00:00
Anthony Minessale 65524ea2c1 FS-11379: [freeswitch-core] Rare race condition in state machine #resolve 2018-09-05 18:20:58 -04:00
Anthony Minessale b4a64d4817 FS-11380: [core] add new internal function 2018-09-05 18:20:54 -04:00
Anthony Minessale d3e320ef56 FS-11346: [core] add api to pass pre-parsed values instead of dial strings to switch_ivr_originate
SWITCH_DECLARE(switch_status_t) switch_dial_handle_create(switch_dial_handle_t **handle);
SWITCH_DECLARE(void) switch_dial_handle_destroy(switch_dial_handle_t **handle);
SWITCH_DECLARE(void) switch_dial_handle_add_leg_list(switch_dial_handle_t *handle, switch_dial_leg_list_t **leg_listP);
SWITCH_DECLARE(void) switch_dial_leg_list_add_leg(switch_dial_leg_list_t *parent, const char *dial_string, switch_dial_leg_t **legP);
SWITCH_DECLARE(void) switch_dial_handle_add_global_var(switch_dial_handle_t *handle, const char *var, const char *val);
SWITCH_DECLARE(void) switch_dial_handle_add_global_var_printf(switch_dial_handle_t *handle, const char *var, const char *fmt, ...);
SWITCH_DECLARE(switch_status_t) switch_dial_handle_add_leg_var(switch_dial_leg_t *leg, const char *var, const char *val);
SWITCH_DECLARE(switch_status_t) switch_dial_handle_add_leg_var_printf(switch_dial_leg_t *leg, const char *var, const char *fmt, ...);
SWITCH_DECLARE(int) switch_dial_handle_get_peers(switch_dial_handle_t *handle, int idx, char **array, int max);
SWITCH_DECLARE(int) switch_dial_handle_get_vars(switch_dial_handle_t *handle, int idx, switch_event_t **array, int max);
SWITCH_DECLARE(switch_event_t *) switch_dial_handle_get_global_vars(switch_dial_handle_t *handle);
SWITCH_DECLARE(switch_event_t *) switch_dial_leg_get_vars(switch_dial_leg_t *leg);
SWITCH_DECLARE(int) switch_dial_handle_get_total(switch_dial_handle_t *handle);
SWITCH_DECLARE(void) switch_ivr_orig_and_bridge(switch_core_session_t *session, const char *data, switch_dial_handle_t *dh);

add switch_dial_handle_t *dh to end of args for switch_ivr_originate
2018-08-22 18:20:13 +00:00
Mike Jerris b03cde3c57 FS-11341: [core] clang static analyzer warning in switch_utils.h:switch_parse_cpu_string 2018-08-21 17:51:06 +00:00
Piotr Gregor 6cd17fd556 FS-11052: Allow alias for crypto suites
For outgoing calls send AES crypto in offer using corrected names
for keys of length 192 and 256, i.e. names containing _192_CM_
and _256_CM_ instead of _CM_192_ and CM_256_. For incoming calls
accept both naming conventions, decaying to same entry in SUITES.

+ fix after SRTP failed for 256 keys:

Tests showed loop removing '=' from keys in switch_core_media_build_crypto

 1190     if (!switch_channel_var_true(channel, "rtp_pad_srtp_keys")) {
 1191         p = strrchr((char *) b64_key, '=');
 1192
 1193         while (p && *p && *p == '=') {
 1194             *p-- = '\0';
 1195         }
 1196     }

shouldn't be executed for AES_CM_256_HMAC_SHA1_32 and AES_CM_256_HMAC_SHA1_80
keys and it is meaningless for AES_CM_128_HMAC_SHA1_32 AES_CM_128_HMAC_SHA1_80
keys. Tested calling from Bria.

Introduced switch_channel_var_false and changed this to:
	if (switch_channel_var_false(channel, "rtp_pad_srtp_keys"))
to enter the loop if var is set to false (and not if it is _not_ set).
2018-08-13 20:57:50 +00:00
Seven Du ae4e48fa15 FS-11265 #resolve add detectSpeech and playAndDetectSpeech 2018-08-13 18:59:53 +00:00
Mike Jerris a1c0e7eb92 Merge pull request #1564 in FS/freeswitch from fs-11310-switch-core-file-pre-close to master
* commit '720128b61ed0fba0c45ba7caa0d3d7a4bde2ffb4':
  FS-11310 #resolve add more params for conference record stop event
  FS-11310 #resolve add optional switch_core_file_pre_close() to stop writing to file and possible to get file size related params
2018-08-09 06:53:04 +00:00
Liyang ce6366474f FS-11310 #resolve add optional switch_core_file_pre_close() to stop writing to file and possible to get file size related params 2018-08-03 21:54:47 +08:00
Andrey Volk 5c4211e43d FS-11189: [Build-System] Windows build regression fix. 2018-07-24 17:46:38 +03:00
Andrey Volk 2323421b5a FS-11189: [Build-System] Fix Windows build. 2018-07-24 16:11:54 +03:00
Seven Du e1e8ebc0ab FS-11189: [core] add func to parse cpu string 2018-07-24 07:21:57 +00:00
Joshua Young afcb1f8d51 FS-11178: [core] return switch_status_t from switch_ivr_intercept_session 2018-07-24 07:21:53 +00:00
Mike Jerris dc95ee3d66 Revert "FS-11052: Allow alias for crypto suites"
This reverts commit 7cc6d5f99d16d2d63cb2548dd7b8345d579b7e9f.
2018-07-24 07:21:52 +00:00
Seven Du a0fd0a1b44 FS-11093 #resolve switch_true should return switch_bool_t 2018-07-24 07:21:50 +00:00
Seven Du 413ea14fd4 [FS-11092] #resolve add cJSON_isTrue 2018-07-24 07:21:50 +00:00
Seven Du 99d2e5e243 FS-11014 [core] add vad to core 2018-07-24 07:21:47 +00:00
Anthony Minessale 054229fb68 FS-11021: [mod_conference] Add video mirror #resolve 2018-07-24 07:21:45 +00:00
Mike Jerris e58ff3392f FS-10853: remove extern that is no longer needed 2018-07-24 07:21:42 +00:00
Sergey Khripchenko 94038f3c12 FS-11056: [core] fix RTCP lost calculation
RTCP/Receiver Report/lost field is a _signed_ 24bit integer and it could be negative (in case of UDP duplication)
+ any negatives now threated as huge uint32_t
+ set this field properly on __BIG_ENDIAN
+ correctly read this value in received RTCP on all arches
2018-07-24 07:21:41 +00:00
Piotr Gregor 3a502eaf6e FS-11052: Allow alias for crypto suites
For outgoing calls send AES crypto in offer using corrected names
for keys of length 192 and 256, i.e. names containing _192_CM_
and _256_CM_ instead of _CM_192_ and CM_256_. For incoming calls
accept both naming conventions, decaying to same entry in SUITES.
2018-07-24 07:21:41 +00:00
Brian West 291da11322 FS-10867: [freeswitch-core] Prevent stack smash when queing multiple sound files without event-lock #resolve 2018-07-24 07:21:38 +00:00
Seven Du a83990a5aa tweak av and ensure first image write at pts = 0 to avoid a black screen 2018-07-24 07:21:37 +00:00
Piotr Gregor 03d8aa4e9a FS-10853: Fix failed build for mod_dingaling
Fixes build but must be tested at runtime.
2018-07-24 07:21:34 +00:00
Piotr Gregor 1fdd58f533 FS-10778: Add support for MKI to SRTP
MKI support for SRTP has been tested on calls to/from
Telnyx's Skype for Business from/to local extension registered to FS
and between Skype for Business clients connected to FreeSWITCH.

SfB -> FreeSWITCH -> User 1004
   SRTP           RTP
   with
   MKI

SfB <- FreeSWITCH <- User 1004
   SRTP           RTP

SfB <-> FreeSWITCH <-> SfB
 SRTP/MKI      SRTP/MKI

Channel variable "rtp_secure_media_mki" was added to drive offering
of MKI on outbound SRTP from FS.

How to use rtp_secure_media_mki

Set rtp_secure_media_mki=true to offer MKI for outgoing SRTP (if SRTP is used) in inbound call.
Export rtp_secure_media=true to offer MKI for outgoing SRTP (if SRTP is used) on outbound call.
... or set it in the codec string for bridged calls

<action application="set" data="rtp_secure_media_mki=true"/>

<action application="export" data="rtp_secure_media_mki=true"/>

<action application="bridge" data="[absolute_codec_string=^^:PCMU:PCMA:G729,rtp_secure_media=true,rtp_secure_media_mki=true]sofia/external/+12404373253@169.55.36.24:5060;transport=tls"/>

EXAMPLES

1. Set example

 57     <extension name="telnyx_test_1_2">
 58         <condition field="destination_number" expression="^(0012404373253)$">
 59             <action application="set" data="rtp_secure_media=true"/>
 60             <action application="set" data="rtp_secure_media_mki=true"/>
 61             <action application="answer"/>
 62             <action application="bridge" data="user/1004@${domain_name}"/>
 63       </condition>
 64   </extension>

Description: SRTP will be used on outbound leg in incoming call due to rtp_secure_media=true
set and MKI will be offered in SDP. SRTP will not be used on a bridged call to extension 1004.

2. Export example

 75   <extension name="to_skype_for_business">
 76       <condition field="destination_number" expression="^(840531022)$">
 77           <action application="set" data="rtp_secure_media=optional"/>
 78           <action application="export" data="rtp_secure_media_mki=true"/>
 79           <action application="bridge" data="[absolute_codec_string=^^:PCMU:PCMA:G729,rtp_secure_media=true]sofia/external/+12404373728@169.55.36.24:5060;transport=tls"/>
 80       </condition>
 81   </extension>

Description: SRTP on inbound call has been set to optional therefore MKI will be used
on outbound SRTP in this call if SRTP is used at all. SRTP will be used on a bridged call
due to rtp_secure_media=true set in codec string and MKI will be used in offering SDP.

3. Bridging between Skype for Business clients: set

 97     <extension name="S4B_fs_S4B">
 98         <condition field="destination_number" expression="^(0012404373254)$">
 99             <action application="set" data="rtp_secure_media=true"/>
100             <action application="set" data="rtp_secure_media_mki=true"/>
101             <action application="bridge" data="[absolute_codec_string=^^:PCMU:PCMA:G729,rtp_secure_media=true]sofia/external/+12404373253@169.55.36.$
102       </condition>
103   </extension>

Result:
2017-11-27 19:00:26.977704 [NOTICE] switch_ivr_originate.c:527 Ring Ready sofia/external/+12404373728@telnyxlab.com!
2017-11-27 19:00:32.657687 [NOTICE] switch_core_media.c:1534 Skipping MKI due to empty index
2017-11-27 19:00:32.657687 [INFO] switch_rtp.c:4079 Activating audio Secure RTP SEND
2017-11-27 19:00:32.657687 [INFO] switch_rtp.c:4057 Activating audio Secure RTP RECV
2017-11-27 19:00:32.657687 [NOTICE] sofia.c:8419 Channel [sofia/external/%2B12404373253@169.55.36.24:5060] has been answered
2017-11-27 19:00:35.317702 [INFO] switch_rtp.c:4079 Activating audio Secure RTP SEND (with MKI)
2017-11-27 19:00:35.317702 [INFO] switch_rtp.c:4057 Activating audio Secure RTP RECV (with MKI)
2017-11-27 19:00:35.317702 [NOTICE] sofia_media.c:92 Pre-Answer sofia/external/+12404373728@telnyxlab.com!

Description: SRTP with MKI is used on outbound leg of inbound call (due to use on inbound leg of this call and "set").
Standard SRTP is used in both legs of outbound call, because rtp_secure_media_mki wasn't exported
or set in codec string for the outbound call.

4. Bridging between Skype for Business clients: Set and export

 97     <extension name="S4B_fs_S4B">
 98         <condition field="destination_number" expression="^(0012404373254)$">
 99             <action application="set" data="rtp_secure_media=true"/>
100             <action application="set" data="rtp_secure_media_mki=true"/>
101             <action application="export" data="rtp_secure_media_mki=true"/>
102             <action application="bridge" data="[absolute_codec_string=^^:PCMU:PCMA:G729,rtp_secure_media=true]sofia/external/+12404373253@169.55.36.24:5060;transport=tls"/>
103       </condition>
104   </extension>

Result:
2017-11-27 18:51:29.017689 [NOTICE] switch_ivr_originate.c:527 Ring Ready sofia/external/+12404373728@telnyxlab.com!
2017-11-27 18:51:35.097729 [INFO] switch_rtp.c:4079 Activating audio Secure RTP SEND (with MKI)
2017-11-27 18:51:35.097729 [INFO] switch_rtp.c:4057 Activating audio Secure RTP RECV (with MKI)
2017-11-27 18:51:35.097729 [NOTICE] sofia.c:8419 Channel [sofia/external/%2B12404373253@169.55.36.24:5060] has been answered
2017-11-27 18:51:37.797706 [INFO] switch_rtp.c:4079 Activating audio Secure RTP SEND (with MKI)
2017-11-27 18:51:37.797706 [INFO] switch_rtp.c:4057 Activating audio Secure RTP RECV (with MKI)

Description: Connecting Skype For Business client to Skype for Business client.
Send SRTP with MKI in both outbound streams:
	- for inbound call: MKI was offered in incoming call and enabled for outbound leg with "set"
	- for outbound call: MKI was enabled with "export"

5. Other examples

Setup to use SRTP with MKI only on the inbound SRTP on incoming call from Telnyx SfB
Tested dialing 0012404373253 from SfB to FS, leg SfB <-> FS uses SRTP with MKI
on inbound SRTP only

57     <extension name="telnyx_test_1_2">
58         <condition field="destination_number" expression="^(0012404373253)$">
59              <action application="set" data="rtp_secure_media=true"/>
61              <action application="answer"/>
62              <action application="bridge" data="user/1004@${domain_name}"/>
63       </condition>
64   </extension>

Result:
2017-11-23 20:44:35.406026 [INFO] mod_dialplan_xml.c:637 Processing Test02 <+12404373728>->0012404373253 in context public
2017-11-23 20:44:38.566022 [INFO] switch_rtp.c:4107 Activating audio Secure RTP SEND
2017-11-23 20:44:38.566022 [INFO] switch_rtp.c:4085 Activating audio Secure RTP RECV (with MKI)

Setup to send and receive SRTP with MKI on incoming call from Telnyx SfB
Tested dialing 0012404373253 from SfB to FS, leg SfB <-> FS uses SRTP with MKI
in both directions

57     <extension name="telnyx_test_1_2">
58         <condition field="destination_number" expression="^(0012404373253)$">
59     		<action application="set" data="rtp_secure_media=true"/>
60     		<action application="set" data="rtp_secure_media_mki"/>
61     		<action application="answer"/>
62     		<action application="bridge" data="user/1004@${domain_name}"/>
63       </condition>
64   </extension>

Result:
2017-11-23 20:42:06.026034 [INFO] mod_dialplan_xml.c:637 Processing Test02 <+12404373728>->0012404373253 in context public
2017-11-23 20:42:09.526034 [INFO] switch_rtp.c:4107 Activating audio Secure RTP SEND (with MKI)
2017-11-23 20:42:09.526034 [INFO] switch_rtp.c:4085 Activating audio Secure RTP RECV (with MKI)

Setup to offer MKI on outbound call to extension 1001 (X-Lite -> FS -> linphone)
Tested dialing 0012404373253 from user 1004, leg FS <-> 1001 uses SRTP with MKI

782     <extension name="telnyx_test_1_2">
783         <condition field="destination_number" expression="^(0012404373253)$">
784             <action application="export" data="rtp_secure_media_outbound=true"/>
785             <action application="export" data="rtp_secure_media_mki"/>
786             <action application="answer"/>
797             <action application="bridge" data="user/1001@${domain_name}"/>
798       </condition>
799   </extension>

Result:
2017-11-23 20:23:26.266034 [INFO] mod_dialplan_xml.c:637 Processing 1000 windows <1000>->0012404373253 in context default
2017-11-23 20:23:26.366035 [INFO] switch_rtp.c:4107 Activating audio Secure RTP SEND (with MKI)
2017-11-23 20:23:26.366035 [INFO] switch_rtp.c:4085 Activating audio Secure RTP RECV

SfB sometimes offers crypto with LIFETIME but no MKI index, e.g.:
a=crypto:5 AES_CM_128_HMAC_SHA1_80 inline:9OtFWi17H9E8ywlm0iazemjAqXu2RhJ3DZyo+VLJ|2^31

Defaulting to no-mki SRTP in case key material doesn't contain MKI index.
2018-07-24 07:21:34 +00:00
Muteesa Fred 9fc898daac FI-393 [fs_cli banner] this commit changes the text on the fs_cli banner 2018-06-14 19:38:05 +00:00
Hunyadvári Péter 554387c8dc Skip holding b leg only if it is on hold
FS-8579 --resolve
2018-03-20 09:32:47 +01:00
Hunyadvári Péter 069da397f5 Improve recording transfer
Use the same method everywhere
Move the bug without stopping and starting the recording over
It was broken in some circumstances and also some settings were lost

FS-8900 --resolve
2018-03-20 09:20:37 +01:00
Marc Olivier Chouinard 348c2c42bb FS-10608: Change 60 second timeout value to a global #define SWITCH_DEFAULT_TIMEOUT 2017-08-29 13:54:34 -04:00
Anthony Minessale 4e5219cd27 FS-10503: [mod_av] mod_av split audio to two channels #resolve 2017-08-11 13:23:15 -05:00
Andrey Volk 5626d0b535 FS-10064: [mod_managed] Fix compile on windows. 2017-07-20 23:38:44 +03:00
Ken Rice 53116495d1 Revert "FS-10416: [mod_commands] add new outbound channels to an in-progress originate"
This commit causes a segfault when parsing destinations that are |
delimited. This patchset needs to be tested further before inclusion
into the tree.

This reverts commit b11955db0b.
2017-07-11 17:25:48 -05:00
Mike Jerris 2a788cdefd Merge pull request #1307 in FS/freeswitch from ~HRISTO/freeswitch:feature/FS-10416-add-new-endpoints-to-be-called-while to master
* commit 'b11955db0bfdcccd5ad98fd689870153d31154f3':
  FS-10416: [mod_commands] add new outbound channels to an in-progress originate
2017-07-06 20:41:20 +00:00
Mike Jerris 6cf3338469 FS-10458: [mod_av] temporarily silence warning when building against ffmpeg 3.2 until we fix them properly 2017-06-30 17:29:38 -05:00
Anthony Minessale 8734c9070d FS-10448: [mod_conference] Add Video Blind #resolve 2017-06-29 18:11:16 -05:00
Anthony Minessale db47792558 FS-10447: [freeswitch-core] Manual video refresh mode #resolve 2017-06-29 16:57:18 -05:00