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
