mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-07-24 21:22:09 +00:00
FS-11557: [mod_sofia] add support for RFC 7989 Session-ID header
(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)
This commit is contained in:
@@ -192,6 +192,7 @@ struct sofia_private {
|
||||
int is_call;
|
||||
int is_static;
|
||||
switch_time_t ping_sent;
|
||||
char *rfc7989_uuid;
|
||||
};
|
||||
|
||||
#define set_param(ptr,val) if (ptr) {free(ptr) ; ptr = NULL;} if (val) {ptr = strdup(val);}
|
||||
@@ -310,6 +311,8 @@ typedef enum {
|
||||
PFLAG_FIRE_BYE_RESPONSE_EVENTS,
|
||||
PFLAG_AUTO_INVITE_100,
|
||||
PFLAG_UPDATE_REFRESHER,
|
||||
PFLAG_RFC7989_SESSION_ID,
|
||||
PFLAG_RFC7989_FORCE_OLD,
|
||||
PFLAG_AUTH_REQUIRE_USER,
|
||||
PFLAG_AUTH_CALLS_ACL_ONLY,
|
||||
PFLAG_USE_PORT_FOR_ACL_CHECK,
|
||||
@@ -790,6 +793,7 @@ struct sofia_profile {
|
||||
int bind_attempt_interval;
|
||||
char *proxy_notify_events;
|
||||
char *proxy_info_content_types;
|
||||
char *rfc7989_filter;
|
||||
char *acl_inbound_x_token_header;
|
||||
char *acl_proxy_x_token_header;
|
||||
};
|
||||
@@ -989,6 +993,13 @@ void launch_sofia_profile_thread(sofia_profile_t *profile);
|
||||
|
||||
switch_status_t sofia_presence_chat_send(switch_event_t *message_event);
|
||||
|
||||
#define RFC7989_SESSION_UUID_LEN 32
|
||||
#define RFC7989_SESSION_UUID_NULL "00000000000000000000000000000000"
|
||||
|
||||
int sofia_glue_is_valid_session_id(const char *session_id);
|
||||
void sofia_glue_store_session_id(switch_core_session_t *session, sofia_profile_t *profile, sip_t const *sip, switch_bool_t is_reply);
|
||||
char *sofia_glue_session_id_header(switch_core_session_t *session, sofia_profile_t *profile);
|
||||
|
||||
/*
|
||||
* \brief Sets the "ep_codec_string" channel variable, parsing r_sdp and taing codec_string in consideration
|
||||
* \param channel Current channel
|
||||
|
||||
Reference in New Issue
Block a user