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.
Copy URI params from Refer-To header into custom header in subsequent INVITE
sip_h_X-FS-Refer-Params is set to show up in the INVITE as X-FS-Refer-Params
rtp_secure_media=mandatory
rtp_secure_media=optional
rtp_secure_media=mandatory:AES_CM_256_HMAC_SHA1_80,AES_CM_256_HMAC_SHA1_32
rtp_secure_media=optional:AES_CM_256_HMAC_SHA1_80
rtp_secure_media=forbidden
true implies mandatory
false implies forbidden
not set implies optional
rtp_secure_media_inbound or rtp_secure_media_outbound take precedence and are treated the same way based on leg direction
This adds a sip profile parameter parse-all-invite-headers that when
set parses all headers from an INVITE into channel variables. The
headers are converted to lowercase, underscores are replaced with
dashes, and the result is prefixed with sip_i_. Headers than exist
more than once are set as arrays.
FS-6075 --resolve
Thanks-to: Peter Olsson <peter@olssononline.se>
When an endpoint registers to us we internally mark the expiration as
some seconds longer than the actual registration. Previously this
value was fixed at 60 seconds.
Some people need this value to be shorter so they can meet their SLA
by taking a different action when a device doesn't re-register when
expected.
This commit adds a SIP profile parameter sip-expires-late-margin which
allows setting the margin value we apply here.
FS-6101 --resolve
Thanks-to: Emmanuel Schmidbauer <e.schmidbauer@gmail.com>
Some OSes like linux provide a mechanism for sending TCP keepalive
pings. Sofia provides its own mechanism for doing this in userspace.
We shouldn't conflate these two mechanisms.
FS-6104