diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index 8504dc137e..7ebbe33f70 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -4358,7 +4358,10 @@ static switch_call_cause_t sofia_outgoing_channel(switch_core_session_t *session if (tech_pvt->local_url) { switch_channel_set_variable(nchannel, "sip_local_url", tech_pvt->local_url); if (profile->pres_type) { - switch_channel_set_variable(nchannel, "presence_id", tech_pvt->local_url); + const char *presence_id = switch_channel_get_variable(nchannel, "presence_id"); + if (zstr(presence_id)) { + switch_channel_set_variable(nchannel, "presence_id", tech_pvt->local_url); + } } } switch_channel_set_variable(nchannel, "sip_destination_url", tech_pvt->dest); diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 8817062e59..6823acf133 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -7501,13 +7501,15 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_ } if (profile->pres_type) { - const char *user = switch_str_nil(sip->sip_from->a_url->url_user); - const char *host = switch_str_nil(sip->sip_from->a_url->url_host); - - char *tmp = switch_mprintf("%s@%s", user, host); - switch_assert(tmp); - switch_channel_set_variable(channel, "presence_id", tmp); - free(tmp); + const char *presence_id = switch_channel_get_variable(channel, "presence_id"); + if (zstr(presence_id)) { + const char *user = switch_str_nil(sip->sip_from->a_url->url_user); + const char *host = switch_str_nil(sip->sip_from->a_url->url_host); + char *tmp = switch_mprintf("%s@%s", user, host); + switch_assert(tmp); + switch_channel_set_variable(channel, "presence_id", tmp); + free(tmp); + } }