[SR-Users] WEBRTC Confusion (2)

Zaka zaka.bhatti at gmail.com
Tue Jul 19 20:11:07 CEST 2016


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 at 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 at 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 at 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 at 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 at 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 at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20160719/3541d50d/attachment.html>


More information about the sr-users mailing list