mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-10-15 15:54:13 +00:00
finally fix private hold
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@16315 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
1 parent
25aff5bc81
commit
21234215f0
3 files changed
+32
-5
No files matched your search
@@ -51,6 +51,10 @@ extern su_log_t sresolv_log[];
|
||||
extern su_log_t stun_log[];
|
||||
extern su_log_t su_log_default[];
|
||||
|
||||
|
||||
void sofia_handle_sip_i_reinvite(switch_core_session_t *session,
|
||||
nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sofia_private_t *sofia_private, sip_t const *sip, tagi_t tags[]);
|
||||
|
||||
static void set_variable_sip_param(switch_channel_t *channel, char *header_type, sip_param_t const *params);
|
||||
|
||||
|
||||
@@ -671,7 +675,11 @@ void sofia_event_callback(nua_event_t event,
|
||||
sofia_handle_sip_i_options(status, phrase, nua, profile, nh, sofia_private, sip, tags);
|
||||
break;
|
||||
case nua_i_invite:
|
||||
if (!session) sofia_handle_sip_i_invite(nua, profile, nh, sofia_private, sip, tags);
|
||||
if (session) {
|
||||
sofia_handle_sip_i_reinvite(session, nua, profile, nh, sofia_private, sip, tags);
|
||||
} else {
|
||||
sofia_handle_sip_i_invite(nua, profile, nh, sofia_private, sip, tags);
|
||||
}
|
||||
break;
|
||||
case nua_i_publish:
|
||||
sofia_presence_handle_sip_i_publish(nua, profile, nh, sofia_private, sip, tags);
|
||||
@@ -5311,6 +5319,25 @@ const char *_url_set_chanvars(switch_core_session_t *session, url_t *url, const
|
||||
return uri;
|
||||
}
|
||||
|
||||
void sofia_handle_sip_i_reinvite(switch_core_session_t *session,
|
||||
nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sofia_private_t *sofia_private, sip_t const *sip, tagi_t tags[])
|
||||
{
|
||||
char *call_info = NULL;
|
||||
|
||||
if (sofia_test_pflag(profile, PFLAG_MANAGE_SHARED_APPEARANCE)) {
|
||||
switch_channel_t *channel = switch_core_session_get_channel(session);
|
||||
if (channel && sip->sip_call_info) {
|
||||
char *p;
|
||||
if ((call_info = sip_header_as_string(nua_handle_home(nh), (void *) sip->sip_call_info))) {
|
||||
if ((p = strchr(call_info, ';'))) {
|
||||
switch_channel_set_variable(channel, "presence_call_info", p+1);
|
||||
}
|
||||
su_free(nua_handle_home(nh), call_info);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sofia_private_t *sofia_private, sip_t const *sip, tagi_t tags[])
|
||||
{
|
||||
switch_core_session_t *session = NULL;
|
||||
|
||||
Reference in new issue
Block a user