diff --git a/src/mod/endpoints/mod_dingaling/mod_dingaling.c b/src/mod/endpoints/mod_dingaling/mod_dingaling.c index 99f3d0914a..8907ccb99e 100644 --- a/src/mod/endpoints/mod_dingaling/mod_dingaling.c +++ b/src/mod/endpoints/mod_dingaling/mod_dingaling.c @@ -1497,6 +1497,12 @@ static switch_status_t channel_outgoing_channel(switch_core_session_t *session, } if ((mdl_profile = switch_core_hash_find(globals.profile_hash, profile_name))) { + + if ((mdl_profile->user_flags & LDL_FLAG_COMPONENT) && strchr(outbound_profile->caller_id_number, '@')) { + snprintf(ubuf, sizeof(ubuf), "%s/talk", outbound_profile->caller_id_number); + user = ubuf; + } + if (!ldl_handle_ready(mdl_profile->handle)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Doh! we are not logged in yet!\n"); terminate_session(new_session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index 49c470e6d4..2d408d7a16 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -3693,7 +3693,7 @@ static void sip_i_invite(nua_t *nua, char *username, *to_username = NULL; char *url_user = (char *) from->a_url->url_user; char *to_user, *to_host; - char *a,*b; + if (!(tech_pvt = (private_object_t *) switch_core_session_alloc(session, sizeof(private_object_t)))) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Hey where is my memory pool?\n"); terminate_session(&session, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER, __LINE__); @@ -3754,18 +3754,19 @@ static void sip_i_invite(nua_t *nua, } } - if ((a = strchr(to_user, '+')) && (b = strrchr(to_user, '+')) && a != b) { - *b = '@'; - } - attach_private(session, profile, tech_pvt, username); channel = switch_core_session_get_channel(session); switch_channel_set_variable(channel, "endpoint_disposition", "INBOUND CALL"); set_chat_hash(tech_pvt, sip); - switch_channel_set_variable(channel, "sip_fromuser", (char *) from->a_url->url_user); - switch_channel_set_variable(channel, "sip_fromhost", (char *) from->a_url->url_host); + switch_channel_set_variable(channel, "sip_from_user", (char *) from->a_url->url_user); + if (from->a_url->url_user && *from->a_url->url_user == '+') { + switch_channel_set_variable(channel, "sip_from_user_stripped", (char *)(from->a_url->url_user+1)); + } else { + switch_channel_set_variable(channel, "sip_from_user_stripped", (char *)from->a_url->url_user); + } + switch_channel_set_variable(channel, "sip_from_host", (char *) from->a_url->url_host); if ((tech_pvt->caller_profile = switch_caller_profile_new(switch_core_session_get_pool(session), (char *) from->a_url->url_user, profile->dialplan,