Re: [OpenSIPS-Users] TLS->UDP Re-Invite Issue

2018-11-20 Thread Răzvan Crainea

Hello!

Can you send us a sip trace, or pcap with tthe call? It will help us 
understand what's going on.


Best regards,
Razvan

On 11/19/18 8:28 AM, Dhruv Shah wrote:

Hello,

I am using opensips-2.2, and using TLS for calling. From opensips using 
dispatcher call is forwarded on freeswitch which is on UDP, then 
freeswitch forwards it to external gateway. It works perfectly, but when 
freeswitch generates reinvite, it is send to some another port i.e port 
is different from which the ACK is received, due to this call gets 
hangup due to request timeout.



Please suggest solution to solve this issue.

--
*Thanks & Regards*
*Dhruv Shah*
*Jr. Software Developer*
Ecosmob Technologies Pvt. Ltd. 
*Ecosmob Technologies Pvt. Ltd. *
https://www.ecosmob.com

___
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users



--
Răzvan Crainea
OpenSIPS Core Developer
  http://www.opensips-solutions.com

___
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users


Re: [OpenSIPS-Users] rtpengine (setid_avp) issue with BYE and CANCEL

2018-11-20 Thread Răzvan Crainea

Hi, Mickael!

AVPs are only available during transaction - initial request and its 
replies, but it is not avaialble to sequential requests (such as CANCEL 
or BYE). If you want to store a value throughout the entire dialog, you 
should save the variable in a dialog variable[1], something like this:


# initial INVITE
$avp(setid) = 1;
create_dialog();
$dlg_val(setid) = $avp(setid);

# CANCEL or BYE, *after* loose_route() is called
# so that the dialog is matched/found
loose_route();
$avp(setid) = $dlg_val(setid);

Hope this helps.

[1] https://opensips.org/html/docs/modules/2.4.x/dialog#pv_dlg_val

Best regards,
Răzvan

On 11/19/18 6:01 PM, Mickael Hubert wrote:

Hi all,
I have a rtpengine with opensips, when I use rtpengine without setid_avp 
all works like a charm


modparam("rtpengine", "rtpengine_sock", "udp:10.13.0.129:12221 
")


_When I want use setid_avp:_

modparam("rtpengine", "setid_avp", "$avp(setid)")
modparam("rtpengine", "rtpengine_sock", "1 == udp:10.13.0.129:12221 
")


_I call manage function in initial INVITE:_

$avp(setid) =  1;
create_dialog();
xlog("L_INFO","setid: $avp(setid)\n");
if(rtpengine_manage("ICE=remove"))
{
   xlog("L_INFO","SDP Offer: $ci for INVITE\n");
}

for an reply $avp(setid) is populate, and rtpengine works.

_but for BYE and CANCEL I have an issue:_
_
_
you can see the setid variable isn't populate for this CANCEL, but it is 
populate for 487 reply !
I have this error log: ERROR:rtpengine:select_rtpe_node: script error 
-no valid set selected / ERROR:rtpengine:rtpe_function_call: no 
available proxies


When I force the setid to 1 for BYE and CANCEL, there isn't issue.

However, the module documentation explains :
/IMPORTANT: if you use multiple sets, take care and use the same set for 
both rtpengine_offer()/rtpengine_answer() and rtpengine_delete()!!

/
/If the set was selected using setid_avp, the avp needs to be set only 
once before rtpengine_offer() or rtpengine_manage() call. /


Can you help me please ?

thanks in advance

PS: same issue with BYE method
__

__

Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22531]: 

Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22531]: CANCEL END 
OF CALL : call-id 1def6e7f-66b6-1237-7b9d-0050569229dc
Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22531]: 


Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22531]: setid: 
Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22531]: 
*ERROR:rtpengine:select_rtpe_node: script error -no valid set selected*
Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22531]: 
*ERROR:rtpengine:rtpe_function_call: no available proxies*
Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22521]: 
1def6e7f-66b6-1237-7b9d-0050569229dc In ONREPLY ROUTE 2 - fu : 
sip:+**@am-isbc1- , ru :  , si : 10.13.0.80, status : 487

Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22521]: setid: 1

