This was added as part of a mass copyright header update in commit
6e7d5d089. That's obviously not the right way to add features, so
we're reverting this.
If this feature is actually desired, it should be added in its own
commit, properly described in the commit message, and documented.
(The commit added a "tool" flag that could be applied to a conference
participant to mess with that person by disrupting his or her audio.)
This partially reverts commit 6e7d5d0897.
This feature earlier tried to sneak in under the guise of a whitespace
cleanup in commit a000749e70 which
Anthony reverted at commit a24f9aa8bc.
Let's not play these games.
This was momentarily called force_send_silence_when_idle, but that was
non-obvious as you had to set that value to true to be able to not
send silence when idle. This name describes the purpose much better.
We were handling the "send silence but not comfort noise" case in both
silence_stream_file_read and switch_generate_sln_silence. This
changes the former to rely on the latter.
If set to true, this prevents us from overriding the value of
send_silence_when_idle. When that is unset or set to zero and SRTP is
engaged, we typically override the value because many devices can't
handle gaps in the SRTP stream.
This variable is mostly for testing whether particular devices can
handle this behavior. Use at your own risk.
In commit 55d01d3def we set
send_silence_when_idle to -1 rather than 400 when SRTP is engaged.
But this left no way to enable white noise silence when desired.
When SRTP is engaged we can't simply not send RTP because it breaks
too many devices. So we need to prevent send_silence_when_idle from
being unset or being set to zero. This change allows it to be set to
other values so as to feed white noise rather than all zeros into the
codec.
When the channel variable send_silence_when_idle was set to zero,
switch_ivr_sleep was calling SWITCH_IVR_VERIFY_SILENCE_DIVISOR on it
anyway, causing it to be set to 400. The only way to get the behavior
of not sending silence when idle was to unset the variable completely.
This corrects the behavior such that setting the value to zero has the
same effect as leaving it unset.
write(3) can write fewer bytes than was requested for any number of
reasons. The correct behavior is to retry unless there is an error.
If there is an error, try to unlink the file; no sense in leaving
corrupted data laying around.
We were incorrectly parsing usernames and domains starting with "sip"
if there was no sip: or sips: scheme in the string.
We were also incorrectly parsing usernames containing a colon even if
a scheme was given.
This also refactors the function for hopefully greater clarity.
In commit 7efeabbd88 Anthony fixed the
handling of sip:example.com and sips:example.com URLs, however he
introduced a regression causing URLs starting with 's' to be parsed
incorrectly.
In commit 7d2456ea27 Brian fixed the
regression, but introduced a regression causing sips:example.com URLs
to be handled incorrectly.
Originally we did the same thing with SRTP that we do without SRTP,
which is to simply not send packets when e.g. sleep is called.
At commits d63323977f and
5259814aee we enabled sending silence
packets with comfort noise when SRTP is active. We appear to have
done this for interop purposes; many devices can't handle gaps in the
stream of SRTP packets.
But our current comfort noise implementation doesn't take the codec
rate into account (FS-6291), so on 16kHz codecs the constant we chose
created an annoying level of static between sound file playback.
With this commit we preserve the sending of SRTP packets during idle
periods, but make those packets completely silent.
Thanks-to: Anthony Minessale <anthm@freeswitch.org>
FS-5053 --resolve
Unlike fread(3), read(3) will return -1 on error. We were assigning
the result of read to a potentially unsigned variable, and passing the
result down to switch_xml_parse_str() where it would end up
determining how many bytes to malloc(3).
rtp_secure_media=true
--inbound: Accept the srongest supported offered crypto suite, MUST result in a negotiated crypto or aborts.
--outbound: offer all supported crypto suites, MUST result in a negotiated crypto or aborts.
rtp_secure_media=optional
--inbound: Accept the srongest supported offered crypto suite, fall back to no crypto if no valid ones accepted.
--outbound: offer all supported crypto suites, OPTIONAL result in a negotiated crypto falls back to no crypto.
rtp_secure_media=<suite1>,<suiteN>
--inbound: same behaviour as rtp_secure_media=true with smaller set of acceptable suites.
--outbound: offer supplied crypto suites, same behaviour as rtp_secure_media=true with smaller set of suites.