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!
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
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
Zakia,
Alright, starting with the basics: IP based voice/video communications generally involve two distinct responsibilities: signaling and media.
The job of the signaling layer is to exchange information about calls between two parties. For example, if I call you, I use my signaling protocol to talk to my signaling server to send you an invitation to connect. The server (somehow - implementation dependent) relays that information to you. Once you've received the information, you can answer/ignore/reject the invitation. The signaling layer is responsible for notifying me about your response. The ultimate goal of the signaling layer is to exchange media descriptions, that tell each party where/how they can communicate with each other. SIP is an example of a signaling protocol, and it uses SDPs to exchange information about media.
The job of the media layer is to actually exchange the media between two endpoints. With the job of the signaling layer complete, I should have some information about how I can talk to you. With that information I received over the signaling layer, I should be able to open my local audio/video devices, and stream data to you regardless of where you are. The media layer is responsible for handling that data and ensuring it gets to its destination. WebRTC is a spec for a media implementation which uses STUN/TURN/ICE for NAT traversal and reliable media exchange. While it is commonly built on top of SIP, there is no reason it needs to be. SIP is not directly involved in WebRTC at all. Rather, WebRTC-capable SIP endpoints simply generate an SDP containing all the information WebRTC needs to know in order to take over the rest (what codecs should be used, ICE candidates where the remote party can be reached, etc).
Now, Kamailio is a SIP server/proxy. This means it speaks/understands the SIP protocol. This also means that its primary concern is with signaling. If you want to use Kamailio as the signaling layer for your application - then you'll need to talk to it via SIP. sipml5 is a javascript based SIP client that can run in browser, but there are others as well (SIP.js, JsSIP). You'll probably want to use one of these rather than build your own. Now, because SIP is just the signaling layer - there's no reason you *need* to use SIP in order to work with WebRTC. However, the Kamailio group, as well as the SIP client authors, have spent a lot of time building and refining their products to make them production-grade and robust.
If you want to use Kamailio, you need a SIP client. Even with WebRTC (remember, WebRTC is only about media). If you were feeling very adventurous (although I would never recommend it), you could build your own signaling layer and use your own custom client. But you'd also have to build a server component that speaks your new protocol.
Bottom line: you probably just want to stick with Kamailio + one of the great javascript SIP clients I mentioned above. They're quite stable/reliable.
Hopefully that helps.
Best, Colin
On Tue, Jul 19, 2016 at 3:11 PM Zaka zaka.bhatti@gmail.com wrote:
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
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
Colin,
There is gratitude for you for your time and exceptional consideration. I am really indebted, mate! Here in Albanian culture "I owe you a coffee" (no a dinner!) :)
So as per your advice, I shall stick to the run of the mill clients at this stage, rather than reinvent a slightly better wheel.
With kindest regards,
Zaka
On 19 July 2016 at 21:51, Colin Morelli colin.morelli@gmail.com wrote:
Zakia,
Alright, starting with the basics: IP based voice/video communications generally involve two distinct responsibilities: signaling and media.
The job of the signaling layer is to exchange information about calls between two parties. For example, if I call you, I use my signaling protocol to talk to my signaling server to send you an invitation to connect. The server (somehow - implementation dependent) relays that information to you. Once you've received the information, you can answer/ignore/reject the invitation. The signaling layer is responsible for notifying me about your response. The ultimate goal of the signaling layer is to exchange media descriptions, that tell each party where/how they can communicate with each other. SIP is an example of a signaling protocol, and it uses SDPs to exchange information about media.
The job of the media layer is to actually exchange the media between two endpoints. With the job of the signaling layer complete, I should have some information about how I can talk to you. With that information I received over the signaling layer, I should be able to open my local audio/video devices, and stream data to you regardless of where you are. The media layer is responsible for handling that data and ensuring it gets to its destination. WebRTC is a spec for a media implementation which uses STUN/TURN/ICE for NAT traversal and reliable media exchange. While it is commonly built on top of SIP, there is no reason it needs to be. SIP is not directly involved in WebRTC at all. Rather, WebRTC-capable SIP endpoints simply generate an SDP containing all the information WebRTC needs to know in order to take over the rest (what codecs should be used, ICE candidates where the remote party can be reached, etc).
Now, Kamailio is a SIP server/proxy. This means it speaks/understands the SIP protocol. This also means that its primary concern is with signaling. If you want to use Kamailio as the signaling layer for your application - then you'll need to talk to it via SIP. sipml5 is a javascript based SIP client that can run in browser, but there are others as well (SIP.js, JsSIP). You'll probably want to use one of these rather than build your own. Now, because SIP is just the signaling layer - there's no reason you *need* to use SIP in order to work with WebRTC. However, the Kamailio group, as well as the SIP client authors, have spent a lot of time building and refining their products to make them production-grade and robust.
If you want to use Kamailio, you need a SIP client. Even with WebRTC (remember, WebRTC is only about media). If you were feeling very adventurous (although I would never recommend it), you could build your own signaling layer and use your own custom client. But you'd also have to build a server component that speaks your new protocol.
Bottom line: you probably just want to stick with Kamailio + one of the great javascript SIP clients I mentioned above. They're quite stable/reliable.
Hopefully that helps.
Best, Colin
On Tue, Jul 19, 2016 at 3:11 PM Zaka zaka.bhatti@gmail.com wrote:
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
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