Make sure we always transmit the same from line (bug #3492)
authorMark Spencer <markster@digium.com>
Wed, 2 Feb 2005 18:37:36 +0000 (18:37 +0000)
committerMark Spencer <markster@digium.com>
Wed, 2 Feb 2005 18:37:36 +0000 (18:37 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4952 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index b1a02a2..3f8c6c6 100755 (executable)
@@ -345,7 +345,8 @@ static struct sip_pvt {
        char useragent[256];                    /* User agent in SIP request */
        char context[AST_MAX_EXTENSION];        /* Context for this call */
        char fromdomain[AST_MAX_EXTENSION];     /* Domain to show in the from field */
-       char fromuser[AST_MAX_EXTENSION];       /* Domain to show in the user field */
+       char fromuser[AST_MAX_EXTENSION];       /* User to show in the user field */
+       char fromname[AST_MAX_EXTENSION];       /* Name to show in the user field */
        char tohost[AST_MAX_EXTENSION];         /* Host we should put in the "to" field */
        char language[MAX_LANGUAGE];            /* Default language for this call */
        char musicclass[MAX_LANGUAGE];          /* Music on Hold class */
@@ -3757,6 +3758,14 @@ static void initreqprep(struct sip_request *req, struct sip_pvt *p, char *cmd, c
        /* Allow user to be overridden */
        if (!ast_strlen_zero(p->fromuser))
                l = p->fromuser;
+       else /* Save for any further attempts */
+               strncpy(p->fromuser, l, sizeof(p->fromuser) - 1);
+
+       /* Allow user to be overridden */
+       if (!ast_strlen_zero(p->fromname))
+               n = p->fromname;
+       else /* Save for any further attempts */
+               strncpy(p->fromname, n, sizeof(p->fromname) - 1);
 
        if ((ourport != 5060) && ast_strlen_zero(p->fromdomain))
                snprintf(from, sizeof(from), "\"%s\" <sip:%s@%s:%d>;tag=as%08x", n, l, ast_strlen_zero(p->fromdomain) ? ast_inet_ntoa(iabuf, sizeof(iabuf), p->ourip) : p->fromdomain, ourport, p->tag);
@@ -6644,7 +6653,8 @@ static int sip_no_debug(int fd, int argc, char *argv[])
 static int reply_digest(struct sip_pvt *p, struct sip_request *req, char *header, char *respheader, char *digest, int digest_len);
 
 /*--- do_register_auth: Authenticate for outbound registration ---*/
-static int do_register_auth(struct sip_pvt *p, struct sip_request *req, char *header, char *respheader) {
+static int do_register_auth(struct sip_pvt *p, struct sip_request *req, char *header, char *respheader) 
+{
        char digest[1024];
        p->authtries++;
        memset(digest,0,sizeof(digest));
@@ -6662,7 +6672,8 @@ static int do_register_auth(struct sip_pvt *p, struct sip_request *req, char *he
 }
 
 /*--- do_proxy_auth: Add authentication on outbound SIP packet ---*/
-static int do_proxy_auth(struct sip_pvt *p, struct sip_request *req, char *header, char *respheader, char *msg, int init) {
+static int do_proxy_auth(struct sip_pvt *p, struct sip_request *req, char *header, char *respheader, char *msg, int init) 
+{
        char digest[1024];
        p->authtries++;
        memset(digest,0,sizeof(digest));