|
@@ -123,10 +123,22 @@ static inline char* build_sipping(str *curi, struct socket_info* s, str *path,
|
|
static char buf[MAX_SIPPING_SIZE];
|
|
static char buf[MAX_SIPPING_SIZE];
|
|
char *p;
|
|
char *p;
|
|
int len;
|
|
int len;
|
|
|
|
+ str vaddr;
|
|
|
|
+ str vport;
|
|
|
|
+
|
|
|
|
+ if(s->useinfo.name.len>0)
|
|
|
|
+ vaddr = s->useinfo.name;
|
|
|
|
+ else
|
|
|
|
+ vaddr = s->address_str;
|
|
|
|
+
|
|
|
|
+ if(s->useinfo.port_no>0)
|
|
|
|
+ vport = s->useinfo.port_no_str;
|
|
|
|
+ else
|
|
|
|
+ vport = s->port_no_str;
|
|
|
|
|
|
if ( sipping_method.len + 1 + curi->len + s_len(" SIP/2.0"CRLF) +
|
|
if ( sipping_method.len + 1 + curi->len + s_len(" SIP/2.0"CRLF) +
|
|
- s_len("Via: SIP/2.0/UDP ") + s->address_str.len +
|
|
|
|
- 1 + s->port_no_str.len + s_len(";branch=0") +
|
|
|
|
|
|
+ s_len("Via: SIP/2.0/UDP ") + vaddr.len +
|
|
|
|
+ 1 + vport.len + s_len(";branch=0") +
|
|
(path->len ? (s_len(CRLF"Route: ") + path->len) : 0) +
|
|
(path->len ? (s_len(CRLF"Route: ") + path->len) : 0) +
|
|
s_len(CRLF"From: ") + sipping_from.len + s_len(";tag=") +
|
|
s_len(CRLF"From: ") + sipping_from.len + s_len(";tag=") +
|
|
ruid->len + 1 + 8 + 1 + 8 +
|
|
ruid->len + 1 + 8 + 1 + 8 +
|
|
@@ -146,9 +158,9 @@ static inline char* build_sipping(str *curi, struct socket_info* s, str *path,
|
|
*(p++) = ' ';
|
|
*(p++) = ' ';
|
|
append_str( p, curi->s, curi->len);
|
|
append_str( p, curi->s, curi->len);
|
|
append_fix( p, " SIP/2.0"CRLF"Via: SIP/2.0/UDP ");
|
|
append_fix( p, " SIP/2.0"CRLF"Via: SIP/2.0/UDP ");
|
|
- append_str( p, s->address_str.s, s->address_str.len);
|
|
|
|
|
|
+ append_str( p, vaddr.s, vaddr.len);
|
|
*(p++) = ':';
|
|
*(p++) = ':';
|
|
- append_str( p, s->port_no_str.s, s->port_no_str.len);
|
|
|
|
|
|
+ append_str( p, vport.s, vport.len);
|
|
if (path->len) {
|
|
if (path->len) {
|
|
append_fix( p, ";branch=0"CRLF"Route: ");
|
|
append_fix( p, ";branch=0"CRLF"Route: ");
|
|
append_str( p, path->s, path->len);
|
|
append_str( p, path->s, path->len);
|