summaryrefslogtreecommitdiff
path: root/channels/chan_sip.c
diff options
context:
space:
mode:
Diffstat (limited to 'channels/chan_sip.c')
-rw-r--r--channels/chan_sip.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 2198ee625..23c502c82 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -13957,7 +13957,9 @@ static void initreqprep(struct sip_request *req, struct sip_pvt *p, int sipmetho
snprintf(p->lastmsg, sizeof(p->lastmsg), "Init: %s", sip_methods[sipmethod].text);
- d = S_OR(p->fromdomain, ast_sockaddr_stringify_host_remote(&p->ourip));
+ if (ast_strlen_zero(p->fromdomain)) {
+ d = ast_sockaddr_stringify_host_remote(&p->ourip);
+ }
if (p->owner) {
connected_id = ast_channel_connected_effective_id(p->owner);
@@ -14008,6 +14010,12 @@ static void initreqprep(struct sip_request *req, struct sip_pvt *p, int sipmetho
else /* Save for any further attempts */
ast_string_field_set(p, fromname, n);
+ /* Allow domain to be overridden */
+ if (!ast_strlen_zero(p->fromdomain))
+ d = p->fromdomain;
+ else /* Save for any further attempts */
+ ast_string_field_set(p, fromdomain, d);
+
ast_copy_string(tmp_l, l, sizeof(tmp_l));
if (sip_cfg.pedanticsipchecking) {
ast_escape_quoted(n, tmp_n, sizeof(tmp_n));