if (is_method("CANCEL"))
   {
 
xlog("L_INFO"," 
\n");

     xlog("L_INFO","CANCEL END OF CALL : call-id $ci \n");
 
xlog("L_INFO"," 
\n");

     xlog("L_INFO","setid: $avp(setid)\n");
     if(rtpengine_manage("ICE=remove"))
     {
   xlog("L_INFO","SDP Offer: $ci for CANCEL\n");
     }
.






___
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users



--
Răzvan Crainea
OpenSIPS Core Developer
  http://www.opensips-solutions.com

___
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users


Re: [OpenSIPS-Users] Opensips 2.1.2 - can't pass var in rewritehostport()

2018-11-20 Thread Răzvan Crainea
All you have to do is to assingn the $rd pseudo-variable, which does the 
same thing as rewritehostport() function.


On 11/14/18 12:39 PM, maatohewetbi wrote:

How can I use it, like that?
$rd=$hdr(X-IP-Header)
rewritehostport($rd:5060)




--
Sent from: 
http://opensips-open-sip-server.1449251.n2.nabble.com/OpenSIPS-Users-f1449235.html

___
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users



--
Răzvan Crainea
OpenSIPS Core Developer
  http://www.opensips-solutions.com

___
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users


Re: [OpenSIPS-Users] rtpengine (setid_avp) issue with BYE and CANCEL

2018-11-20 Thread Mickael Hubert
Hi Răzvan,
thanks a lot for your answer !

Ok I will try this workaround
But I don't understand the rtpengine module documentation (
http://www.opensips.org/html/docs/modules/2.4.x/rtpengine.html)

If I have -> modparam("rtpengine", "setid_avp", "$avp(setid)") and I set
setid_avp to 1 (for my example) just once, before rtpengine_manage, this
variable should survives until the end no ?


++



Le mar. 20 nov. 2018 à 09:43, Răzvan Crainea  a écrit :

> Hi, Mickael!
>
> AVPs are only available during transaction - initial request and its
> replies, but it is not avaialble to sequential requests (such as CANCEL
> or BYE). If you want to store a value throughout the entire dialog, you
> should save the variable in a dialog variable[1], something like this:
>
> # initial INVITE
> $avp(setid) = 1;
> create_dialog();
> $dlg_val(setid) = $avp(setid);
>
> # CANCEL or BYE, *after* loose_route() is called
> # so that the dialog is matched/found
> loose_route();
> $avp(setid) = $dlg_val(setid);
>
> Hope this helps.
>
> [1] https://opensips.org/html/docs/modules/2.4.x/dialog#pv_dlg_val
>
> Best regards,
> Răzvan
>
> On 11/19/18 6:01 PM, Mickael Hubert wrote:
> > Hi all,
> > I have a rtpengine with opensips, when I use rtpengine without setid_avp
> > all works like a charm
> >
> > modparam("rtpengine", "rtpengine_sock", "udp:10.13.0.129:12221
> > ")
> >
> > _When I want use setid_avp:_
> >
> > modparam("rtpengine", "setid_avp", "$avp(setid)")
> > modparam("rtpengine", "rtpengine_sock", "1 == udp:10.13.0.129:12221
> > ")
> >
> > _I call manage function in initial INVITE:_
> >
> > $avp(setid) =  1;
> > create_dialog();
> > xlog("L_INFO","setid: $avp(setid)\n");
> > if(rtpengine_manage("ICE=remove"))
> > {
> >xlog("L_INFO","SDP Offer: $ci for INVITE\n");
> > }
> >
> > for an reply $avp(setid) is populate, and rtpengine works.
> >
> > _but for BYE and CANCEL I have an issue:_
> > _
> > _
> > you can see the setid variable isn't populate for this CANCEL, but it is
> > populate for 487 reply !
> > I have this error log: ERROR:rtpengine:select_rtpe_node: script error
> > -no valid set selected / ERROR:rtpengine:rtpe_function_call: no
> > available proxies
> >
> > When I force the setid to 1 for BYE and CANCEL, there isn't issue.
> >
> > However, the module documentation explains :
> > /IMPORTANT: if you use multiple sets, take care and use the same set for
> > both rtpengine_offer()/rtpengine_answer() and rtpengine_delete()!!
> > /
> > /If the set was selected using setid_avp, the avp needs to be set only
> > once before rtpengine_offer() or rtpengine_manage() call. /
> >
> > Can you help me please ?
> >
> > thanks in advance
> >
> > PS: same issue with BYE method
> > __
> >
> > __
> >
> > Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22531]:
> >
> 
> > Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22531]: CANCEL END
> > OF CALL : call-id 1def6e7f-66b6-1237-7b9d-0050569229dc
> > Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22531]:
> >
> 
> > Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22531]: setid:
> 
> > Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22531]:
> > *ERROR:rtpengine:select_rtpe_node: script error -no valid set selected*
> > Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22531]:
> > *ERROR:rtpengine:rtpe_function_call: no available proxies*
> > Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22521]:
> > 1def6e7f-66b6-1237-7b9d-0050569229dc In ONREPLY ROUTE 2 - fu :
> > sip:+**@am-isbc1- , ru :  , si : 10.13.0.80, status :
> 487
> > Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22521]: setid: 1
> >
> > if (is_method("CANCEL"))
> >{
> >
> >
> xlog("L_INFO","
>
> > \n");
> >  xlog("L_INFO","CANCEL END OF CALL : call-id $ci \n");
> >
> >
> xlog("L_INFO","
>
> > \n");
> >  xlog("L_INFO","setid: $avp(setid)\n");
> >  if(rtpengine_manage("ICE=remove"))
> >  {
> >xlog("L_INFO","SDP Offer: $ci for CANCEL\n");
> >  }
> > .
> >
> >
> >
> >
> >
> >
> > ___
> > Users mailing list
> > Users@lists.opensips.org
> > http://lists.opensips.org/cgi-bin/mailman/listinfo/users
> >
>
> --
> Răzvan Crainea
> OpenSIPS Core Developer
>http://www.opensips-solutions.com
>
> ___
> Users mailing list
> Users@lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
___
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users


[OpenSIPS-Users] Nathelper keepalive issue with received column in usrloc

2018-11-20 Thread Julian Santer

Hi guys,

we need to switch from nat_traversal to nathelper.
The reason is the keepalive mechanism.

The nat_traversal module sends OPTIONS with the following to header: 
sip:UAC_IP:UAC_PORT
Most of the UAC's answers with a 404 Not found.
On AVM Fritzbox with firmware >= 6.04, this OPTIONS may activate a security 
feature.
So after a certain time, the Fritzbox blocks all packages send from our proxy.
As we have ca. 80% AVM Fritzbox as UAC, we got a big problem.
So we deactivated the nat_keepalive vor this UAC's and we have to enable the 
keepalive Feature on the Fritzbox.

The better solution would be, if we could send OPTIONS with a to header like: 
sip:username@UAC_IP:UAC_PORT.
As I understood the nathelper module could send OPTIONS like this. Because it 
is looking into the userloc table. Right?

The nathelper module is on our edge server, the registrar on our core server.
For the "normal" UAC's (no received entry in usrloc) the keepalive's are now 
sent as expected.
But for the "nated" UAC's (received entry in usrloc) the keepalive's are like 
before: sip:UAC_IP:UAC_PORT (values in the received column from usrloc).
The REGISTER send to the core got the path header looking like:
Path: 

Is there a possibility to add the $fU on the received part of the path header (the user in the path module adds a string to the path part, but not to 
the received part)?

Or is there a possiblity on the registrar to store the $fU in the received 
column?
On the nathelper keepalive mechanism I don't see any possibility to add the $fU.

We are using the version 2.2.6 from the official debian source list.

The config on the edge server's looks like:
 nat helper module
loadmodule "nathelper.so"
modparam("nathelper", "natping_interval", 0)
modparam("nathelper", "ping_nated_only", 0)
modparam("nathelper", "natping_partitions", 1)
modparam("nathelper", "natping_tcp", 0)

### REGISTER

$var(nat) = null;

if (nat_uac_test("127"))
{
    $var(nat) = TRUE;
}
else
{
    $var(nat) = FALSE;
}

consume_credentials();

if ($var(nat) == TRUE)
{
    if (! add_path_received())
    {
    xlog("L_ERR", "Adding PATH (with received) failed - LF_BASE");
    send_reply("500", "Internal path error, registration not stored");
    exit;
    }
}
else
{
    if (! add_path())
    {
    send_reply("500", "Internal path error, registration not stored");
    xlog("L_ERR", "Adding PATH (with received) failed - LF_BASE");
    exit;
    }
}

route("R_RELAY_TO_REGISTRAR");
exit;

### OPTIONS

if (method=="OPTIONS")
{
    if ($si == "CORE")
    {
    topology_hiding("U");
    if (! t_relay("0x05"))
    {
    send_reply("500", "Internal server error - failed to relay");
    xlog("L_ERR", "Unable to relay OPTIONS - LF_BASE");
    }
    }
}


The config on the core server looks like:
loadmodule "usrloc.so"
modparam("usrloc", "user_column",   "username")
modparam("usrloc", "domain_column", "domain")
modparam("usrloc", "contact_column",    "contact")
modparam("usrloc", "expires_column",    "expires")
modparam("usrloc", "q_column",  "q")
modparam("usrloc", "callid_column", "callid")
modparam("usrloc", "cseq_column",   "cseq")
modparam("usrloc", "methods_column",    "methods")
modparam("usrloc", "flags_column",  "flags")
modparam("usrloc", "user_agent_column", "user_agent")
modparam("usrloc", "received_column",   "received")
modparam("usrloc", "path_column",   "path")
modparam("usrloc", "socket_column", "socket")
modparam("usrloc", "use_domain",    0)
modparam("usrloc", "desc_time_order",   0)
modparam("usrloc", "timer_interval",    60)
modparam("usrloc", "db_url",    "DBURL")
modparam("usrloc", "db_mode",   2)
modparam("usrloc", "matching_mode", 0)
modparam("usrloc", "cseq_delay",    20)
modparam("usrloc", "nat_bflag", 6)

 nat helper module
loadmodule "nathelper.so"
modparam("nathelper", "natping_interval", 56)
modparam("nathelper", "ping_nated_only", 0)
modparam("nathelper", "natping_partitions", 1)
modparam("nathelper", "sipping_bflag", 8)
modparam("nathelper", "sipping_from", "sip:keepalive@DEFAULT_REALM")
modparam("nathelper", "sipping_method", "OPTIONS")

# We want to send a keepalive on each registered UAC
if (proto == UDP)
{
    setbflag(8);
    xlog("L_INFO", "Nat keepalive sip_ping_flag - LF_BASE");
}

if (! save("location", "vp1"))
{
    xlog("L_ERR", "Saving contact from EDGE failed - LF_BASE");
    exit;
}

Thank you for any hint.

Kind regards,
Julian Santer
Raiffeisen OnLine

ps: @Bogdan: this is why we have ca. 550 entry's in the address table 
(permission module). If we solve the keepalives, only ca. 50 entry's are 
remaining.

___
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users


Re: [OpenSIPS-Users] Opensips 2.1.2 - can't pass var in rewritehostport()

2018-11-20 Thread Liviu Chircu
Minor nit: $rd is not exactly the equivalent of rewritehostport(), 
rather $rd used together with $rp [1].


[1]: https://www.opensips.org/Documentation/Script-CoreVar-3-0#toc70

Liviu Chircu
OpenSIPS Developer
http://www.opensips-solutions.com

On 20.11.2018 10:44, Răzvan Crainea wrote:
All you have to do is to assingn the $rd pseudo-variable, which does 
the same thing as rewritehostport() function.


On 11/14/18 12:39 PM, maatohewetbi wrote:

How can I use it, like that?
$rd=$hdr(X-IP-Header)
rewritehostport($rd:5060)




--
Sent from: 
http://opensips-open-sip-server.1449251.n2.nabble.com/OpenSIPS-Users-f1449235.html


___
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users





___
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users


Re: [OpenSIPS-Users] rtpengine (setid_avp) issue with BYE and CANCEL

2018-11-20 Thread Răzvan Crainea

No, it only survives until the end of transaction :).
I agree it would be nice to have it persistent throughout the dialog, 
but that's not in there yet. But you can always open a feature request 
for this :):


https://github.com/OpenSIPS/opensips/issues

Best regards,
Răzvan

On 11/20/18 12:15 PM, Mickael Hubert wrote:

Hi Răzvan,
thanks a lot for your answer !

Ok I will try this workaround
But I don't understand the rtpengine module documentation 
(http://www.opensips.org/html/docs/modules/2.4.x/rtpengine.html)


If I have -> modparam("rtpengine", "setid_avp", "$avp(setid)") and I set 
setid_avp to 1 (for my example) just once, before rtpengine_manage, this 
variable should survives until the end no ?



++



Le mar. 20 nov. 2018 à 09:43, Răzvan Crainea > a écrit :


Hi, Mickael!

AVPs are only available during transaction - initial request and its
replies, but it is not avaialble to sequential requests (such as CANCEL
or BYE). If you want to store a value throughout the entire dialog, you
should save the variable in a dialog variable[1], something like this:

# initial INVITE
$avp(setid) = 1;
create_dialog();
$dlg_val(setid) = $avp(setid);

# CANCEL or BYE, *after* loose_route() is called
# so that the dialog is matched/found
loose_route();
$avp(setid) = $dlg_val(setid);

Hope this helps.

[1] https://opensips.org/html/docs/modules/2.4.x/dialog#pv_dlg_val

Best regards,
Răzvan

On 11/19/18 6:01 PM, Mickael Hubert wrote:
 > Hi all,
 > I have a rtpengine with opensips, when I use rtpengine without
setid_avp
 > all works like a charm
 >
 > modparam("rtpengine", "rtpengine_sock", "udp:10.13.0.129:12221

 > ")
 >
 > _When I want use setid_avp:_
 >
 > modparam("rtpengine", "setid_avp", "$avp(setid)")
 > modparam("rtpengine", "rtpengine_sock", "1 ==
udp:10.13.0.129:12221 
 > ")
 >
 > _I call manage function in initial INVITE:_
 >
 > $avp(setid) =  1;
 > create_dialog();
 > xlog("L_INFO","setid: $avp(setid)\n");
 > if(rtpengine_manage("ICE=remove"))
 > {
 >    xlog("L_INFO","SDP Offer: $ci for INVITE\n");
 > }
 >
 > for an reply $avp(setid) is populate, and rtpengine works.
 >
 > _but for BYE and CANCEL I have an issue:_
 > _
 > _
 > you can see the setid variable isn't populate for this CANCEL,
but it is
 > populate for 487 reply !
 > I have this error log: ERROR:rtpengine:select_rtpe_node: script
error
 > -no valid set selected / ERROR:rtpengine:rtpe_function_call: no
 > available proxies
 >
 > When I force the setid to 1 for BYE and CANCEL, there isn't issue.
 >
 > However, the module documentation explains :
 > /IMPORTANT: if you use multiple sets, take care and use the same
set for
 > both rtpengine_offer()/rtpengine_answer() and rtpengine_delete()!!
 > /
 > /If the set was selected using setid_avp, the avp needs to be set
only
 > once before rtpengine_offer() or rtpengine_manage() call. /
 >
 > Can you help me please ?
 >
 > thanks in advance
 >
 > PS: same issue with BYE method
 > __
 >
 > __
 >
 > Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22531]:
 >


 > Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22531]:
CANCEL END
 > OF CALL : call-id 1def6e7f-66b6-1237-7b9d-0050569229dc
 > Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22531]:
 >


 > Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22531]:
