[SR-Users] SIP 500 on WSS connection lookup failure

Daniel-Constantin Mierla miconda at gmail.com
Tue Mar 10 14:14:12 CET 2015


Hello,

On 07/03/15 00:27, Armen Babikyan wrote:
> Hi Daniel,
>
> Thanks for the tip about disabling internal replies in the transaction
> module.
>
> About the new feature in usrloc - it looks like close_expired_tcp
> feature disconnects the connection if contacts on it expire.  I'm
> hoping to achieve the reverse, where I get to clean up when a
> connection closes abruptly.  To this end, for websockets, will
> Kamailio allow me to use uac_req_send() from within
> event_route[websocket:closed]?  I'm looking for a way to generate a
> de-REGISTER packet to send on to my registrar when a client abruptly
> closes their SIP/WS connection.  If not, do you have any suggestions
> to achieve something similar?

if you want to avoid attempting to send the sip message when there is no
connection, then the option is to use set_forward_no_connect() before
relaying.

 https://www.kamailio.org/wiki/cookbooks/4.2.x/core#set_forward_no_connect

Otherwise, look inside the usrloc module for the option to remove the
record when the connection associated with it is no longer available
(this is done on a timer check). Then you can get the event route
executed for expired contact and there you can trigger something to
trigger an un-register to the other server.

uac_req_send() should work fine in event routes.

Cheers,
Daniel

>
> Thanks again!
>
> Armen
>
>
> On Fri, Mar 6, 2015 at 12:32 PM, Daniel-Constantin Mierla
> <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>
>     Hello,
>
>     On 06/03/15 03:38, Armen Babikyan wrote:
>     > Hello,
>     >
>     > I am setting up this scenario using Kamailio 4.2.2:
>     >
>     > [UA] <-> [kamailio1] <-> [kamailio2] <-> [other stuff]
>     >
>     > UA connects to kamailio1 using SIP/WSS, kamailio1 proxies request
>     > along to kamailio2.  Note that my intent here is to have kamailio2
>     > provide the registrar functionality.  The kamailio2 (or something
>     > behind it) can also initiate transactions to UA, like OPTIONS, for
>     > example.
>     >
>     > I'm having an issue though: when the websocket connection between
>     > kamailio1 and UA dies, transaction requests from kamailio2 show
>     up to
>     > kamailio1, and I get errors in kamailio1's logs because the WSS
>     > connection is gone.  I get messages as follows (debug=2):
>     >
>     > Mar  6 00:17:33 kamailio1 /usr/local/sbin/kamailio[5653]: WARNING:
>     > <core> [msg_translator.c:2778]: via_builder(): TCP/TLS
>     connection (id:
>     > 0) for WebSocket could not be found
>     > Mar  6 00:17:33 kamailio1 /usr/local/sbin/kamailio[5653]: ERROR:
>     > <core> [msg_translator.c:1996]: build_req_buf_from_sip_req(): could
>     > not create Via header
>     > Mar  6 00:17:33 kamailio1 /usr/local/sbin/kamailio[5653]: ERROR: tm
>     > [t_fwd.c:527]: prepare_new_uac(): could not build request
>     > Mar  6 00:17:33 kamailio1 /usr/local/sbin/kamailio[5653]: ERROR: tm
>     > [t_fwd.c:1777]: t_forward_nonack(): ERROR: t_forward_nonack: failure
>     > to add branches
>     >
>     > At debug=4, I get the output here: http://pastebin.com/d3RumekG
>     >
>     > In a running tshark, I see kamailio1 responding to kamailio2 with a
>     > "SIP/2.0 500 No error (2/TM)".  It appears to me that this is
>     > happening before t_relay() even returns.
>     >
>     > Is there a way to prevent the SIP 500 from being sent back to the
>     > client?  I am calling t_on_branch_failure("kam2bf") and
>     > t_on_failure("kam2f"), with each of those handlers
>     > (event_route[tm:branch-failure:kam2bf] and failure_route[kam2f])
>     > written to print a log message, but it appears that neither of those
>     > handlers are being called.  I tried installing these handlers
>     > independently to no avail.
>     >
>     > I also tried registering a t_on_reply() handler, thinking it was an
>     > internally-generated SIP response that might make it through my
>     > handler on its way out to kam2, but that is also not getting
>     invoked.
>     >
>     > I want to return a 404 or something similar instead of having a 500
>     > auto-returned for me.
>     >
>     > Related to this, is there a way to query kamailio's in-memory client
>     > connectivity data structure for the connectivity status of a client?
>     > Or is this something best done by keeping track of every client
>     myself
>     > using (e.g.) localcache?
>     >
>     > Any pointers are appreciated.  Thanks!
>
>     If you want tm not to send an reply internally, see:
>
>     -
>     http://kamailio.org/docs/modules/4.2.x/modules/tm.html#tm.f.t_set_disable_internal_reply
>
>     Also, you can list the details of tcp connections via tcp -- see
>     'kamcmd
>     help' for the tcp related commands. Iirc, something similar should be
>     for websocket connections.
>
>     The usrloc module keeps the id of the tcp connection for the
>     client, the
>     development version (master branch) has the option to delete the
>     record
>     if the connection is gone. For older versions there is also an
>     option to
>     remove those records with some delay
>     (http://kamailio.org/docs/modules/4.2.x/modules/usrloc.html#usrloc.p.handle_lost_tcp),
>     being a timer based cleanup.
>
>     Cheers,
>     Daniel
>
>     --
>     Daniel-Constantin Mierla
>     http://twitter.com/#!/miconda <http://twitter.com/#%21/miconda> -
>     http://www.linkedin.com/in/miconda
>     Kamailio World Conference, May 27-29, 2015
>     Berlin, Germany - http://www.kamailioworld.com
>
>
>     _______________________________________________
>     SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing
>     list
>     sr-users at lists.sip-router.org <mailto:sr-users at lists.sip-router.org>
>     http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>

-- 
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Kamailio World Conference, May 27-29, 2015
Berlin, Germany - http://www.kamailioworld.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20150310/acfddaae/attachment.html>


More information about the sr-users mailing list