Add channel variables eavesdrop_bridge_aleg and eavesdrop_bridge_bleg,
and if one is set to true on the eavesdrop channel, bridge that leg from
the target. If neither is specified, bridge both.
Between v1.2 and v1.4, member data was factored out. This makes it so
that one can not determine who the originator of a floor change event
is.
With this change, the meta data related to the conference member whom
initiated the floor change event is added to the event.
See FS-7136
Previously data returned from `memcache get` would be truncated at the
first NULL byte.
By using raw_write_function here to stream the returned memcache
value, we allow mod_memcache to be used for audio and other arbitrary
binary data.
Dave has a format module planned that relies on this.
Thanks-to: Dave Olszewski <dolszewski@marchex.com>
FS-7114 #resolve
The clamp(v,a,b) function wraps v around the interval [a,b).
However prior to this commit, `clamp` was ignoring the third argument
and using the second argument again in its place. This resulted in a
division by zero. Hence `clamp` didn't work at all.
Even if the arguments were treated correctly, `clamp` incorrectly
multiplied rather than added whenever v < a. This would have produced
bogus results. (Thanks to Shona McNeill for pointing this out.)
Note that as implemented, `clamp` is undefined for b >= a.
These errors are present in the last upstream C version, v2.7.
They've been corrected in the C++ version that upstream now maintains
instead.
Thanks-to: Shona McNeill <prufrax@googlemail.com>
FS-7070 #resolve
The following values can be read from the event:
sync_lost_percent - Error percentage within the analysis window
sync_lost_count - How many times sync has been lost
cng_count - Counter of confort noise packets
err_samples - Number of samples that did not match the sequence
* commit 'f63f8686bc8da391b3c46b24e10571215c8b377f':
FS-7049 - Documentation for state optional paramenter in callcenter_config queue list and count
fix FS-7049 - Count and list agents based on their state
Previously the `timeout` option to the curl API command set only
`CURLOPT_CONNECTTIMEOUT` -- the maximum amount of time that curl will
wait to connect to the server. If the server accepted the connection
but then never replied, curl would wait essentially forever. There
was no way to set `CURLOPT_TIMEOUT` -- the maximum amount of time the
entire request operation is allowed to take.
With this change, the `timeout` option sets `CURLOPT_TIMEOUT`. We've
earlier added a `connect-timeout` option to set
`CURLOPT_CONNECTTIMEOUT`.
This is a change to existing behavior. However, it's likely that this
is what people expected it to do all along. The curl application
call, for example, accepts both `curl_connect_timeout` and
`curl_timeout` channel variables, with the latter setting
`CURLOPT_TIMEOUT`.
If people really were relying on this odd behavior, we'll rename the
option with the new behavior to something else and come up with a
transition plan.
This patch does the following:
* only starts MOH if no other file (sync or async) is currently playing
* adds a variable "conference_permanent_wait_mod_moh" that controls the
behavior of how the enter and exit sounds interact with the MOH when
wait_mod is set. When the variable is set, the MOH keeps playing and
the enter and exit sounds are mixed with the MOH. When the variable
is unset, then any playing MOH is first stopped, then the enter or
exit sound is played and the MOH is started again.
This functionality is useful in case the enter and exit sounds are
used to announce the name of the caller, who is joining or leaving a
conference.
FS-5159 #resolve
If the member do an attended transfer this loop stops and
the agent is set to Available state again, when in fact he still
busy with other channel.
This was happening, for example, when a member calls support queue, then
the support operator do an attended transfer to sales queue, while the sales
operator is talking the member that was transferred, the sales queue will
send calls to the operator, which is not expected.
This patch allows conference flags to be set dynamically from the
dial plan by either passing them to the conference application in
the +flags{ } string or by setting the "conference_flags" dial plan
variable.
The +flags{ } string is currently used to set *user* flags only.
This patch changes this by allowing the +flags{ } string to contain
conference related flags as well (for example wait_mod). It shouldn't
be a problem to pass both types of flags via +flags{ } as long as
the user and conference flag names are kept unique.
FS-5099 #resolve
when video floor is locked by a member, changing audio floor on del_member
will cause the video floor lock cleared unexpectedly, this commit fixes that.
When we specifically release all limits on a channel we destroy the
hash table stored in the "limit_hash" private channel data but we
don't destroy the private data as it will be reclaimed as part of the
session. If limit increment is called after the limit release we can
reuse that channel private, but we need to check whether the hash
table is null first. Fortunately this makes the code look better
anyway.
FS-6775 #resolve
FS-6783 #resolve
* Added BERT stats channel variables
* Check if the channel is going down when out of sync to avoid flagging it
as out of sync, if the channel is going down it is expected to have some errors
* Calculate sampling error rate over a time window
* Create the following variables to control bert testing behavior:
bert_timeout_ms - Milliseconds to wait for bert sync before timing out
bert_window_ms - Window of time to calculate sampling error rate percentage
bert_max_err - Max percentage of error tolerated before going out of sync
bert_hangup_on_error - Hangup when error occurs (Timeout or going out of sync)
What if the hash were destroyed by one thread holding the lock while
another thread was waiting for the lock? The waiting thread would
have already checked that the hash was non-null and would proceed on
that assumption after acquiring the lock.
With this commit we check only after acquiring the lock.
ref: FS-6783
ref: FS-6775
`switch_core_hash_first` allocates an iterator on each call that is
never freed except when the hash table is empty.
By using `switch_core_hash_first_iter` we allocate only one iterator,
and that iterator is freed after the last item is processed.
In some configurations where many limits are used, the limit increases
and releases were generating a lot of noise and making it harder to
see when limits were exceeded, which was at the same log level.
mod_curl currently does not verify the authenticity of the peer's
certificate, and does not verify whether the common name on the
certificate matches the server. This makes mod_curl initiated TLS
connections completely insecure. We should fix this, but until we do,
we'll warn people that it's not doing what they may think it is.
ref: http://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYPEER.html
ref: http://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYHOST.html
`curl_sendfile` generates a multipart message with Content-Type:
multipart/form-data with no separate Content-Type headers in the parts
for each non-file argument. These parts therefore default to
text/plain. However, prior to this commit, we were putting the URL
encoded POST data into these parts, which is not correct. We should
be putting raw text into the parts.
With this commit, we urldecode each argument key and value before
composing the multipart message.
See:
http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2
* commit 'b60df39b96b05b6c3cf220d5049ea5fc20dfa6e1':
mod_http_cache: fix configuration so that carriage returns or other whitespace is OK around S3 keys
mod_http_cache: fixed S3 URL parser to allow mybucketsubdomain.com.s3.amazonaws.com
mod_prefix is an in-memory data store optimized for fast lookups
according to the longest prefix match (LPM) rule.
Tables of key-value string pairs in JSON format can be loaded at
startup via configuration and at runtime via the API.
The implementation uses a bitwise trie (aka binary prefix tree), so
arbitrary string keys are supported.