* 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)
* commit '388e9638de7c14e00272777245dacc87cf09fc1c':
F-5946 add the patches. if in the sofia gateway config the param pin-monitoring is true, then every ping result raise an sofia::gateway-state event
if read multi times when waiting for a slow client, then bytes is much shorter than datalen
so it could incorrectly terminate the string and data could be lost
In `sofia status gateway ...` let's show the uptime in seconds rather
than in microseconds. We'll output the uptime in microseconds in
`xmlstatus` and we'll label it as such.
The 'UP' status indicates a gateway is online as determined by
registration and/or SIP OPTIONS pinging.
The time the gateway has been in the 'UP' status is recorded,
and can be monitored using 'sofia status' and 'sofia xmlstatus'.
This can be used to detect and graph when there are outages.
ref: FS-6772
Reviewed-by: Travis Cross <tc@traviscross.com>
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.