Hi, I've had a better look at AmOfferAnswer class code and to the Offer/Answer rfc. I am not sure that a new state is needed because, according to rfc, when an sdp is received in a reliable provisional response the Offer/Answer should be considered completed, like when the sdp is received in the final reply. If I understand correctly AmOfferAnswer code, the transition to the Completed state is performed in onRxSdp when the message contains an SDP, regardless of if it is a provisional response and if it is a reliable one. Shouldn't the kind of reply and the 100rel support be checked in this case before changing the state? If I am correct where could be in the AmOfferClass a good place to perform this kind of check?
Regards, Federico Cabiddu On Wed, Jul 1, 2015 at 11:46 AM, Stefan Sayer <[email protected]> wrote: > Hi, > > Taisto Qvist wrote on 06/30/2015 07:18 PM: > > Hi, > > > > I've just started testing SEMS and the SBC logic, and I am quite > > thrilled with my success so far. > > > > However I ran into an issue when a client is using 100rel, and > > finishes the SDP negotiation with 180/PRACK. > > > > Once the call is answered with 200 (without SDP, since the answer was > > sent in 180) the SBC terminates the call by sending 487 to originator. > > > > The issue seems to be at: > > > > [#7f0bd865b700/18607] [getSdpBody, AmOfferAnswer.cpp:479] DEBUG: No > > SDP Offer. > > [#7f0bd865b700/18607] [reply, AmBasicSipDialog.cpp:614] DEBUG: > > onTxReply failed > > [#7f0bd865b700/18607] [relaySip, AmB2BSession.cpp:874] ERROR: > > dlg->reply() failed > > [#7f0bd865b700/18607] [updateCallStatus, CallLeg.cpp:1229] DEBUG: A > > leg 5796F074-5592CCE60009E42F-D8D62700 changing status from Ringing to > > Disconnected > > > > This, despite that processing of the SDP in 180, seems to have worked > > fine. > > > > [#7f0bd875c700/18608] [setState, AmOfferAnswer.cpp:69] DEBUG: setting > > SIP dialog O/A status: OfferSent->Completed > > #7f0bd875c700/18608] [onRxSdp, AmOfferAnswer.cpp:265] DEBUG: > > oa_state: OfferSent -> Completed > > [#7f0bd865b700/18607] [setState, AmOfferAnswer.cpp:69] DEBUG: > > setting SIP dialog O/A status: OfferRecved->Completed > > > > I've started looking through the code, and it seems like there is > > logic for handling SDP in 183, etc, but I havent found the real > > problem yet. > you're right. AmOfferAnswer::onReplyOut should not necessarily try to > get an SDP body in that case and may just send out the 200 without > SDP, or put in the SDP from the 183. > > The proper solution to this is to add another state > OA_PreviewCompleted which deals with the "preview" that may be > received here, as described in > https://tools.ietf.org/html/rfc6337#section-3.1.1 > In checkStateChange, the transition from PreviewCompleted to Completed > can then be ignored. > > Stefan > > _______________________________________________ > Semsdev mailing list > [email protected] > http://lists.iptel.org/mailman/listinfo/semsdev >
_______________________________________________ Semsdev mailing list [email protected] http://lists.iptel.org/mailman/listinfo/semsdev
