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; + 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; }
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
On 20.08.2009 13:20 Uhr, Klaus Darilion wrote:
btw: I never understood in which case which header is used. Is there a simple rule?
Hi Klaus,
the server header is added in local generated replies and user agent in requests. Not sure if there is RFC clarifying better when and where they must be used, but since SR core had two distinct defines, one for each, it was the way to go.
Cheers, Daniel
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