< Previous by Date Date Index Next by Date >
< Previous in Thread Thread Index  

Re: [reSIProcate] Session Timers and WebRTC


Hi Dario,

You could receive notification of the TCP connection down via the ConnectionTerminated notification as on option.  See DialogUsageManager::registerForConnectionTermination.

However, I think you are right about treating 430 as General error.  430 was added relatively recently and there really wasn't any thought as to what type of DUM error this should be.  I see 430 as very similar to a 408 for UDP.  Is there anyone that disagrees with this?

Best Regards,
Scott



On Fri, Oct 28, 2016 at 11:44 AM, Dario Bozzali <Dario.Bozzali@xxxxxxxxxxx> wrote:

Hello,

I need some help about Session Timers and WebRTC.

 

I wrote a UAS using reSIProcate (1.10.2 release) and I’m using sipml5 as WebRTC client in Chrome.

sipml5 does not support Outbound (RFC 5626), Session Timers (RFC 4028) and KeepAlive (CRLF) messages, so I cannot use FlowTerminated mechanism present in DUM, but my UAS can send (re)INVITE to refresh session (sipml5 does not support UPDATE method).

 

If I kill Chrome while there is an active call, my UAS does not receive any event (I don’t know if I could receive a connection terminated event and I’m not handling it), but when it tries to send INVITE for session refresh, transaction fails with cause 430 Flow failed (set in TransactionState::processNoDnsResults() method).

InviteSession::toEvent() method converts 430 to OnInviteFailure, so in InviteSession::dispatchSentReinvite() method dialog state is changed from SentReInvite to Connected and onOfferRejected() method is invoked for session handle with status message with cause 430.

In this way my UAS can detect the remote endpoint is no more active and I can end local call.

Is this behavior right in your opinion?

 

It seems to me that Session Timers behavior is different when using UDP in a similar scenario.

If (re)INVITE fails with cause 408 Request Timeout or 481 Call/Transaction Does Not Exist, InviteSession::toEvent() method converts them to OnGeneralFailure and in InviteSession::dispatchSentReinvite() method dialog state is changed from SentReInvite to Terminated and onTermianted() method is invoked for session handle with reason InviteSessionHandler::Error.

Should InviteSession::toEvent() method convert 430 to OnGeneralFailure in your opinion?

 

Thank you in advance for any support or comment.

Best regards,

Dario


_______________________________________________
resiprocate-devel mailing list
resiprocate-devel@resiprocate.org
https://list.resiprocate.org/mailman/listinfo/resiprocate-devel