btw: I never understood in which case which header is used. Is there a simple rule?
regards klaus
Daniel-Constantin Mierla schrieb:
Module: sip-router Branch: master Commit: c745469fb8af0101b26de8bee82c4314dfcafab9 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=c745469f...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Daniel-Constantin Mierla miconda@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;
/* warning hdr */ if (sip_warning) { warning_buf = warning_builder(msg,&warning_len);len += server_hdr.len + CRLF_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 );
memcpy( p, CRLF, CRLF_LEN ); p+=CRLF_LEN; }p+=server_hdr.len;
sr-dev mailing list sr-dev@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev