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

Armen Babikyan armen at firespotter.com
Sat Mar 7 00:27:24 CET 2015


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?

Thanks again!

Armen


On Fri, Mar 6, 2015 at 12:32 PM, Daniel-Constantin Mierla <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://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
> 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/20150306/a2b5e176/attachment.html>


More information about the sr-users mailing list