when writing scripts like this

listen=tcp:192.168.1.100:8080

tcp_connection_lifetime=1200
tcp_no_new_conn_bflag=6
...

the variable tcp_no_new_conn_bflag will be not correctly set to number 6. This 
is because in cfg.y, 

                | TCP_NO_NEW_CONN_BFLAG EQUAL NUMBER {
                        #ifdef USE_TCP
                                fix_flag_name(&tmp, $3);
                                tcp_no_new_conn_bflag = 
get_flag_id_by_name(FLAG_TYPE_BRANCH, tmp);
                                if (!flag_in_range( 
(flag_t)tcp_no_new_conn_bflag ) )
                                        yyerror("invalid TCP no_new_conn Branch 
Flag");
                                flag_idx2mask( &tcp_no_new_conn_bflag );

the number flag will be converted to string by macro "fix_flag_name". The macro 
“fix_flag_name” was defined as


#define fix_flag_name(_s, _flag)                         \
     do {                                                \
                if (!*_s && _flag > 0) {                         \
                        LM_WARN("Integer flags are now deprecated! " \
                                "Use unique quoted strings!\n");     \
                        *_s = int2str(_flag, NULL);                  \
                }                                                \
         } while (0)

in flags.h. It is executed only when tmp is pointing to a null string. But the 
global variable tmp is used to store listening IP address in  cfg.y

listen_id:      ip                      {       tmp=ip_addr2a($1);

So please use a new variable for converting number to string.


---
Reply to this email directly or view it on GitHub:
https://github.com/OpenSIPS/opensips/issues/229
_______________________________________________
Devel mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/devel

Reply via email to