Module: sip-router
Branch: master
Commit: c745469fb8af0101b26de8bee82c4314dfcafab9
URL:
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=c745469…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: Daniel-Constantin Mierla <miconda(a)gmail.com>
Date: Thu Aug 20 11:49:14 2009 +0300
core: server signature value can be set via param
- server and user agent signature were only defines so far
- two new parameters server_header and user_agent_header allow
to define them via cfg parameters
- default values are the same so far
---
cfg.lex | 4 ++++
cfg.y | 10 ++++++++++
globals.h | 2 ++
main.c | 2 ++
msg_translator.c | 6 +++---
5 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/cfg.lex b/cfg.lex
index 32aed32..e15c71b 100644
--- a/cfg.lex
+++ b/cfg.lex
@@ -329,6 +329,8 @@ MEMLOG "memlog"|"mem_log"
MEMDBG "memdbg"|"mem_dbg"
SIP_WARNING sip_warning
SERVER_SIGNATURE server_signature
+SERVER_HEADER server_header
+USER_AGENT_HEADER user_agent_header
REPLY_TO_VIA reply_to_via
USER "user"|"uid"
GROUP "group"|"gid"
@@ -765,6 +767,8 @@ EAT_ABLE [\ \t\b\r]
<INITIAL>{SCTP_MAX_BURST} { count(); yylval.strval=yytext;
return SCTP_MAX_BURST; }
<INITIAL>{SERVER_SIGNATURE} { count(); yylval.strval=yytext; return
SERVER_SIGNATURE; }
+<INITIAL>{SERVER_HEADER} { count(); yylval.strval=yytext; return SERVER_HEADER; }
+<INITIAL>{USER_AGENT_HEADER} { count(); yylval.strval=yytext; return
USER_AGENT_HEADER; }
<INITIAL>{REPLY_TO_VIA} { count(); yylval.strval=yytext; return REPLY_TO_VIA; }
<INITIAL>{ADVERTISED_ADDRESS} { count(); yylval.strval=yytext;
return ADVERTISED_ADDRESS; }
diff --git a/cfg.y b/cfg.y
index e9e8d8a..8a240c6 100644
--- a/cfg.y
+++ b/cfg.y
@@ -390,6 +390,8 @@ static int case_check_default(struct case_stms* stms);
%token MEMDBG
%token SIP_WARNING
%token SERVER_SIGNATURE
+%token SERVER_HEADER
+%token USER_AGENT_HEADER
%token REPLY_TO_VIA
%token LOADMODULE
%token LOADPATH
@@ -1362,6 +1364,14 @@ assign_stm:
| SCTP_MAX_BURST EQUAL error { yyerror("number expected"); }
| SERVER_SIGNATURE EQUAL NUMBER { server_signature=$3; }
| SERVER_SIGNATURE EQUAL error { yyerror("boolean value expected"); }
+ | SERVER_HEADER EQUAL STRING { server_hdr.s=$3;
+ server_hdr.len=strlen(server_hdr.s);
+ }
+ | SERVER_HEADER EQUAL error { yyerror("string value expected"); }
+ | USER_AGENT_HEADER EQUAL STRING { user_agent_hdr.s=$3;
+ user_agent_hdr.len=strlen(user_agent_hdr.s);
+ }
+ | USER_AGENT_HEADER EQUAL error { yyerror("string value expected"); }
| REPLY_TO_VIA EQUAL NUMBER { reply_to_via=$3; }
| REPLY_TO_VIA EQUAL error { yyerror("boolean value expected"); }
| LISTEN EQUAL id_lst {
diff --git a/globals.h b/globals.h
index f7ef9f8..add1f40 100644
--- a/globals.h
+++ b/globals.h
@@ -108,6 +108,8 @@ extern int syn_branch;
extern int child_rank;
extern int sip_warning;
extern int server_signature;
+extern str server_hdr;
+extern str user_agent_hdr;
extern char* user;
extern char* group;
extern char* sock_user;
diff --git a/main.c b/main.c
index 9a771f8..c975057 100644
--- a/main.c
+++ b/main.c
@@ -345,6 +345,8 @@ int sip_warning = 1;
be default yes, good for trouble-shooting
*/
int server_signature=1;
+str server_hdr = {SERVER_HDR, SERVER_HDR_LEN};
+str user_agent_hdr = {USER_AGENT, USER_AGENT_LEN};
/* should ser try to locate outbound interface on multihomed
* host? by default not -- too expensive
*/
diff --git a/msg_translator.c b/msg_translator.c
index 2f14505..b6273b0 100644
--- a/msg_translator.c
+++ b/msg_translator.c
@@ -1953,7 +1953,7 @@ char * build_res_buf_from_sip_req( unsigned int code, char *text
,str *new_tag,
}
/* server header */
if (server_signature)
- len += SERVER_HDR_LEN + CRLF_LEN;
+ len += server_hdr.len + CRLF_LEN;
/* warning hdr */
if (sip_warning) {
warning_buf = warning_builder(msg,&warning_len);
@@ -2092,8 +2092,8 @@ char * build_res_buf_from_sip_req( unsigned int code, char *text
,str *new_tag,
}
/* server header */
if (server_signature) {
- memcpy( p, SERVER_HDR , SERVER_HDR_LEN );
- p+=SERVER_HDR_LEN;
+ memcpy( p, server_hdr.s, server_hdr.len );
+ p+=server_hdr.len;
memcpy( p, CRLF, CRLF_LEN );
p+=CRLF_LEN;
}