The chat layer lets an inbound SIP MESSAGE select which chat proto handles it,
and the `api` proto runs the address as a FreeSWITCH API command. The new
per-profile `enable-chat-api-proto` param controls that route and is off unless
set. A MESSAGE selecting the proto on a profile without it is answered 403 and
logged with the source and the requested command.
The proto compare is case-insensitive, matching the chat interface registry,
which is created with `switch_core_hash_init_nocase()`.
The param ships commented out in the four vanilla profiles and the mod_sofia
sofia.conf.xml sample.
`sofia_process_dispatch_event_in_thread` allocated `td` from a memory pool,
then `sofia_msg_thread_run_once` destroyed that same pool after processing
the event — leaving `td` dangling when the thread pool worker accessed it.
Allocate `td` with `switch_zmalloc` (`td->alloc = 1`) so the worker frees it
safely after the function returns. Remove the now-unused `pool` field from
`sofia_dispatch_event_t`.
* [mod_sofia] md5 hash infoleak fixes: (explictly allow host set in gw params 'register_proxy' and 'outbound_proxy' to challenge too).
"We have tightened security for digest authentication on gateways.
If you have gateways configured using dns and not an ip address,
you may need to configure gw-auth-acl in gateway configuration to
specify the IP addresses you can send auth challenges to for this gateway.
This is meant to better secure who we will send auth challenges." (Mike Jerris)
[mod_sofia] add REGISTER/401 unit-tests (sipp based)
[mod_sofia] add INVITE/407 unit-test (sipp-based)
* Cleanup spacing
Co-authored-by: Andrey Volk <andywolk@gmail.com>
* [core] Add SWITCH_CAUSEs for STIR/SHAKEN.
[mod_sofia] Add sofia_verify_identity dialplan APP as a STIR/SHAKEN verification service. Set sip_hangup_on_verify_identity_fail=true to end calls that fail verification, otherwise check sip_verstat and sip_verstat_detailed channel variables for verification result.
* [mod_sofia] Fix stir shaken implementation issues on fail.
* fix build
* Fix given comments
* stir_shaken_passport_get_grant return does not require to be freed.
* reworked things
* [core] add switch_rfc822_datetime_to_epoch()
* [mod_sofia] fix test return code
* [mod_sofia] Add Date header when signing Identity
* [mod_sofia] Check Date - WIP doesn't work
* [mod_sofia] STIR/SHAKEN check SIP Date header
* Try to give time for sofia to clean up calls
Co-authored-by: Andrey Volk <andywolk@gmail.com>
(enable with sofia profile param rfc-7989=true)
FS-11557 [mod_sofia, mod_conference, core] Add support for re-INVITE when setting Session-ID in conference after call has been answered.
FS-11557 [mod_conference] Missed a spot where APP_SESSION_ID needed to be set.
FS-11557: set session id for outbound (initial requests)
FS-11557: [mod_sofia] rename vars and functions "session id" -> "session uuid" to reflect the real meaning for rfc7989.
FS-11557: fix bug - colliding chan var names (session_id)
FS-11557: check nil session uuid
FS-11557 : replace CS_NEW with CS_INIT for when originating calls, generate new uuid.
FS-11557: handle inbound (UAS mode, one leg)
FS-11557: generic param handling and filter via new sip profile option "rfc-7989-filter", eg:
<param name="rfc-7989-filter" value="logme, sec-agree, privacy" />
FS-11557: renamed chan vars (reflect meaning only for RFC7989)
FS-11557: fallback to RFC7329 - "old" Session-ID
FS-11557: distinguish between request and replies when we read the header
(to provide compatibility with old RFC7329 - section 11 of RFC7989)
FS-11557: change more vars/consts names
FS-11557: move compat flag on the channel.
FS-11557: add Session-ID header in REFER
FS-11557: needs extra condition on received initial request
FS-11557: handle NOTIFY
FS-11557: support answer() in dialplan - it was sending back a 200 OK with Session-ID invalid, eg: A=NIL;B=X
FS-11557: add Session-ID for NOTIFY (more cases)
FS-11557: handle reply to SIP INFO (add Session-ID header)
FS-11557: handle case of BYE after REFER, when the channel is destroyed already (save the uuid on sofia_private)
FS-11557: handle more SIP reply cases (eg: 202 Accepted , more negative replies)
FS-11557: handle ACK (UAS role)
FS-11557: added "rfc-7989-force-old" profile param - to enforce old rfc7329 for the UAC role. default off.
enabled with "<param name="rfc-7989-force-old" value="true" />".
FS-11557: fallback to rfc7329 fixes.
FS-11557: set flag CF_RFC7329_COMPAT on partner channel where needed
FS-11557: fix crash (mod_conference)
* commit '6ceb9885d4bd10763b982255af732e3e6a8936ee':
FS-9956 [mod_sofia] retain user lookup in blind & acl auth
FS-11025 [mod_sofia] use ports for acl check
FS-11025 [core] allow/check ports in network lists
FS-10746 [mod_sofia] allow authoritative proxy to provide token
Fix callflow issues with 3pcc=true and 3pcc=proxy and interactions with sip_wait_for_aleg_ack
removes passthrough of 183 on 3pcc=proxy (that was previously not functioning)
Allow to force SIP REGISTER Expires: to be within MIN and MAX values.
Not just to force it to one specific value using "sip-force-expires".
New profile parameters:
"sip-force-expires-min"
"sip-force-expires-max"