I would also say that if a gateway that's in the target set is being rejected due to blacklist, the debug messages at loglevel 3 should reflect this somehow.

They don't:

[#7fc6f690c700/6535] [resolve_targets, resolver.cpp:1080] DEBUG: sip_destination: 123.123.123.123:0/udp [#7fc6f690c700/6535] [set_destination_ip, resolver.cpp:1005] DEBUG: checking whether '123.123.123.123' is IP address... [#7fc6f690c700/6535] [set_destination_ip, resolver.cpp:1063] DEBUG: set destination to 123.123.123.123:5060
 [#7fc6f690c700/6535] [debug, resolver.cpp:794] DEBUG:  target list:
[#7fc6f690c700/6535] [debug, resolver.cpp:801] DEBUG: 123.123.123.123:5060/udp to target list [#7fc6f690c700/6535] [send_request, trans_layer.cpp:1267] DEBUG: send_request to R-URI <sip:3879#[email protected]> [#7fc6f690c700/6535] [send_request, trans_layer.cpp:1280] DEBUG: next_ip(): no more destinations! reply 500

It wasn't until we hunted down sip_target_set::get_next() that we were able to figure out what was going on:

https://github.com/sipwise/sems/blob/master/core/sip/resolver.cpp#L780

If this is "maximum" debug log verbosity, perhaps it should be more useful in illuminating reasons for nonobvious behaviour?

This gateway blacklist is a new feature in 1.6:

[root@csrpsemsus1 sems]# fgrep -HR default_bl_ttl . | grep -v Binary
./core/SipCtrlInterface.cpp:    if (cfg.hasParameter("default_bl_ttl")) {
./core/SipCtrlInterface.cpp:        trans_layer::default_bl_ttl =
./core/SipCtrlInterface.cpp:            cfg.getParameterInt("default_bl_ttl",
./core/SipCtrlInterface.cpp:                                
trans_layer::default_bl_ttl);
./core/SipCtrlInterface.cpp: DBG("default_bl_ttl = %u\n",trans_layer::default_bl_ttl); ./core/sip/trans_layer.cpp:unsigned int _trans_layer::default_bl_ttl = DEFAULT_BL_TTL;
./core/sip/trans_layer.cpp:     if(default_bl_ttl) {
./core/sip/trans_layer.cpp:                                          
default_bl_ttl,"503");
./core/sip/trans_layer.cpp:                                                  
default_bl_ttl,"503");
./core/sip/trans_layer.cpp:         if(default_bl_ttl) {
./core/sip/trans_layer.cpp:                                              
default_bl_ttl,"503");
./core/sip/trans_layer.cpp:         if(default_bl_ttl) {
./core/sip/trans_layer.cpp:                                              
default_bl_ttl,
./core/sip/trans_layer.cpp:     if(default_bl_ttl) {
./core/sip/trans_layer.cpp:                                          
default_bl_ttl,"503");
./core/sip/trans_layer.h:    static unsigned int default_bl_ttl;
[root@csrpsemsus1 sems]# git checkout 1.5
Switched to branch '1.5'
[root@csrpsemsus1 sems]# fgrep -HR default_bl_ttl . | grep -v Binary
[root@csrpsemsus1 sems]#

And, insidiously, it's on _by default_. Shouldn't one be able to somehow become aware of it without reading C++?

-- Alex

On 12/08/2015 09:04 PM, Alex Balashov wrote:

In 1.6, this parameter has profound effects but is not documented or
represented in any sample configs:

[root@csrpsemsus1 sems]# fgrep -HR default_bl_ttl . | grep -v Binary
./core/SipCtrlInterface.cpp:    if (cfg.hasParameter("default_bl_ttl")) {
./core/SipCtrlInterface.cpp:        trans_layer::default_bl_ttl =
./core/SipCtrlInterface.cpp:        cfg.getParameterInt("default_bl_ttl",
./core/SipCtrlInterface.cpp:
trans_layer::default_bl_ttl);
./core/SipCtrlInterface.cpp:    DBG("default_bl_ttl =
%u\n",trans_layer::default_bl_ttl);
./core/sip/trans_layer.cpp:unsigned int _trans_layer::default_bl_ttl =
DEFAULT_BL_TTL;
./core/sip/trans_layer.cpp:    if(default_bl_ttl) {
./core/sip/trans_layer.cpp:                         default_bl_ttl,"503");
./core/sip/trans_layer.cpp:
default_bl_ttl,"503");
./core/sip/trans_layer.cpp:        if(default_bl_ttl) {
./core/sip/trans_layer.cpp:                         default_bl_ttl,"503");
./core/sip/trans_layer.cpp:        if(default_bl_ttl) {
./core/sip/trans_layer.cpp:                         default_bl_ttl,
./core/sip/trans_layer.cpp:    if(default_bl_ttl) {
./core/sip/trans_layer.cpp:                         default_bl_ttl,"503");
./core/sip/trans_layer.h:    static unsigned int default_bl_ttl;

I think this is a big problem. We had to track it down in the source to
figure out why 90% of our calls were being rejected out of hand with
'500 No destination available'.



--
Alex Balashov | Principal | Evariste Systems LLC
303 Perimeter Center North, Suite 300
Atlanta, GA 30346
United States

Tel: +1-800-250-5920 (toll-free) / +1-678-954-0671 (direct)
Web: http://www.evaristesys.com/, http://www.csrpswitch.com/
_______________________________________________
Sems mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/sems

Reply via email to