setid: 
 > Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22531]:
 > *ERROR:rtpengine:select_rtpe_node: script error -no valid set
selected*
 > Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22531]:
 > *ERROR:rtpengine:rtpe_function_call: no available proxies*
 > Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22521]:
 > 1def6e7f-66b6-1237-7b9d-0050569229dc In ONREPLY ROUTE 2 - fu :
 > sip:+**@am-isbc1- , ru :  , si : 10.13.0.80,
status : 487
 > Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22521]:
setid: 1
 >
 > if (is_method("CANCEL"))
 >    {
 >
 >

xlog("L_INFO","

 > \n");
 >      xlog("L_INFO","CANCEL END OF CALL : call-id $ci \n");
 >
 >

xlog("L_INFO","

 > \n");
 >      xlog("L_INFO","setid: $avp(setid)\n");
 >      if(rtpengine_manage("ICE=r

Re: [OpenSIPS-Users] rtpengine (setid_avp) issue with BYE and CANCEL

2018-11-20 Thread Mickael Hubert
OK thanks, I will write something about that ;)

I tested your solution, it works for BYE but not force CANCEL.
Indeed, for BYE from my SBC enters in loose_route statement, but not for a
CANCEL.

is there a simplest way to choose the good rtpengine ? I want use a group
of rtpengine (like id:1) for Europe and other group (like id:2) for USA.

++

Le mar. 20 nov. 2018 à 13:45, Răzvan Crainea  a écrit :

> No, it only survives until the end of transaction :).
> I agree it would be nice to have it persistent throughout the dialog,
> but that's not in there yet. But you can always open a feature request
> for this :):
>
> https://github.com/OpenSIPS/opensips/issues
>
> Best regards,
> Răzvan
>
> On 11/20/18 12:15 PM, Mickael Hubert wrote:
> > Hi Răzvan,
> > thanks a lot for your answer !
> >
> > Ok I will try this workaround
> > But I don't understand the rtpengine module documentation
> > (http://www.opensips.org/html/docs/modules/2.4.x/rtpengine.html)
> >
> > If I have -> modparam("rtpengine", "setid_avp", "$avp(setid)") and I set
> > setid_avp to 1 (for my example) just once, before rtpengine_manage, this
> > variable should survives until the end no ?
> >
> >
> > ++
> >
> >
> >
> > Le mar. 20 nov. 2018 à 09:43, Răzvan Crainea  > > a écrit :
> >
> > Hi, Mickael!
> >
> > AVPs are only available during transaction - initial request and its
> > replies, but it is not avaialble to sequential requests (such as
> CANCEL
> > or BYE). If you want to store a value throughout the entire dialog,
> you
> > should save the variable in a dialog variable[1], something like
> this:
> >
> > # initial INVITE
> > $avp(setid) = 1;
> > create_dialog();
> > $dlg_val(setid) = $avp(setid);
> >
> > # CANCEL or BYE, *after* loose_route() is called
> > # so that the dialog is matched/found
> > loose_route();
> > $avp(setid) = $dlg_val(setid);
> >
> > Hope this helps.
> >
> > [1] https://opensips.org/html/docs/modules/2.4.x/dialog#pv_dlg_val
> >
> > Best regards,
> > Răzvan
> >
> > On 11/19/18 6:01 PM, Mickael Hubert wrote:
> >  > Hi all,
> >  > I have a rtpengine with opensips, when I use rtpengine without
> > setid_avp
> >  > all works like a charm
> >  >
> >  > modparam("rtpengine", "rtpengine_sock", "udp:10.13.0.129:12221
> > 
> >  > ")
> >  >
> >  > _When I want use setid_avp:_
> >  >
> >  > modparam("rtpengine", "setid_avp", "$avp(setid)")
> >  > modparam("rtpengine", "rtpengine_sock", "1 ==
> > udp:10.13.0.129:12221 
> >  > ")
> >  >
> >  > _I call manage function in initial INVITE:_
> >  >
> >  > $avp(setid) =  1;
> >  > create_dialog();
> >  > xlog("L_INFO","setid: $avp(setid)\n");
> >  > if(rtpengine_manage("ICE=remove"))
> >  > {
> >  >xlog("L_INFO","SDP Offer: $ci for INVITE\n");
> >  > }
> >  >
> >  > for an reply $avp(setid) is populate, and rtpengine works.
> >  >
> >  > _but for BYE and CANCEL I have an issue:_
> >  > _
> >  > _
> >  > you can see the setid variable isn't populate for this CANCEL,
> > but it is
> >  > populate for 487 reply !
> >  > I have this error log: ERROR:rtpengine:select_rtpe_node: script
> > error
> >  > -no valid set selected / ERROR:rtpengine:rtpe_function_call: no
> >  > available proxies
> >  >
> >  > When I force the setid to 1 for BYE and CANCEL, there isn't issue.
> >  >
> >  > However, the module documentation explains :
> >  > /IMPORTANT: if you use multiple sets, take care and use the same
> > set for
> >  > both rtpengine_offer()/rtpengine_answer() and rtpengine_delete()!!
> >  > /
> >  > /If the set was selected using setid_avp, the avp needs to be set
> > only
> >  > once before rtpengine_offer() or rtpengine_manage() call. /
> >  >
> >  > Can you help me please ?
> >  >
> >  > thanks in advance
> >  >
> >  > PS: same issue with BYE method
> >  > __
> >  >
> >  > __
> >  >
> >  > Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22531]:
> >  >
> >
>  
> 
> >  > Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22531]:
> > CANCEL END
> >  > OF CALL : call-id 1def6e7f-66b6-1237-7b9d-0050569229dc
> >  > Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22531]:
> >  >
> >
>  
> 
> >  > Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22531]:
> > setid: 
> >  > Nov 19 16:53:41 am-scr1-test /usr/local/sbin/opensips[22531]:
> >  > *ERROR:rtpengine:select_rtpe_node: script error -no valid set
> > selected*
> >  > Nov 19 16:53:41 a

Re: [OpenSIPS-Users] rtpengine (setid_avp) issue with BYE and CANCEL

2018-11-20 Thread Mickael Hubert
I have to use local cache to workaround.

*In INVITE statement:*
$avp(setid) =  1; # group of rtp engine servers / Ex: 1 for FR / 2 for USA
if(cache_store("local","$ci","$avp(setid)",1200)) { xlog("L_INFO","$ci --
Cache Store Name: $ci with port: $avp(setid)\n");

*in CANCEL statement:*
if(cache_fetch("local","$ci",$avp(setid)))
{
  xlog("L_INFO","$ci -- Cache fetch Name: $ci with port:
$avp(setid)\n");
  cache_remove("local","$ci");
}
$avp(setid) = $(avp(setid){s.int});

And it's not clean but works like a charm.

@Răzvan if you have an idea about the CANCEL issue with $dlg_val is not
populate, I'm interesting ;)

thanks

Le mar. 20 nov. 2018 à 13:58, Mickael Hubert  a écrit :

> OK thanks, I will write something about that ;)
>
> I tested your solution, it works for BYE but not force CANCEL.
> Indeed, for BYE from my SBC enters in loose_route statement, but not for a
> CANCEL.
>
> is there a simplest way to choose the good rtpengine ? I want use a group
> of rtpengine (like id:1) for Europe and other group (like id:2) for USA.
>
> ++
>
> Le mar. 20 nov. 2018 à 13:45, Răzvan Crainea  a
> écrit :
>
>> No, it only survives until the end of transaction :).
>> I agree it would be nice to have it persistent throughout the dialog,
>> but that's not in there yet. But you can always open a feature request
>> for this :):
>>
>> https://github.com/OpenSIPS/opensips/issues
>>
>> Best regards,
>> Răzvan
>>
>> On 11/20/18 12:15 PM, Mickael Hubert wrote:
>> > Hi Răzvan,
>> > thanks a lot for your answer !
>> >
>> > Ok I will try this workaround
>> > But I don't understand the rtpengine module documentation
>> > (http://www.opensips.org/html/docs/modules/2.4.x/rtpengine.html)
>> >
>> > If I have -> modparam("rtpengine", "setid_avp", "$avp(setid)") and I
>> set
>> > setid_avp to 1 (for my example) just once, before rtpengine_manage,
>> this
>> > variable should survives until the end no ?
>> >
>> >
>> > ++
>> >
>> >
>> >
>> > Le mar. 20 nov. 2018 à 09:43, Răzvan Crainea > > > a écrit :
>> >
>> > Hi, Mickael!
>> >
>> > AVPs are only available during transaction - initial request and its
>> > replies, but it is not avaialble to sequential requests (such as
>> CANCEL
>> > or BYE). If you want to store a value throughout the entire dialog,
>> you
>> > should save the variable in a dialog variable[1], something like
>> this:
>> >
>> > # initial INVITE
>> > $avp(setid) = 1;
>> > create_dialog();
>> > $dlg_val(setid) = $avp(setid);
>> >
>> > # CANCEL or BYE, *after* loose_route() is called
>> > # so that the dialog is matched/found
>> > loose_route();
>> > $avp(setid) = $dlg_val(setid);
>> >
>> > Hope this helps.
>> >
>> > [1] https://opensips.org/html/docs/modules/2.4.x/dialog#pv_dlg_val
>> >
>> > Best regards,
>> > Răzvan
>> >
>> > On 11/19/18 6:01 PM, Mickael Hubert wrote:
>> >  > Hi all,
>> >  > I have a rtpengine with opensips, when I use rtpengine without
>> > setid_avp
>> >  > all works like a charm
>> >  >
>> >  > modparam("rtpengine", "rtpengine_sock", "udp:10.13.0.129:12221
>> > 
>> >  > ")
>> >  >
>> >  > _When I want use setid_avp:_
>> >  >
>> >  > modparam("rtpengine", "setid_avp", "$avp(setid)")
>> >  > modparam("rtpengine", "rtpengine_sock", "1 ==
>> > udp:10.13.0.129:12221 
>> >  > ")
>> >  >
>> >  > _I call manage function in initial INVITE:_
>> >  >
>> >  > $avp(setid) =  1;
>> >  > create_dialog();
>> >  > xlog("L_INFO","setid: $avp(setid)\n");
>> >  > if(rtpengine_manage("ICE=remove"))
>> >  > {
>> >  >xlog("L_INFO","SDP Offer: $ci for INVITE\n");
>> >  > }
>> >  >
>> >  > for an reply $avp(setid) is populate, and rtpengine works.
>> >  >
>> >  > _but for BYE and CANCEL I have an issue:_
>> >  > _
>> >  > _
>> >  > you can see the setid variable isn't populate for this CANCEL,
>> > but it is
>> >  > populate for 487 reply !
>> >  > I have this error log: ERROR:rtpengine:select_rtpe_node: script
>> > error
>> >  > -no valid set selected / ERROR:rtpengine:rtpe_function_call: no
>> >  > available proxies
>> >  >
>> >  > When I force the setid to 1 for BYE and CANCEL, there isn't
>> issue.
>> >  >
>> >  > However, the module documentation explains :
>> >  > /IMPORTANT: if you use multiple sets, take care and use the same
>> > set for
>> >  > both rtpengine_offer()/rtpengine_answer() and
>> rtpengine_delete()!!
>> >  > /
>> >  > /If the set was selected using setid_avp, the avp needs to be set
>> > only
>> >  > once before rtpengine_offer() or rtpengine_manage() call. /
>> >  >
>> >  > Can you help me please ?
>> >  >
>> >  > thanks in advance
>> >  >
>> >  > PS: same issue with BYE me

Re: [OpenSIPS-Users] Nathelper keepalive issue with received column in usrloc

2018-11-20 Thread Julian Santer

Hi guys,

as I see in the tcpdump:

- with the received header the R-RURI in the INVITE looks like:

Request-Line: INVITE sip:dev-lab1@192.168.44.101:40885;line=fjafxbr9 SIP/2.0


- without the received header the R-URI in the INVITE looks like:

Request-Line: INVITE sip:dev-lab1@212.46.162.97:40885;line=7wsv12yg SIP/2.0


Could the INVITE been rejeced/dropped by the UAC, if the R-RURI contains the 
public instead the private IP or another port etc.?

From UAC perspective, the R-RURI (puclic IP) by incoming packets doesn't match 
the R-RURI (private IP) by outgoing packets.


Kind regards,

Julian Santer

Am 20.11.18 um 15:51 schrieb Julian Santer:

Hi guys,

if I don't use the received column on the edge server, but I call 
fix_nated_contact instead, it seems to work.

if (nat_uac_test("127"))
{
    fix_nated_contact();
}

consume_credentials();

if (! add_path())
{
    send_reply("500", "Internal path error, registration not stored");
    xlog("L_ERR", "Adding PATH (with received) failed - LF_BASE");
    exit;
}

Is this the right way or could I break something else with this change?


Kind regards,

Julian Santer

Am 19.11.18 um 18:41 schrieb Julian Santer:

Hi guys,

we need to switch from nat_traversal to nathelper.
The reason is the keepalive mechanism.

The nat_traversal module sends OPTIONS with the following to header: 
sip:UAC_IP:UAC_PORT
Most of the UAC's answers with a 404 Not found.
On AVM Fritzbox with firmware >= 6.04, this OPTIONS may activate a security 
feature.
So after a certain time, the Fritzbox blocks all packages send from our proxy.
As we have ca. 80% AVM Fritzbox as UAC, we got a big problem.
So we deactivated the nat_keepalive vor this UAC's and we have to enable the 
keepalive Feature on the Fritzbox.

The better solution would be, if we could send OPTIONS with a to header like: 
sip:username@UAC_IP:UAC_PORT.
As I understood the nathelper module could send OPTIONS like this. Because it 
is looking into the userloc table. Right?

The nathelper module is on our edge server, the registrar on our core server.
For the "normal" UAC's (no received entry in usrloc) the keepalive's are now 
sent as expected.
But for the "nated" UAC's (received entry in usrloc) the keepalive's are like 
before: sip:UAC_IP:UAC_PORT (values in the received column from usrloc).
The REGISTER send to the core got the path header looking like:
Path: 

Is there a possibility to add the $fU on the received part of the path header (the user in the path module adds a string to the path part, but not 
to the received part)?

Or is there a possiblity on the registrar to store the $fU in the received 
column?
On the nathelper keepalive mechanism I don't see any possibility to add the $fU.

We are using the version 2.2.6 from the official debian source list.

The config on the edge server's looks like:
 nat helper module
loadmodule "nathelper.so"
modparam("nathelper", "natping_interval", 0)
modparam("nathelper", "ping_nated_only", 0)
modparam("nathelper", "natping_partitions", 1)
modparam("nathelper", "natping_tcp", 0)

### REGISTER

$var(nat) = null;

if (nat_uac_test("127"))
{
    $var(nat) = TRUE;
}
else
{
    $var(nat) = FALSE;
}

consume_credentials();

if ($var(nat) == TRUE)
{
    if (! add_path_received())
    {
    xlog("L_ERR", "Adding PATH (with received) failed - LF_BASE");
    send_reply("500", "Internal path error, registration not stored");
    exit;
    }
}
else
{
    if (! add_path())
    {
    send_reply("500", "Internal path error, registration not stored");
    xlog("L_ERR", "Adding PATH (with received) failed - LF_BASE");
    exit;
    }
}

route("R_RELAY_TO_REGISTRAR");
exit;

### OPTIONS

if (method=="OPTIONS")
{
    if ($si == "CORE")
    {
    topology_hiding("U");
    if (! t_relay("0x05"))
    {
    send_reply("500", "Internal server error - failed to relay");
    xlog("L_ERR", "Unable to relay OPTIONS - LF_BASE");
    }
    }
}


The config on the core server looks like:
loadmodule "usrloc.so"
modparam("usrloc", "user_column",   "username")
modparam("usrloc", "domain_column", "domain")
modparam("usrloc", "contact_column",    "contact")
modparam("usrloc", "expires_column",    "expires")
modparam("usrloc", "q_column",  "q")
modparam("usrloc", "callid_column", "callid")
modparam("usrloc", "cseq_column",   "cseq")
modparam("usrloc", "methods_column",    "methods")
modparam("usrloc", "flags_column",  "flags")
modparam("usrloc", "user_agent_column", "user_agent")
modparam("usrloc", "received_column",   "received")
modparam("usrloc", "path_column",   "path")
modparam("usrloc", "socket_column", "socket")
modparam("usrloc", "use_domain",    0)
modparam("usrloc", "desc_time_order",   0)
modparam("usrloc", "timer_interval",    60)
modparam("usrloc", "db_url",    "DBURL")
modparam("usrloc", "db_mode",   2)
modparam("us

Re: [OpenSIPS-Users] Nathelper keepalive issue with received column in usrloc

2018-11-20 Thread Julian Santer

Hi guys,

if I don't use the received column on the edge server, but I call 
fix_nated_contact instead, it seems to work.

if (nat_uac_test("127"))
{
    fix_nated_contact();
}

consume_credentials();

if (! add_path())
{
    send_reply("500", "Internal path error, registration not stored");
    xlog("L_ERR", "Adding PATH (with received) failed - LF_BASE");
    exit;
}

Is this the right way or could I break something else with this change?


Kind regards,

Julian Santer

Am 19.11.18 um 18:41 schrieb Julian Santer:

Hi guys,

we need to switch from nat_traversal to nathelper.
The reason is the keepalive mechanism.

The nat_traversal module sends OPTIONS with the following to header: 
sip:UAC_IP:UAC_PORT
Most of the UAC's answers with a 404 Not found.
On AVM Fritzbox with firmware >= 6.04, this OPTIONS may activate a security 
feature.
So after a certain time, the Fritzbox blocks all packages send from our proxy.
As we have ca. 80% AVM Fritzbox as UAC, we got a big problem.
So we deactivated the nat_keepalive vor this UAC's and we have to enable the 
keepalive Feature on the Fritzbox.

The better solution would be, if we could send OPTIONS with a to header like: 
sip:username@UAC_IP:UAC_PORT.
As I understood the nathelper module could send OPTIONS like this. Because it 
is looking into the userloc table. Right?

The nathelper module is on our edge server, the registrar on our core server.
For the "normal" UAC's (no received entry in usrloc) the keepalive's are now 
sent as expected.
But for the "nated" UAC's (received entry in usrloc) the keepalive's are like 
before: sip:UAC_IP:UAC_PORT (values in the received column from usrloc).
The REGISTER send to the core got the path header looking like:
Path: 

Is there a possibility to add the $fU on the received part of the path header (the user in the path module adds a string to the path part, but not 
to the received part)?

Or is there a possiblity on the registrar to store the $fU in the received 
column?
On the nathelper keepalive mechanism I don't see any possibility to add the $fU.

We are using the version 2.2.6 from the official debian source list.

The config on the edge server's looks like:
 nat helper module
loadmodule "nathelper.so"
modparam("nathelper", "natping_interval", 0)
modparam("nathelper", "ping_nated_only", 0)
modparam("nathelper", "natping_partitions", 1)
modparam("nathelper", "natping_tcp", 0)

### REGISTER

$var(nat) = null;

if (nat_uac_test("127"))
{
    $var(nat) = TRUE;
}
else
{
    $var(nat) = FALSE;
}

consume_credentials();

if ($var(nat) == TRUE)
{
    if (! add_path_received())
    {
    xlog("L_ERR", "Adding PATH (with received) failed - LF_BASE");
    send_reply("500", "Internal path error, registration not stored");
    exit;
    }
}
else
{
    if (! add_path())
    {
    send_reply("500", "Internal path error, registration not stored");
    xlog("L_ERR", "Adding PATH (with received) failed - LF_BASE");
    exit;
    }
}

route("R_RELAY_TO_REGISTRAR");
exit;

### OPTIONS

if (method=="OPTIONS")
{
    if ($si == "CORE")
    {
    topology_hiding("U");
    if (! t_relay("0x05"))
    {
    send_reply("500", "Internal server error - failed to relay");
    xlog("L_ERR", "Unable to relay OPTIONS - LF_BASE");
    }
    }
}


The config on the core server looks like:
loadmodule "usrloc.so"
modparam("usrloc", "user_column",   "username")
modparam("usrloc", "domain_column", "domain")
modparam("usrloc", "contact_column",    "contact")
modparam("usrloc", "expires_column",    "expires")
modparam("usrloc", "q_column",  "q")
modparam("usrloc", "callid_column", "callid")
modparam("usrloc", "cseq_column",   "cseq")
modparam("usrloc", "methods_column",    "methods")
modparam("usrloc", "flags_column",  "flags")
modparam("usrloc", "user_agent_column", "user_agent")
modparam("usrloc", "received_column",   "received")
modparam("usrloc", "path_column",   "path")
modparam("usrloc", "socket_column", "socket")
modparam("usrloc", "use_domain",    0)
modparam("usrloc", "desc_time_order",   0)
modparam("usrloc", "timer_interval",    60)
modparam("usrloc", "db_url",    "DBURL")
modparam("usrloc", "db_mode",   2)
modparam("usrloc", "matching_mode", 0)
modparam("usrloc", "cseq_delay",    20)
modparam("usrloc", "nat_bflag", 6)

 nat helper module
loadmodule "nathelper.so"
modparam("nathelper", "natping_interval", 56)
modparam("nathelper", "ping_nated_only", 0)
modparam("nathelper", "natping_partitions", 1)
modparam("nathelper", "sipping_bflag", 8)
modparam("nathelper", "sipping_from", "sip:keepalive@DEFAULT_REALM")
modparam("nathelper", "sipping_method", "OPTIONS")

# We want to send a keepalive on each registered UAC
if (proto == UDP)
{
    setbflag(8);
    xlog("L_INFO", "Nat keepalive sip_ping_flag - LF_BASE");
}

if (! save("location", "

[OpenSIPS-Users] Crash with nathelper

2018-11-20 Thread John Kiniston
I've just started playing with TLS and turned on nathelper and I'm seeing
crashes.

What information do I need to collect for a bug report and to hopefully
diagnose this issue?

Nov 20 16:32:35 sip2 /usr/sbin/opensips[867]: ERROR:nathelper:nh_timer: sip
msg_send failed
Nov 20 16:32:35 sip2 /usr/sbin/opensips[860]: CRITICAL:core:sig_usr:
segfault in process pid: 860, id: 15
Nov 20 16:32:35 sip2 kernel: opensips[860]: segfault at 7fea ip
7fead73a0324 sp 7ffd39239110 error 4 in
nathelper.so[7fead739b000+12000]
Nov 20 16:32:35 sip2 abrt-hook-ccpp: Can't open 'core.860' at '/':
Permission denied
Nov 20 16:32:35 sip2 abrt-hook-ccpp: Process 860 (opensips) of user 996
killed by SIGSEGV - dumping core
Nov 20 16:32:35 sip2 /usr/sbin/opensips[868]:
CRITICAL:core:handle_tcp_worker: dead tcp worker 1 (EOF received), pid 860
Nov 20 16:32:35 sip2 /usr/sbin/opensips[868]: CRITICAL:core:handle_worker:
dead child 15 (EOF received), pid 860
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:handle_sigs: child
process 860 exited by a signal 11
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:handle_sigs: core
was generated
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:handle_sigs:
terminating due to SIGCHLD
Nov 20 16:32:35 sip2 /usr/sbin/opensips[846]: INFO:core:sig_usr: signal 15
received
Nov 20 16:32:35 sip2 /usr/sbin/opensips[847]: INFO:core:sig_usr: signal 15
received
Nov 20 16:32:35 sip2 /usr/sbin/opensips[848]: INFO:core:sig_usr: signal 15
received
Nov 20 16:32:35 sip2 /usr/sbin/opensips[849]: INFO:core:sig_usr: signal 15
received
Nov 20 16:32:35 sip2 /usr/sbin/opensips[850]: INFO:core:sig_usr: signal 15
received
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:shutdown_opensips:
process 1(846) [HTTPD 192.168.84.176:] terminated, still waiting for 21
more
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:shutdown_opensips:
process 2(847) [event-route handler] terminated, still waiting for 20 more
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:shutdown_opensips:
process 3(848) [MI FIFO] terminated, still waiting for 19 more
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:shutdown_opensips:
process 4(849) [time_keeper] terminated, still waiting for 18 more
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:shutdown_opensips:
process 5(850) [timer] terminated, still waiting for 17 more
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:shutdown_opensips:
process 6(851) [SIP receiver udp:67.212.192.99:5060 ] terminated, still
waiting for 16 more
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:shutdown_opensips:
process 7(852) [SIP receiver udp:67.212.192.99:5060 ] terminated, still
waiting for 15 more
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:shutdown_opensips:
process 8(853) [SIP receiver udp:67.212.192.99:5060 ] terminated, still
waiting for 14 more
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:shutdown_opensips:
process 9(854) [SIP receiver udp:67.212.192.99:5060 ] terminated, still
waiting for 13 more
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:shutdown_opensips:
process 10(855) [SIP receiver udp:67.212.192.99:3478 ] terminated, still
waiting for 12 more
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:shutdown_opensips:
process 11(856) [SIP receiver udp:67.212.192.99:3478 ] terminated, still
waiting for 11 more
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:shutdown_opensips:
process 12(857) [SIP receiver udp:67.212.192.99:3478 ] terminated, still
waiting for 10 more
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:shutdown_opensips:
process 13(858) [SIP receiver udp:67.212.192.99:3478 ] terminated, still
waiting for 9 more
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:shutdown_opensips:
process 14(859) [TCP receiver] terminated, still waiting for 8 more
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:shutdown_opensips:
process 16(861) [TCP receiver] terminated, still waiting for 7 more
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:shutdown_opensips:
process 17(862) [TCP receiver] terminated, still waiting for 6 more
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:shutdown_opensips:
process 18(863) [TCP receiver] terminated, still waiting for 5 more
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:shutdown_opensips:
process 19(864) [TCP receiver] terminated, still waiting for 4 more
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:shutdown_opensips:
process 20(865) [TCP receiver] terminated, still waiting for 3 more
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:shutdown_opensips:
process 21(866) [TCP receiver] terminated, still waiting for 2 more
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:shutdown_opensips:
process 22(867) [Timer handler] terminated, still waiting for 1 more
Nov 20 16:32:35 sip2 /usr/sbin/opensips[840]: INFO:core:shutdown_opensips:
process 23(868) [TCP main] terminated, still waiting