Hi,

I've nearly completed the process of upgrading our ancient v1.7 deployment to 
v3.7. The new deployment is installed on Ubuntu 24.04 from the OpenSIPS repos. 
These servers are our inbound hand-off from our upstream supplier, they take a 
call, inspect the called number element against the database, and then pass it 
on to the target system with the internal reference or decline the call.

I've never been a programmer and am much more familiar with Asterisk, having 
inherited the platform & 'maintained' these hosts for about ten years I'm far 
from fluent in the configuration syntax but also much less terrified than I was 
when I first opened the opensips.cfg file. Having said that, I've updated most 
of the configuration and database backend to successfully accept, process & 
pass on a call to our core voice platform with 2-way audio.

Unfortunately, when a call is terminated by either the called or calling party 
the BYE signal is not passed to the other party leaving the call hanging until 
they also hang up or an intermediate system decides the call is in a stale 
state & drops it.

From what I can tell, this is the v1.7 code which would capture the session 
related traffic and associate a BYE with a particular call.

I think the problem is related to my attempt to convert the depreciated  
allow_source_address_group() function:

--- v1.7 code ---
      if(is_method("INVITE")) {
         setflag("1");
         setflag("2");

>>       $var(group) = allow_source_address_group();
         xlog("L_ERR", "LOG: The value of var(group) = [$var(group)]");

         if ($var(group) != -1) {

           if(!alias_db_lookup("dbaliases")) {
               xlog("L_ERR", "LOG: Alias not found time=[$Ts] from uri=[$fu] to 
uri=[$ru]");
               sl_send_reply("404", "Not Found");
            };

            $avp(s:site)=$(ruri.user{s.substr,0,5});
            route(3);
            exit;
         }

         else if ($var(group)  == -1) {
            log(1, "Permissions RECORD FAIL\n");
            sl_send_reply("403", "Forbidden");
            exit;
         };
      };



--- v3.7 code ---

      if (is_method("INVITE")) {
         $acc_extra(si) = $si;
         $acc_extra(fU) = $fU;
         $acc_extra(fd) = $fd;
         $acc_extra(rU) = $rU;
         $acc_extra(rd) = $rd;

         do_accounting("log|db","cdr|missed");

         xlog("L_ERR", "LOG: The value of si = [$si]");
>>       $var(srcgrp) = get_source_group($si);
         xlog("L_ERR", "LOG: The value of var(srcgrp) = [$var(srcgrp)]");
>>       $var(group) = check_source_address($var(srcgrp));
         xlog("L_ERR", "LOG: The value of var(group) = [$var(group)]");

         if ($var(group) != -1) {

            if (!alias_db_lookup("dbaliases")) {
               xlog("L_ERR", "LOG: DDI Alias not found, time=[$Ts] from 
uri=[$fu] to uri=[$ru]");
               sl_send_reply(404, "Not Found");
            };

            $avp(site)=$(ruri.user{s.substr,0,5});
            route(ALLOW);
            exit; 
         }

         else if ($var(group)  == -1) {
            log(1, "Permissions RECORD FAIL\n");
            sl_send_reply(403, "Forbidden");
            exit;
         };
      };

The logging on the hosts indicates that my substitution isn't working.

--- v1.7 log ---

Jan 26 17:28:28 routing-1 /../opensips[1956]: --== SIP message body - INVITE 
==-- v=0#015#012o=Sonus_UAC 828539 387688 IN IP4 <UPSTREAM_PEER>#015#012s=SIP 
Media Capabilities#015#012c=IN IP4 141.170.50.21#015#012t=0 0#015#012m=audio 
25014 RTP/AVP 8 98#015#012a=rtpmap:8 PCMA/8000#015#012a=rtpmap:98 
telephone-event/8000#015#012a=fmtp:98 
0-15#015#012a=sendrecv#015#012a=maxptime:20#015
Jan 26 17:28:28 routing-1 /../opensips[1956]: 
DBG:permissions:allow_source_address_group: looking for <8460ef6d, 5060> in 
address table
Jan 26 17:28:28 routing-1 /../opensips[1956]: 
DBG:permissions:allow_source_address_group: Found <-1>
Jan 26 17:28:28 routing-1 /../opensips[1956]: 
DBG:permissions:allow_source_address_group: looking for <8460ef6d, 5060> in 
subnet table
Jan 26 17:28:28 routing-1 /../opensips[1956]: 
DBG:permissions:allow_source_address_group: Found <1>

Jan 26 17:28:28 routing-1 /../opensips[1956]: LOG: The value of var(group) = [1]
Jan 26 17:28:28 routing-1 /../opensips[1956]: DBG:core:comp_scriptvar: int 29 : 
1 / -1

Jan 26 17:28:28 routing-1 /../opensips[1956]: DBG:db_mysql:has_stmt_ctx: ctx 
found for dbaliases
Jan 26 17:28:28 routing-1 /../opensips[1956]: 
DBG:db_mysql:db_mysql_do_prepared_query: conn=0x787e70 (tail=7895720) 
MC=0x786208
Jan 26 17:28:28 routing-1 /../opensips[1956]: 
DBG:db_mysql:db_mysql_do_prepared_query: set values for the statement run
Jan 26 17:28:28 routing-1 /../opensips[1956]: DBG:db_mysql:db_mysql_val2bind: 
added val (0): len=12; type=254; is_null=0
Jan 26 17:28:28 routing-1 /../opensips[1956]: 
DBG:db_mysql:db_mysql_do_prepared_query: doing BIND_PARAM in...
Jan 26 17:28:28 routing-1 /../opensips[1956]: 
DBG:db_mysql:db_mysql_do_prepared_query: prepared statement has 2 columns in 
result
Jan 26 17:28:28 routing-1 /../opensips[1956]: DBG:core:db_new_result: allocate 
48 bytes for result set at 0x789bf0
Jan 26 17:28:28 routing-1 /../opensips[1956]: 
DBG:db_mysql:db_mysql_get_columns: 2 columns returned from the query
Jan 26 17:28:28 routing-1 /../opensips[1956]: DBG:core:db_allocate_columns: 
allocate 56 bytes for result columns at 0x789618


--- v 3.7 log ---

01-26 17:43:30.891281 a /../opensips[4010750]: ERROR:--== SIP message body - 
INVITE ==-- v=0#015#012o=Sonus_UAC 565884 3698 IN IP4 
<UPSTREAM_PEER>#015#012s=SIP Media Capabilities#015#012c=IN IP4 
<UPSTREAM_PEER>#015#012t=0 0#015#012m=audio 27052 RTP/AVP 8 
96#015#012a=rtpmap:8 PCMA/8000#015#012a=rtpmap:96 
telephone-event/8000#015#012a=fmtp:96 
0-15#015#012a=sendrecv#015#012a=maxptime:20#015
01-26 17:43:30.891298 a /../opensips[4010750]: DBG:core:parse_to_param: 
tag=gK085d4ab6
01-26 17:43:30.891313 a /../opensips[4010750]: DBG:core:parse_to_param: end of 
header reached, state=11
01-26 17:43:30.891327 a /../opensips[4010750]: DBG:core:_parse_to: end of 
header reached, state=29
01-26 17:43:30.891342 a /../opensips[4010750]: DBG:core:_parse_to: display={}, 
ruri={sip:<CALLER_DDI>@<UPSTREAM_PEER>;user=phone}
01-26 17:43:30.891425 a /../opensips[4010750]: DBG:core:parse_headers_aux: 
flags=78
01-26 17:43:30.891441 a /../opensips[4010750]: DBG:core:has_totag: no totag
01-26 17:43:30.891459 a /../opensips[4010750]: DBG:dialog:build_new_dlg: new 
dialog 0x71cbfe3b64b0 
(c=352862312_66830718@<UPSTREAM_PEER>,f=sip:<CALLER_DDI>@<UPSTREAM_PEER>;user=phone,t=sip:<OUR_DDI>@<UPSTREAM_PEER>;user=phone,ft=gK085d4ab6)
 on hash 3981
01-26 17:43:30.891481 a /../opensips[4010750]: DBG:core:parse_headers_aux: 
flags=ffffffffffffffff
01-26 17:43:30.891502 a /../opensips[4010750]: DBG:core:print_rr_body: current 
rr is <sip:<UPSTREAM_PEER>;lr;ftag=gK085d4ab6;did=d8f.40748994>
01-26 17:43:30.891517 a /../opensips[4010750]: DBG:core:print_rr_body: skipping 
0 route records
01-26 17:43:30.891533 a /../opensips[4010750]: DBG:core:print_rr_body: out rr 
[<sip:<UPSTREAM_PEER>;lr;ftag=gK085d4ab6;did=d8f.40748994>]
01-26 17:43:30.891546 a /../opensips[4010750]: DBG:core:print_rr_body: we have 
1 records
01-26 17:43:30.891562 a /../opensips[4010750]: DBG:dialog:update_leg_info: 
route_set <sip:<UPSTREAM_PEER>;lr;ftag=gK085d4ab6;did=d8f.40748994>, contact 
sip:<CALLER_DDI>@<UPSTREAM_PEER>:5060, cseq 494280 and bind_addr 
udp:<THIS_HOST>:5060
01-26 17:43:30.891582 a /../opensips[4010750]: DBG:core:parse_headers_aux: 
flags=ffffffffffffffff
01-26 17:43:30.891594 a /../opensips[4010750]: DBG:dialog:dlg_update_leg_info: 
set leg 0 for 0x71cbfe3b64b0: tag=<gK085d4ab6> rcseq=<0>
01-26 17:43:30.891610 a /../opensips[4010750]: DBG:dialog:link_dlg: ref dlg 
0x71cbfe3b64b0 with 3 -> 3 in h_entry 0x71cbfe377c08 - 3981
01-26 17:43:30.891627 a /../opensips[4010750]: DBG:rr:add_rr_param: adding 
(;did=d8f.57669b46)
01-26 17:43:30.891643 a /../opensips[4010750]: DBG:rr:add_rr_param: second RR 
lump found
01-26 17:43:30.891660 a /../opensips[4010750]: DBG:rr:add_rr_param: second RR 
lump found

01-26 17:43:30.891772 a /../opensips[4010750]: ERROR:LOG: The value of si = 
[<UPSTREAM_PEER>]
01-26 17:43:30.891784 a /../opensips[4010750]: 
DBG:permissions:get_source_group: Looking for <<UPSTREAM_PEER>, 5060> in 
address table
01-26 17:43:30.891799 a /../opensips[4010750]: 
DBG:permissions:get_source_group: Found <1>
>>   01-26 17:43:30.891814 a /../opensips[4010750]: ERROR:core:pv_set_value: 
>> bad parameters
>>   01-26 17:43:30.891832 a /../opensips[4010750]: 
>> ERROR:permissions:get_source_group: setting of pvar failed
01-26 17:43:30.891849 a /../opensips[4010750]: ERROR:LOG: The value of 
var(srcgrp) = [-1]
01-26 17:43:30.891861 a /../opensips[4010750]: DBG:permissions:check_src_addr: 
Looking for : <default:-1, <UPSTREAM_PEER>, 1, 5060, >
01-26 17:43:30.891879 a /../opensips[4010750]: DBG:permissions:pm_hash_match: 
specified group '4294967295' does not exist in hash table
01-26 17:43:30.891895 a /../opensips[4010750]: ERROR:LOG: The value of 
var(group) = [-2]
01-26 17:43:30.891907 a /../opensips[4010750]: DBG:core:comp_scriptvar: int 29: 
-2 / -1

01-26 17:43:30.893310 a /../opensips[4010750]: DBG:db_mysql:mysql_raise_event: 
MySQL status has not changed: connected
01-26 17:43:30.893349 a /../opensips[4010750]: DBG:core:db_new_result: allocate 
48 bytes for result set at 0x71cc020e4730
01-26 17:43:30.893367 a /../opensips[4010750]: 
DBG:db_mysql:db_mysql_get_columns: 2 columns returned from the query
01-26 17:43:30.893382 a /../opensips[4010750]: DBG:core:db_allocate_columns: 
allocate 56 bytes for result columns at 0x71cc020e4798


As I've been looking through the logs I've noticed that following the OK reply 
once a call is answered the v3.7 host does some accounting to the database & 
then sends OK messages related to the INVITE, after four packets the 
transaction is destroyed. Seven more OK messages are sent with tm logging that 
'no matching transaction exists' before it gives up.

Any help would be gratefully received.

Many thanks,
Al Cleminson.


_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to