Index: channels/chan_sip.c =================================================================== --- channels/chan_sip.c (revision 267441) +++ channels/chan_sip.c (working copy) @@ -10513,8 +10513,6 @@ static void initreqprep(struct sip_request *req, s if (ast_strlen_zero(l)) l = default_callerid; - if (ast_strlen_zero(n)) - n = l; /* Allow user to be overridden */ if (!ast_strlen_zero(p->fromuser)) l = p->fromuser; @@ -10535,10 +10533,17 @@ static void initreqprep(struct sip_request *req, s } ourport = (p->fromdomainport) ? p->fromdomainport : ntohs(p->ourip.sin_port); - if (!sip_standard_port(p->socket.type, ourport)) - snprintf(from, sizeof(from), "\"%s\" ;tag=%s", n, l, d, ourport, p->tag); - else - snprintf(from, sizeof(from), "\"%s\" ;tag=%s", n, l, d, p->tag); + if (!sip_standard_port(p->socket.type, ourport)) { + if (ast_strlen_zero(n)) + snprintf(from, sizeof(from), ";tag=%s", l, d, ourport, p->tag); /* also legal without <> */ + else + snprintf(from, sizeof(from), "\"%s\" ;tag=%s", n, l, d, ourport, p->tag); + } else { + if (ast_strlen_zero(n)) + snprintf(from, sizeof(from), ";tag=%s", l, d, p->tag); /* also legal without <> */ + else + snprintf(from, sizeof(from), "\"%s\" ;tag=%s", n, l, d, p->tag); + } if (!ast_strlen_zero(explicit_uri)) {