res_pjsip: Fixed invalid empty Server and User-Agent SIP headers.
authorRichard Mudgett <rmudgett@digium.com>
Wed, 11 Mar 2015 15:22:01 +0000 (15:22 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Wed, 11 Mar 2015 15:22:01 +0000 (15:22 +0000)
Setting pjsip.conf useragent to an empty string results in an empty SIP
header being sent.

* Made not add an empty SIP header item to the global SIP headers list.

Review: https://reviewboard.asterisk.org/r/4467/
........

Merged revisions 432764 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432765 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_pjsip/pjsip_global_headers.c

index 057b0c3..735008d 100644 (file)
@@ -121,18 +121,22 @@ static void remove_header(struct header_list *headers, const char *to_remove)
 
 static int add_header(struct header_list *headers, const char *name, const char *value, int replace)
 {
 
 static int add_header(struct header_list *headers, const char *name, const char *value, int replace)
 {
-       struct header *to_add;
+       struct header *to_add = NULL;
 
 
-       to_add = alloc_header(name, value);
-       if (!to_add) {
-               return -1;
+       if (!ast_strlen_zero(value)) {
+               to_add = alloc_header(name, value);
+               if (!to_add) {
+                       return -1;
+               }
        }
 
        AST_RWLIST_WRLOCK(headers);
        if (replace) { 
                remove_header(headers, name);
        }
        }
 
        AST_RWLIST_WRLOCK(headers);
        if (replace) { 
                remove_header(headers, name);
        }
-       AST_LIST_INSERT_TAIL(headers, to_add, next);
+       if (to_add) {
+               AST_LIST_INSERT_TAIL(headers, to_add, next);
+       }
        AST_RWLIST_UNLOCK(headers);
 
        return 0;
        AST_RWLIST_UNLOCK(headers);
 
        return 0;