The deflect handler prefixed `sip:` and appended the profile address to any
target not starting with `sip:`. `tel:`, `sips:` and other URIs went out as
`sip:tel:...@<ip>`. A name-addr target, as a proxied `Refer-To` or
`${sip_refer_to}` passes it, went out as `sip:<sip:...>@<ip>`, or was not sent
at all when it carried a display name, URI params or `?Replaces=`.
`sofia_deflect_build_refer_to()` now builds the `Refer-To`:
- a target that has a URI scheme or contains `<` goes out as given
- `user@host`, with or without a host port, only gains the `sip:` scheme
- a bare user or number is addressed at the profile, as before
- an empty or `NULL` target, which the `deflect` app passes when run without
data, is rejected; the handler logs it and sends no REFER
Adds `test_sofia_deflect_build_refer_to` to `test_sofia_funcs`: rejected
targets, bare users with IPv4 and IPv6 profile addresses, `user@host` forms,
URIs with a scheme, name-addr forms, the known limitations and truncation.
Implement SIP 603+ (ATIS-1000099) support for FCC analytics-based call blocking compliance.
Detection:
- Detect incoming 603+ responses by checking "Network Blocked" phrase
and "v=analytics1;" in the `Reason` header text
- Set `sip_603plus_reason` channel variable on both legs for CDR visibility
Passthrough control:
- `sip_603plus_passthrough=true`: forward 603+ phrase and Reason header
- `sip_603plus_passthrough=false`: strip `Reason` header, send clean `603 Decline`
- Not set: existing behavior preserved
- Works independently of `disable_q850_reason` for selective forwarding
We observed that the new Poly phones (formerly known as Polycom) were not getting sent a SIP UPDATE in certain circumstances (example: retrieving a parked call, and therefore, Caller ID would not show the parked caller). I renamed Polycom to Poly which will catch all Poly AND Polycom UA's. I also added Acrobits, and Ringotel to extend such functionality to those UA's. There were also other minor compatibility issues with the new Poly phones which have been resolved with tweaking the UA recognition on the code.
Co-authored-by: Joseph <junction1153@gmail.com>
Set to true to prevent hangup when response to REFER request is received.
Added sip_refer_target_status_code and sip_refer_target_provisional_status_code
channel variables to store responses from NOTIFY sipfrags.
* [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)