When all-reg-options-ping is enabled, this adds a new custom event to mod_sofia
(sofia::sip_user_state), which is fired when a client stops responding to such
ping packets (or when it is reachable again).
Add two needed new columns to the sip_registrations table:
- ping_status, which is "Reachable" or "Unreachable" depending on the client
status;
- ping_count, which tracks the number of ping responses received and is used
to provide some kind of hysteresis to avoid firing the event in case of
transitory network failures.
Then ping_count is checked against two threshold values, sip-user-ping-min
and sip-user-ping-max in a similar fashion as the ping-{max,min} options for
the gateways. These two values are configurable in the profile's xml
configuration file.
Also, if unregister-on-options-fail is enabled, the client is unregistered
based on the number of OPTIONS failure which is also checked against the
sip-user-ping-{min,max} values.
VARIABLE: bypass_media_sdp_filter
Can be set globally or per leg on the inbound side of a bypass_media bridge.
VALID FILTERS:
remove(): Removes the specified codec if it exists in the SDP.
only(): Removes all codecs besides the one specified (providing that it exists in the sdp) (will not remove telephone-event))
EXAMPLE 1 (remove everything leaving only g729):
<action application="set" data="bypass_media_sdp_filter=only(g729)"/>
<action application="set" data="bypass_media=true"/>
<action application="bridge" data="sofia/internal/1238@conference.freeswitch.org"/>
EXAMPLE 2 (remove everything leaving only g729 and also remove dtmf):
<action application="set" data="bypass_media_sdp_filter=only(g729)|remove(telephone-event)"/>
<action application="set" data="bypass_media=true"/>
<action application="bridge" data="sofia/internal/1238@conference.freeswitch.org"/>
EXAMPLE 3 (remove alaw and speex):
<action application="set" data="bypass_media_sdp_filter=remove(pcma)|remove(speex)"/>
<action application="set" data="bypass_media=true"/>
<action application="bridge" data="sofia/internal/1238@conference.freeswitch.org"/>
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>
mod_sofia's parameter shutdown-on-fail now accepts the value
"reincarnate-now". This will cause the switch to exit immediately
with a non-zero exit code so that the supervisor can recover the
switch. For this to work you have to pass in -reincarnate or
-reincarnate-reexec to freeswitch.
This is the result of auditing each mod_sofia profile parameter to
ensure that it can be unset or reset after being set. One use-case
for this being done correctly is so a later parameter in a
configuration file can reliably override an earlier one, which is
useful for setups with layered include files.
Previously if send-display-update was set to false we would also
remove UPDATE from our Allow: headers. This is unnecessary. The
UPDATE message is useful in SIP transactions even if we're not sending
display updates.
With this commit, we add a new boolean profile flag, allow-update. If
set to true we'll send Allow: UPDATE. If set to false, we will not.
If there is a conflict with another setting that requires UPDATE
support, the allow-update parameter will win and a warning will be
printed.
ref: RFC 3311
sip_header_as_string returns new memory alloc'd on the nua_handle's memory pool. This memory would not be freed until
the handle was destroyed. Since there is no usage of the call-info header after it is added to the event as a header value,
we should make sure to both su_free the sofia returned string, but also more cleanly create the event header value to reduce a strdup.
I found a problem here but it may not completely match your expectations.
I reviewed the RFC 4028 and checked against the code and I discovered we should not be putting a Min-SE in any response at all besides a 422:
section 5:
The Min-SE header field MUST NOT be used in responses except for
those with a 422 response code. It indicates the minimum value of
the session interval that the server is willing to accept.
I corrected this problem and implemented the 422 response so if you request a value lower than the minimum specified for the profile.
If the value is equal or higher to the minimum, it will be reflected in the Session-Expires header in the response and no Min-SE will be present.
Adds app: enable_keepalive 0|<seconds>
This app can be run in the dialplan or with execute_on_* type variables for B-legs.
Adds sofia param: keepalive-method : defaults to MESSAGE can also be "INFO"
This param sets which SIP method to use.
These all were set before but now are disabled by default because they are not proper to have enabled without a good reason.
tcp-unreg-on-socket-close
If registration is TCP or TLS and socket connection is interrupted, unregister the client.
tcp-always-nat
Treat all TCP connections as NATTED, this causes all traffic back to the phone to reuse the existing TCP socket but may
cause problems when not used with TCP keepalive.
tls-always-nat
Same as tcp-always-nat but only for TLS connections.