Hello Colin:
Thanks a lot! It solved the issue. Though I had got a hint by succeeding to specify the address using *kamailio -l desired address/port *option, yet never noticed the lack of *MY-WS_ADDRESS*
Last, but not the least, in a browser supporting WEBRTC (FF, CHROME) do we still need SIP ML5 as on: https://www.doubango.org/sipml5/
If not, I wonder how will the WS or WSS URL post the login credentials to the KAMAILIO WEBRTC server?
BR,
Zaka
On 16 July 2016 at 18:11, Colin Morelli colin.morelli@gmail.com wrote:
Zaka,
I could be wrong here but I don't think you ever actually have a "listen" line for MY_WS_ADDR.
I believe you have a typo, as you have listen=MY_IP_ADDR twice, once within the guard for WITH_WEBSOCKETS. Replace the one inside the if with MY_WS_ADDR and I think your problem should be resolved.
Best, Colin
On Sat, Jul 16, 2016 at 3:36 AM Zaka zaka.bhatti@gmail.com wrote:
Dear List:
I am still stuck. Still unable to get Kamailio to listen on WEBRTC port* (in this case 8000)*
Please advise if it has something to do with disabling TLS/MSRP?
Please see the log & related config file in line here:
*Log:*
0(5724) INFO: <core> [ppcfg.c:82]: pp_subst_add(): ### added subst expression: !MY_WS_PORT!8000!g
*and the result of config file check:*
root@callcntr:/usr/local/etc/kamailio# kamailio -eE -ddd -cf /usr/local/etc/kamailio/websocket.cfg 0(5902) INFO: <core> [main.c:1911]: main(): private (per process) memory: 8388608 bytes 0(5902) DEBUG: <core> [mem/f_malloc.c:323]: fm_malloc_init(): fm_malloc_init: F_OPTIMIZE=16384, /ROUNDTO=2048 0(5902) DEBUG: <core> [mem/f_malloc.c:325]: fm_malloc_init(): fm_malloc_init: F_HASH_SIZE=2099, fm_block size=33912 0(5902) DEBUG: <core> [mem/f_malloc.c:327]: fm_malloc_init(): fm_malloc_init(0x7f9ca6e1f010, 8388608), start=0x7f9ca6e1f010 0(5902) DEBUG: <core> [route.c:129]: route_add(): mapping routing block (0xac2700)[0] to 0 0(5902) DEBUG: <core> [route.c:129]: route_add(): mapping routing block (0xac2680)[0] to 0 0(5902) DEBUG: <core> [route.c:129]: route_add(): mapping routing block (0xac26c0)[0] to 0 0(5902) DEBUG: <core> [route.c:129]: route_add(): mapping routing block (0xac2720)[0] to 0 0(5902) DEBUG: <core> [route.c:129]: route_add(): mapping routing block (0xac26a0)[0] to 0 0(5902) DEBUG: <core> [route.c:129]: route_add(): mapping routing block (0xac26e0)[0] to 0 0(5902) DEBUG: <core> [pvapi.c:1976]: pv_init_buffer(): PV print buffer initialized to [10][8192] 0(5902) DEBUG: <core> [main.c:2097]: main(): read 286773155 from /dev/urandom 0(5902) DEBUG: <core> [main.c:2103]: main(): seeding PRNG with 1755363211 0(5902) DEBUG: <core> [main.c:2107]: main(): test random numbers 726213135 321707966 991183401 0(5902) DEBUG: <core> [re.c:313]: subst_parser(): ok, se is 0x7f9ca6e3fc48 0(5902) INFO: <core> [ppcfg.c:82]: pp_subst_add(): ### added subst expression: !DBURL!mysql://kamailio:kamailiorw@localhost/kamailio!g 0(5902) DEBUG: <core> [cfg.lex:1690]: pp_define(): defining id: DBURL 0(5902) DEBUG: <core> [cfg.lex:1776]: pp_define_set(): ### setting define ID [DBURL] value [mysql://kamailio:kamailiorw@localhost/kamailio] 0(5902) DEBUG: <core> [ppcfg.c:160]: pp_substdef_add(): ### added substdef: [DBURL]=[mysql://kamailio:kamailiorw@localhost/kamailio] (0) 0(5902) DEBUG: <core> [re.c:436]: subst_run(): running. r=1 0(5902) DEBUG: <core> [re.c:505]: subst_str(): no match 0(5902) DEBUG: <core> [re.c:313]: subst_parser(): ok, se is 0x7f9ca6e3ffe8 0(5902) INFO: <core> [ppcfg.c:82]: pp_subst_add(): ### added subst expression: !MY_IP_ADDR!192.168.1.16!g 0(5902) DEBUG: <core> [cfg.lex:1690]: pp_define(): defining id: MY_IP_ADDR 0(5902) DEBUG: <core> [cfg.lex:1776]: pp_define_set(): ### setting define ID [MY_IP_ADDR] value [192.168.1.16] 0(5902) DEBUG: <core> [ppcfg.c:160]: pp_substdef_add(): ### added substdef: [MY_IP_ADDR]=[192.168.1.16] (0) 0(5902) DEBUG: <core> [re.c:436]: subst_run(): running. r=1 0(5902) DEBUG: <core> [re.c:505]: subst_str(): no match 0(5902) DEBUG: <core> [re.c:436]: subst_run(): running. r=1 0(5902) DEBUG: <core> [re.c:505]: subst_str(): no match 0(5902) DEBUG: <core> [re.c:313]: subst_parser(): ok, se is 0x7f9ca6e40320 0(5902) INFO: <core> [ppcfg.c:82]: pp_subst_add(): ### added subst expression: !MY_DOMAIN!callcntr.com.al!g 0(5902) DEBUG: <core> [cfg.lex:1690]: pp_define(): defining id: MY_DOMAIN 0(5902) DEBUG: <core> [cfg.lex:1776]: pp_define_set(): ### setting define ID [MY_DOMAIN] value [callcntr.com.al] 0(5902) DEBUG: <core> [ppcfg.c:160]: pp_substdef_add(): ### added substdef: [MY_DOMAIN]=[callcntr.com.al] (0) 0(5902) DEBUG: <core> [re.c:436]: subst_run(): running. r=1 0(5902) DEBUG: <core> [re.c:505]: subst_str(): no match 0(5902) DEBUG: <core> [re.c:436]: subst_run(): running. r=1 0(5902) DEBUG: <core> [re.c:505]: subst_str(): no match 0(5902) DEBUG: <core> [re.c:436]: subst_run(): running. r=1 0(5902) DEBUG: <core> [re.c:505]: subst_str(): no match 0(5902) DEBUG: <core> [re.c:313]: subst_parser(): ok, se is 0x7f9ca6e40658 0(5902) INFO: <core> [ppcfg.c:82]: pp_subst_add(): ### added subst expression: !MY_WS_PORT!8000!g 0(5902) DEBUG: <core> [cfg.lex:1690]: pp_define(): defining id: MY_WS_PORT 0(5902) DEBUG: <core> [cfg.lex:1776]: pp_define_set(): ### setting define ID [MY_WS_PORT] value [8000] 0(5902) DEBUG: <core> [ppcfg.c:160]: pp_substdef_add(): ### added substdef: [MY_WS_PORT]=[8000] (0) 0(5902) DEBUG: <core> [re.c:436]: subst_run(): running. r=1 0(5902) DEBUG: <core> [re.c:505]: subst_str(): no match 0(5902) DEBUG: <core> [re.c:436]: subst_run(): running. r=1 0(5902) DEBUG: <core> [re.c:505]: subst_str(): no match 0(5902) DEBUG: <core> [re.c:436]: subst_run(): running. r=1 0(5902) DEBUG: <core> [re.c:505]: subst_str(): no match 0(5902) DEBUG: <core> [re.c:436]: subst_run(): running. r=1 0(5902) DEBUG: <core> [re.c:505]: subst_str(): no match 0(5902) DEBUG: <core> [re.c:313]: subst_parser(): ok, se is 0x7f9ca6e40988 0(5902) INFO: <core> [ppcfg.c:82]: pp_subst_add(): ### added subst expression: !MY_WSS_PORT!443!g 0(5902) DEBUG: <core> [cfg.lex:1690]: pp_define(): defining id: MY_WSS_PORT 0(5902) DEBUG: <core> [cfg.lex:1776]: pp_define_set(): ### setting define ID [MY_WSS_PORT] value [443] 0(5902) DEBUG: <core> [ppcfg.c:160]: pp_substdef_add(): ### added substdef: [MY_WSS_PORT]=[443] (0) 0(5902) DEBUG: <core> [re.c:436]: subst_run(): running. r=1 0(5902) DEBUG: <core> [re.c:505]: subst_str(): no match 0(5902) DEBUG: <core> [re.c:436]: subst_run(): running. r=1 0(5902) DEBUG: <core> [re.c:505]: subst_str(): no match 0(5902) DEBUG: <core> [re.c:436]: subst_run(): running. r=1 0(5902) DEBUG: <core> [re.c:505]: subst_str(): no match 0(5902) DEBUG: <core> [re.c:436]: subst_run(): running. r=1 0(5902) DEBUG: <core> [re.c:505]: subst_str(): no match 0(5902) DEBUG: <core> [re.c:436]: subst_run(): running. r=1 0(5902) DEBUG: <core> [re.c:505]: subst_str(): no match 0(5902) DEBUG: <core> [re.c:313]: subst_parser(): ok, se is 0x7f9ca6e40cb8 0(5902) INFO: <core> [ppcfg.c:82]: pp_subst_add(): ### added subst expression: !MY_MSRP_PORT!9000!g 0(5902) DEBUG: <core> [cfg.lex:1690]: pp_define(): defining id: MY_MSRP_PORT 0(5902) DEBUG: <core> [cfg.lex:1776]: pp_define_set(): ### setting define ID [MY_MSRP_PORT] value [9000] 0(5902) DEBUG: <core> [ppcfg.c:160]: pp_substdef_add(): ### added substdef: [MY_MSRP_PORT]=[9000] (0) 0(5902) DEBUG: <core> [re.c:436]: subst_run(): running. r=1 0(5902) DEBUG: <core> [re.c:505]: subst_str(): no match 0(5902) DEBUG: <core> [re.c:436]: subst_run(): running. r=0 0(5902) DEBUG: <core> [re.c:455]: subst_run(): matched (16, 10): [MY_IP_ADDR] 0(5902) DEBUG: <core> [re.c:436]: subst_run(): running. r=1 0(5902) DEBUG: <core> [ppcfg.c:192]: pp_subst_run(): preprocess subst applied [#1] to [!MY_WS_ADDR!tcp:MY_IP_ADDR:MY_WS_PORT!g] - returning new string [!MY_WS_ADDR!tcp:192.168.1.16:MY_WS_PORT!g] 0(5902) DEBUG: <core> [re.c:436]: subst_run(): running. r=1 0(5902) DEBUG: <core> [re.c:505]: subst_str(): no match 0(5902) DEBUG: <core> [re.c:436]: subst_run(): running. r=0 0(5902) DEBUG: <core> [re.c:455]: subst_run(): matched (29, 10): [MY_WS_PORT] 0(5902) DEBUG: <core> [re.c:436]: subst_run(): running. r=1 0(5902) DEBUG: <core> [ppcfg.c:192]: pp_subst_run(): preprocess subst applied [#2] to [!MY_WS_ADDR!tcp:192.168.1.16:MY_WS_PORT!g] - returning new string [!MY_WS_ADDR!tcp:192.168.1.16:8000!g] 0(5902) DEBUG: <core> [re.c:436]: subst_run(): running. r=1 0(5902) DEBUG: <core> [re.c:505]: subst_str(): no match 0(5902) DEBUG: <core> [re.c:436]: subst_run(): running. r=1 0(5902) DEBUG: <core> [re.c:505]: subst_str(): no match 0(5902) DEBUG: <core> [re.c:313]: subst_parser(): ok, se is 0x7f9ca6e41118 0(5902) INFO: <core> [ppcfg.c:82]: pp_subst_add(): ### added subst expression: !MY_WS_ADDR!tcp:192.168.1.16:8000!g 0(5902) DEBUG: <core> [cfg.lex:1690]: pp_define(): defining id: MY_WS_ADDR 0(5902) DEBUG: <core> [cfg.lex:1776]: pp_define_set(): ### setting define ID [MY_WS_ADDR] value [tcp:192.168.1.16:8000] 0(5902) DEBUG: <core> [ppcfg.c:160]: pp_substdef_add(): ### added substdef: [MY_WS_ADDR]=[tcp:192.168.1.16:8000] (0) 0(5902) DEBUG: <core> [cfg.lex:1690]: pp_define(): defining id: WITH_WEBSOCKETS 0(5902) DEBUG: <core> [cfg.lex:1795]: pp_define_get(): ### returning define ID [MY_IP_ADDR] value [192.168.1.16] 0(5902) DEBUG: <core> [cfg.lex:1795]: pp_define_get(): ### returning define ID [MY_IP_ADDR] value [192.168.1.16] loading modules under config path: /usr/local/lib64/kamailio/modules/ 0(5902) DEBUG: <core> [ppcfg.c:223]: pp_ifdef_level_check(): same number of pairing preprocessor directives #!IF[N]DEF - #!ENDIF 0(5902) DEBUG: <core> [route.c:2132]: print_rl(): routing table 0: 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e4d808> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 2 0(5902) DEBUG: <core> [route_struct.c:524]: print_action(): , "L_WARN" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e443b8> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 2 0(5902) DEBUG: <core> [route_struct.c:524]: print_action(): , "403" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:338]: print_action(): drop( 0(5902) DEBUG: <core> [route_struct.c:455]: print_action(): 1 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 1 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:347]: print_action(): route( 0(5902) DEBUG: <core> [route_struct.c:452]: print_action(): "REQINIT" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:421]: print_action(): force_rport( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<0> 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e50ff0> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 0 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e4d808> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 2 0(5902) DEBUG: <core> [route_struct.c:524]: print_action(): , "L_ERR" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e443b8> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 2 0(5902) DEBUG: <core> [route_struct.c:524]: print_action(): , "400" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:338]: print_action(): drop( 0(5902) DEBUG: <core> [route_struct.c:455]: print_action(): 1 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 1 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:347]: print_action(): route( 0(5902) DEBUG: <core> [route_struct.c:452]: print_action(): "WITHINDLG" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e42f78> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 0 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:338]: print_action(): drop( 0(5902) DEBUG: <core> [route_struct.c:455]: print_action(): 1 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 1 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e43950> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 0 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:347]: print_action(): route( 0(5902) DEBUG: <core> [route_struct.c:452]: print_action(): "AUTH" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e4c350> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 1 0(5902) DEBUG: <core> [route_struct.c:543]: print_action(): , type<22> 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e44968> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 0 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:347]: print_action(): route( 0(5902) DEBUG: <core> [route_struct.c:452]: print_action(): "REGISTRAR" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e443b8> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 2 0(5902) DEBUG: <core> [route_struct.c:524]: print_action(): , "484" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:338]: print_action(): drop( 0(5902) DEBUG: <core> [route_struct.c:455]: print_action(): 1 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 1 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:347]: print_action(): route( 0(5902) DEBUG: <core> [route_struct.c:452]: print_action(): "LOCATION" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:347]: print_action(): route( 0(5902) DEBUG: <core> [route_struct.c:452]: print_action(): "RELAY" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route.c:2134]: print_rl(): 0(5902) DEBUG: <core> [route.c:2132]: print_rl(): routing table 1: 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e44460> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 0 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:338]: print_action(): drop( 0(5902) DEBUG: <core> [route_struct.c:455]: print_action(): 1 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 1 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route.c:2134]: print_rl(): 0(5902) DEBUG: <core> [route.c:2132]: print_rl(): routing table 2: 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e443b8> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 2 0(5902) DEBUG: <core> [route_struct.c:524]: print_action(): , "483" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:338]: print_action(): drop( 0(5902) DEBUG: <core> [route_struct.c:455]: print_action(): 1 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 1 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e4d7d0> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 1 0(5902) DEBUG: <core> [route_struct.c:524]: print_action(): , "Malformed SIP message from $si:$sp " 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:338]: print_action(): drop( 0(5902) DEBUG: <core> [route_struct.c:455]: print_action(): 1 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 1 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e4cdb0> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 0 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:338]: print_action(): drop( 0(5902) DEBUG: <core> [route_struct.c:455]: print_action(): 1 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 1 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route.c:2134]: print_rl(): 0(5902) DEBUG: <core> [route.c:2132]: print_rl(): routing table 3: 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e4d808> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 2 0(5902) DEBUG: <core> [route_struct.c:524]: print_action(): , "L_ERR" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e443b8> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 2 0(5902) DEBUG: <core> [route_struct.c:524]: print_action(): , "400" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:338]: print_action(): drop( 0(5902) DEBUG: <core> [route_struct.c:455]: print_action(): 1 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 1 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:347]: print_action(): route( 0(5902) DEBUG: <core> [route_struct.c:452]: print_action(): "RELAY" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e42f78> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 0 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:338]: print_action(): drop( 0(5902) DEBUG: <core> [route_struct.c:455]: print_action(): 1 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 1 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:338]: print_action(): drop( 0(5902) DEBUG: <core> [route_struct.c:455]: print_action(): 1 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 1 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e443b8> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 2 0(5902) DEBUG: <core> [route_struct.c:524]: print_action(): , "404" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:338]: print_action(): drop( 0(5902) DEBUG: <core> [route_struct.c:455]: print_action(): 1 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 1 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route.c:2134]: print_rl(): 0(5902) DEBUG: <core> [route.c:2132]: print_rl(): routing table 4: 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e44460> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 0 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:338]: print_action(): drop( 0(5902) DEBUG: <core> [route_struct.c:455]: print_action(): 1 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 1 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route.c:2134]: print_rl(): 0(5902) DEBUG: <core> [route.c:2132]: print_rl(): routing table 5: 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e42a70> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 0 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e44428> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 2 0(5902) DEBUG: <core> [route_struct.c:524]: print_action(): , "404" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:338]: print_action(): drop( 0(5902) DEBUG: <core> [route_struct.c:455]: print_action(): 1 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 1 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:442]: print_action(): assign( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<21> 0(5902) DEBUG: <core> [route_struct.c:517]: print_action(): , type<22> 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e42a70> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 0 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:448]: print_action(): UNKNOWN( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:517]: print_action(): , type<24> 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route.c:2134]: print_rl(): 0(5902) DEBUG: <core> [route.c:2132]: print_rl(): routing table 6: 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e4e8b8> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 2 0(5902) DEBUG: <core> [route_struct.c:524]: print_action(): , "$fd" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:338]: print_action(): drop( 0(5902) DEBUG: <core> [route_struct.c:455]: print_action(): 1 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 1 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e4e810> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 0 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e443b8> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 2 0(5902) DEBUG: <core> [route_struct.c:524]: print_action(): , "403" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:338]: print_action(): drop( 0(5902) DEBUG: <core> [route_struct.c:455]: print_action(): 1 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 1 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route.c:2134]: print_rl(): 0(5902) DEBUG: <core> [route.c:2132]: print_rl(): onreply routing table 0: 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e4d808> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 2 0(5902) DEBUG: <core> [route_struct.c:524]: print_action(): , "L_WARN" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:338]: print_action(): drop( 0(5902) DEBUG: <core> [route_struct.c:455]: print_action(): 0 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 9 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e50e68> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 0 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route.c:2134]: print_rl(): 0(5902) DEBUG: <core> [route.c:2132]: print_rl(): event routing table 1: 0(5902) DEBUG: <core> [route_struct.c:448]: print_action(): UNKNOWN( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<0> 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:448]: print_action(): UNKNOWN( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<0> 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e4d808> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 2 0(5902) DEBUG: <core> [route_struct.c:524]: print_action(): , "L_WARN" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e50660> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 4 0(5902) DEBUG: <core> [route_struct.c:524]: print_action(): , "403" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:338]: print_action(): drop( 0(5902) DEBUG: <core> [route_struct.c:455]: print_action(): 1 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 1 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e4d808> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 2 0(5902) DEBUG: <core> [route_struct.c:524]: print_action(): , "L_DBG" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e4d808> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 2 0(5902) DEBUG: <core> [route_struct.c:524]: print_action(): , "L_WARN" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e50660> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 4 0(5902) DEBUG: <core> [route_struct.c:524]: print_action(): , "403" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:338]: print_action(): drop( 0(5902) DEBUG: <core> [route_struct.c:455]: print_action(): 1 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 1 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:401]: print_action(): if ( 0(5902) DEBUG: <core> [route_struct.c:483]: print_action(): type<22> 0(5902) DEBUG: <core> [route_struct.c:485]: print_action(): ) { 0(5902) DEBUG: <core> [route_struct.c:338]: print_action(): drop( 0(5902) DEBUG: <core> [route_struct.c:455]: print_action(): 1 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 1 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:519]: print_action(): } else { 0(5902) DEBUG: <core> [route_struct.c:545]: print_action(): }; 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e50660> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 4 0(5902) DEBUG: <core> [route_struct.c:524]: print_action(): , "404" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route.c:2134]: print_rl(): 0(5902) DEBUG: <core> [route.c:2132]: print_rl(): event routing table 2: 0(5902) DEBUG: <core> [route_struct.c:418]: print_action(): external_module_call( 0(5902) DEBUG: <core> [route_struct.c:467]: print_action(): f_ptr<0x7f9ca6e4d808> 0(5902) DEBUG: <core> [route_struct.c:493]: print_action(): , 2 0(5902) DEBUG: <core> [route_struct.c:524]: print_action(): , "L_INFO" 0(5902) DEBUG: <core> [route_struct.c:546]: print_action(): ); 0(5902) DEBUG: <core> [route.c:2134]: print_rl(): 0(5902) DEBUG: <core> [route.c:129]: route_add(): mapping routing block (0xac26e0)[core:receive-parse-error] to 3 0(5902) INFO: <core> [sctp_core.c:74]: sctp_core_check_support(): SCTP API not enabled - if you want to use it, load sctp module Listening on udp: 192.168.1.16:5060 tcp: 192.168.1.16:5060 Aliases: tcp: callcntr:5060 udp: callcntr:5060
config file ok, exiting... root@callcntr:/usr/local/etc/kamailio#
*Config File:*
#!KAMAILIO # # Simple/sample kamailio.cfg for running a proxy/registrar with TLS and # WebSockets support.
#!substdef "!DBURL!mysql://kamailio:kamailiorw@localhost/kamailio!g" #!substdef "!MY_IP_ADDR!192.168.1.16!g" #!substdef "!MY_DOMAIN!callcntr.com.al!g" #!substdef "!MY_WS_PORT!8000!g" #!substdef "!MY_WSS_PORT!443!g" #!substdef "!MY_MSRP_PORT!9000!g" #!substdef "!MY_WS_ADDR!tcp:MY_IP_ADDR:MY_WS_PORT!g" ##!substdef "!MY_WSS_ADDR!tls:MY_IP_ADDR:MY_WSS_PORT!g" ##!substdef "!MY_MSRP_ADDR!tls:MY_IP_ADDR:MY_MSRP_PORT!g" ##!substdef "!MSRP_MIN_EXPIRES!1800!g" ##!substdef "!MSRP_MAX_EXPIRES!3600!g"
##!define LOCAL_TEST_RUN ##!define WITH_TLS #!define WITH_WEBSOCKETS ##!define WITH_MSRP
####### Global Parameters #########
fork=yes children=4
#!ifdef WITH_TLS enable_tls=1 #!endif
listen=MY_IP_ADDR #!ifdef WITH_WEBSOCKETS listen=MY_IP_ADDR #!ifdef WITH_TLS #listen=MY_WSS_ADDR #!endif #!endif #!ifdef WITH_MSRP listen=MY_MSRP_ADDR #!endif
tcp_connection_lifetime=3604 tcp_accept_no_cl=yes tcp_rd_buf_size=16384
#!ifdef LOCAL_TEST_RUN debug=2 mpath="modules" #!else debug=0 mpath="/usr/local/lib64/kamailio/modules/" #!endif
loadmodule "db_mysql.so" loadmodule "tm.so" loadmodule "sl.so" loadmodule "rr.so" loadmodule "pv.so" loadmodule "maxfwd.so" loadmodule "usrloc.so" loadmodule "registrar.so" loadmodule "textops.so" loadmodule "siputils.so" loadmodule "xlog.so" loadmodule "sanity.so" loadmodule "ctl.so" loadmodule "auth.so" loadmodule "auth_db.so" loadmodule "kex.so" loadmodule "mi_rpc.so" loadmodule "corex.so" #!ifdef WITH_TLS loadmodule "tls.so" #!endif #!ifdef WITH_MSRP loadmodule "msrp.so" loadmodule "htable.so" loadmodule "cfgutils.so" #!endif #!ifdef WITH_WEBSOCKETS loadmodule "xhttp.so" loadmodule "websocket.so" loadmodule "nathelper.so" #!endif
#!ifdef WITH_WEBSOCKETS # ----- nathelper params ----- modparam("nathelper|registrar", "received_avp", "$avp(RECEIVED)") # Note: leaving NAT pings turned off here as nathelper is _only_ being used for # WebSocket connections. NAT pings are not needed as WebSockets have # their own keep-alives. #!endif
####### Routing Logic ########
# Main SIP request routing logic # - processing of any incoming SIP request starts with this route # - note: this is the same as route { ... } request_route {
- if (($Rp == MY_WS_PORT)) { *
*#### I deleted/ modified this logical expression ####*
xlog("L_WARN", "SIP request received on $Rp\n"); sl_send_reply("403", "Forbidden"); exit; } # per request initial checks route(REQINIT);
#!ifdef WITH_WEBSOCKETS if (nat_uac_test(64)) { # Do NAT traversal stuff for requests from a WebSocket # connection - even if it is not behind a NAT! # This won't be needed in the future if Kamailio and the # WebSocket client support Outbound and Path. force_rport(); if (is_method("REGISTER")) { fix_nated_register(); } else { if (!add_contact_alias()) { xlog("L_ERR", "Error aliasing contact <$ct>\n"); sl_send_reply("400", "Bad Request"); exit; } } } #!endif
# handle requests within SIP dialogs route(WITHINDLG); ### only initial requests (no To tag) # CANCEL processing if (is_method("CANCEL")) { if (t_check_trans()) { t_relay(); } exit; } t_check_trans(); # authentication route(AUTH); # record routing for dialog forming requests (in case they are routed) # - remove preloaded route headers remove_hf("Route"); if (is_method("INVITE")) { record_route(); } # handle registrations route(REGISTRAR); if ($rU==$null) { # request with no Username in RURI sl_send_reply("484", "Address Incomplete"); exit; } # user location service route(LOCATION); route(RELAY);
}
route[RELAY] { if (!t_relay()) { sl_reply_error(); } exit; }
# Per SIP request initial checks route[REQINIT] { if (!mf_process_maxfwd_header("10")) { sl_send_reply("483", "Too Many Hops"); exit; }
if (!sanity_check("1511", "7")) { xlog("Malformed SIP message from $si:$sp\n"); exit; } if (uri == myself && is_method("OPTIONS") && !(uri=~"sip:.*[@]+.*")) { options_reply(); exit; }
}
# Handle requests within SIP dialogs route[WITHINDLG] { if (has_totag()) { # sequential request withing a dialog should # take the path determined by record-routing if (loose_route()) { #!ifdef WITH_WEBSOCKETS if ($du == "") { if (!handle_ruri_alias()) { xlog("L_ERR", "Bad alias <$ru>\n"); sl_send_reply("400", "Bad Request"); exit; } } #!endif route(RELAY); } else { if ( is_method("ACK") ) { if ( t_check_trans() ) { # no loose-route, but stateful ACK; # must be an ACK after a 487 # or e.g. 404 from upstream server t_relay(); exit; } else { # ACK without matching transaction... # ignore and discard exit; } } sl_send_reply("404", "Not Found"); } exit; } }
# Handle SIP registrations route[REGISTRAR] { if (is_method("REGISTER")) { if (!save("location")) { sl_reply_error(); } exit; } }
# USER location service route[LOCATION] { if (!is_subscriber("$ru", "subscriber", "1")) { t_newtran(); send_reply("404", "Not Found"); exit; }
if (!lookup("location")) { $var(rc) = $rc; t_newtran(); switch ($var(rc)) { case -1: send_reply("480", "Temporarily Unavailable"); exit; case -2: send_reply("405", "Method Not Allowed"); exit; case -3: send_reply("500", "Server Internal Error"); exit; } }
}
# Authentication route route[AUTH] { if (is_method("REGISTER") || from_uri==myself) { # authenticate requests if (!auth_check("$fd", "subscriber", "1")) { auth_challenge("$fd", "0"); exit; } # user authenticated - remove auth header if(!is_method("REGISTER")) { consume_credentials(); } } # if caller is not local subscriber, then check if it calls # a local destination, otherwise deny, not an open relay here if (from_uri!=myself && uri!=myself) { sl_send_reply("403", "Forbidden"); exit; } }
#!ifdef WITH_WEBSOCKETS onreply_route { if ((($Rp == MY_WS_PORT) && !(proto == WS)) || $Rp == MY_MSRP_PORT) { xlog("L_WARN", "SIP response received on $Rp\n"); drop; }
if (nat_uac_test(64)) { # Do NAT traversal stuff for replies to a WebSocket connection # - even if it is not behind a NAT! # This won't be needed in the future if Kamailio and the # WebSocket client support Outbound and Path. add_contact_alias(); }
}
event_route[xhttp:request] { set_reply_close(); set_reply_no_connect();
if ($Rp != MY_WS_PORT
#!ifdef WITH_TLS && $Rp != MY_WSS_PORT #!endif ) { xlog("L_WARN", "HTTP request received on $Rp\n"); xhttp_reply("403", "Forbidden", "", ""); exit; }
xlog("L_DBG", "HTTP Request Received\n"); if ($hdr(Upgrade)=~"websocket" && $hdr(Connection)=~"Upgrade" && $rm=~"GET") { # Validate Host - make sure the client is using the correct # alias for WebSockets if ($hdr(Host) == $null || !is_myself("sip:" + $hdr(Host))) { xlog("L_WARN", "Bad host $hdr(Host)\n"); xhttp_reply("403", "Forbidden", "", ""); exit; } # Optional... validate Origin - make sure the client is from an # authorised website. For example, # # if ($hdr(Origin) != "http://communicator.MY_DOMAIN" # && $hdr(Origin) != "https://communicator.MY_DOMAIN") { # xlog("L_WARN", "Unauthorised client $hdr(Origin)\n"); # xhttp_reply("403", "Forbidden", "", ""); # exit; # } # Optional... perform HTTP authentication # ws_handle_handshake() exits (no further configuration file # processing of the request) when complete. if (ws_handle_handshake()) { # Optional... cache some information about the # successful connection exit; } } xhttp_reply("404", "Not Found", "", "");
}
event_route[websocket:closed] { xlog("L_INFO", "WebSocket connection from $si:$sp has closed\n"); } #!endif
#!ifdef WITH_MSRP event_route[msrp:frame-in] { msrp_reply_flags("1");
if ((($Rp == MY_WS_PORT || $Rp == MY_WSS_PORT) && !(proto == WS || proto == WSS)) && $Rp != MY_MSRP_PORT) { xlog("L_WARN", "MSRP request received on $Rp\n"); msrp_reply("403", "Action-not-allowed"); exit; } if (msrp_is_reply()) { msrp_relay(); } else if($msrp(method)=="AUTH") { if($msrp(nexthops)>0) { msrp_relay(); exit; } if (!www_authenticate("MY_DOMAIN", "subscriber", "$msrp(method)")) { if (auth_get_www_authenticate("MY_DOMAIN", "1", "$var(wauth)")) { msrp_reply("401", "Unauthorized", "$var(wauth)"); } else { msrp_reply("500", "Server Error"); } exit; } if ($hdr(Expires) != $null) { $var(expires) = (int) $hdr(Expires); if ($var(expires) < MSRP_MIN_EXPIRES) { msrp_reply("423", "Interval Out-of-Bounds", "Min-Expires: MSRP_MIN_EXPIRES\r\n"); exit; } else if ($var(expires) > MSRP_MAX_EXPIRES) { msrp_reply("423", "Interval Out-of-Bounds", "Max-Expires: MSRP_MAX_EXPIRES\r\n"); exit; } } else { $var(expires) = MSRP_MAX_EXPIRES; } $var(cnt) = $var(cnt) + 1; pv_printf("$var(sessid)", "s.$(pp).$(var(cnt)).$(RANDOM)"); $sht(msrp=>$var(sessid)::srcaddr) = $msrp(srcaddr); $sht(msrp=>$var(sessid)::srcsock) = $msrp(srcsock); $shtex(msrp=>$var(sessid)) = $var(expires) + 5; # - Use-Path: the MSRP address for server + session id $var(hdrs) = "Use-Path: msrps://MY_IP_ADDR:MY_MSRP_PORT/" + $var(sessid) + ";tcp\r\n" + "Expires: " + $var(expires) + "\r\n"; msrp_reply("200", "OK", "$var(hdrs)"); } else if ($msrp(method)=="SEND" || $msrp(method)=="REPORT") { if ($msrp(nexthops)>1) { if ($msrp(method)!="REPORT") { msrp_reply("200", "OK"); } msrp_relay(); exit; } $var(sessid) = $msrp(sessid); if ($sht(msrp=>$var(sessid)::srcaddr) == $null) { # one more hop, but we don't have address in htable msrp_reply("481", "Session-does-not-exist"); exit; } else if ($msrp(method)!="REPORT") { msrp_reply("200", "OK"); } msrp_relay_flags("1"); msrp_set_dst("$sht(msrp=>$var(sessid)::srcaddr)", "$sht(msrp=>$var(sessid)::srcsock)"); msrp_relay(); } else { msrp_reply("501", "Request-method-not-understood"); }
} #!endif
Thanks a million!
Zaka
One accurate measurement is worth more than a thousand expert opinions! _______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users