I would like to clarify the issue in case its not 100% clear. * Caller sends INVITE with No SDP(Late Media Invite) * Another device in path (B2BUA) receives INVITE and sends dummy SDP to Opensips with just G.711 codec in the Offer * Opensips Creates Dialog and sends 200OK with SDP using t_reply_with_body based on previously provided information. * B2BUA receives 200OK with SDP then sends ACK followed by a Re-INVITE with No SDP back to OpenSips. * Opensips appears to accept the ACK as it doesn't retransmit the 200OK right away as before updated changes. * Opensips sends 100 trying with new CSEQ from Re-INVITE with no SDP * 200OK Loop created * Opensips send 200 OK with old CSEQ * B2BUA sends ACK with old CSEQ * Call times out.
No audio sent Thank you Kevin. * On Mon, Nov 6, 2023 at 12:54 PM Kevin Kennedy <kennedy4...@gmail.com> wrote: > I tried updating from Opensips 3.2 to Opensips 3.4.2 as I saw that there > was some re-invite fixes. Still doesn't seem to resolve this issue. What > am I missing to handle this correctly? > > Thank you. > > Kevin > > On Fri, Nov 3, 2023 at 12:51 PM Kevin Kennedy <kennedy4...@gmail.com> > wrote: > >> Dmitry, >> Thank you for your response, it does appear to work this way and is >> absorbing the ACK now, but when a Re-INVITE happens, it responds correctly >> with the updated Cseq in the 100 Trying, but the 200 OK (using the >> t_reply_with_body), still has the same Cseq as the initial INVITE. How can >> I make adjustments for this? >> >> Thank you. >> >> Kevin >> >> On Fri, Nov 3, 2023 at 5:10 AM Dmitry Ponomaryov <iamha...@gmail.com> >> wrote: >> >>> It turns out that this is no early_media, there were simply successful >>> attempts with 183 Session Progress, which is why there was such a >>> misunderstanding, I’ll attach the snippet code again in plain text: >>> route { if (is_method("INVITE")) { create_dialog(); route(media); exit; >>> } } route[media] { if (has_body("application/sdp")) { rtpengine_offer(); >>> } $json(reply) := $rtpquery; >>> $var(port)=$json_pretty(reply/tags/$ft/medias[0]/streams[0]/local port); >>> remove_body_part(); append_to_reply("Contact: >>> <sip:$rU@$socket_in(ip):$socket_in(port);transport=udp;did=$DLG_did>\r\n"); >>> >>> append_to_reply("Content-Type: application/sdp\r\n"); $var(body) = >>> $(rb{re.subst,/(IP4.).*/\1$socket_in(ip)/g}); $var(body) = >>> $(var(body){re.subst,/(audio.)...../\1$var(port)/g}); >>> t_reply_with_body(200, "OK", $var(body)); >>> rtpengine_play_media("call-id=$ci from-tag=$ft >>> file=/etc/rtpengine/media.wav"); async(sleep(10), after_media); } >>> route[after_media] { if (t_was_cancelled()) { rtpengine_delete(); exit; >>> } else { rtpengine_delete(); sl_send_reply(486,"Busy here"); exit; } } >>> >>> and pined previous posts below :) >>> >>> > ---------------------------------------------------------------------- >>> > Message: 2 >>> > Date: Fri, 3 Nov 2023 16:00:22 +0500 >>> > From: Dmitry Ponomaryov<iamha...@gmail.com> >>> > To:users@lists.opensips.org >>> > Subject: Re: [OpenSIPS-Users] Opensips and rtpengine_play_media not >>> > absorbing ACK >>> > Message-ID:<3971cbc2-7281-2299-4212-7f241e8b8...@gmail.com> >>> > Content-Type: text/plain; charset="utf-8"; Format="flowed" >>> > >>> > Hello everyone, I would like to show my part of the code when playing >>> > early media after 200OK, when creating dialogs, I substituted $DLG_did >>> > in the contact of my dialog, and received the same $DLG_did for my >>> > dialog in ACK, but OpenSIPS also continued to send 200OK , despite >>> > having already received an ACK response. >>> > >>> > route { >>> > >>> > # initial invite >>> > >>> > if (is_method("INVITE")) { >>> > >>> > create_dialog(); >>> > >>> > route(early_media); >>> > >>> > exit; >>> > >>> > } >>> > >>> > } route[early_media] { if (has_body("application/sdp")) { >>> > rtpengine_manage(); } $json(reply) := $rtpquery; >>> > $var(port)=$json_pretty(reply/tags/$ft/medias[0]/streams[0]/local >>> port); >>> > remove_body_part(); >>> > >>> > append_to_reply("Contact: >>> > <sip:$rU@ >>> $socket_in(ip):$socket_in(port);transport=udp;did=$DLG_did>\r\n"); >>> > >>> > append_to_reply("Content-Type: application/sdp\r\n"); $var(body) = >>> > $(rb{re.subst,/(IP4.).*/\1$socket_in(ip)/g}); $var(body) = >>> > $(var(body){re.subst,/(audio.)...../\1$var(port)/g}); >>> > t_reply_with_body(200, "OK", $var(body)); >>> > rtpengine_play_media("call-id=$ci from-tag=$ft >>> > file=/etc/rtpengine/media.wav"); async(sleep(10), after_early_media); } >>> > route[after_early_media] { if (t_was_cancelled()) { rtpengine_delete(); >>> > exit; } else { rtpengine_delete(); sl_send_reply(486,"Busy here"); >>> exit; >>> > } } >>> > >>> > I don’t know if Kevin example was with creating a dialog, but I also >>> > noticed this problem through transaction... thanks >>> > -------------- next part -------------- >>> > An HTML attachment was scrubbed... >>> > URL:< >>> http://lists.opensips.org/pipermail/users/attachments/20231103/059cb479/attachment-0001.html >>> > >>> > ---------------------------------------------------------------------- >>> > >>> > Message: 1 >>> > Date: Thu, 2 Nov 2023 16:32:02 -0700 >>> > From: Kevin Kennedy<kennedy4...@gmail.com> >>> > To: OpenSIPS users mailling list<users@lists.opensips.org> >>> > Subject: [OpenSIPS-Users] Opensips and rtpengine_play_media not >>> > absorbing ACK >>> > Message-ID: >>> > < >>> cabdxsrxltp2_uex_upx1adg16af6gaetzjujutpki8c7h3k...@mail.gmail.com> >>> > Content-Type: text/plain; charset="utf-8" >>> > >>> > I am trying to build a solution where Opensips 3.2+ with RTPengine >>> acts as >>> > a UAC, answers a call with 200OK, plays media from file, and will >>> terminate >>> > the call right after playing announcement. >>> > >>> > Opensips is responding with 200OK with SDP body and making the >>> > correct changes for the IP, but when the ACK comes back from the UAS, >>> > Opensips doesn't seem to absorb it and retransmits the 200OK. >>> > >>> > Code snippet handling this scenario >>> > >>> > rtpengine_manage("from-tag=$ft replace-session-connection >>> > trust-address replace-origin codec-strip-g729",,$var(body)); >>> > append_to_reply("Contact:<sip:$socket_out>\r\n"); >>> > append_to_reply("Content-Type: application/sdp\r\n"); >>> > t_reply_with_body(200, "OK", $var(body)); >>> > rtpengine_play_media("from-tag=$ft >>> > file=/etc/rtpengine/unk_num.wav"); >>> > sleep(10); >>> > rtpengine_delete("from-tag=$ft"); >>> > #t_reply(603, "Decline"); >>> > exit(); >>> > >>> > >>> > What do I need to add to handle this scenario correctly? >>> > >>> > Note: I was able to get this to work with Early Media (183 >>> > reply_with_body, and send t_reply(603, "Decline")), but we have >>> customers >>> > using late media invite as well, so the Early Media option wouldn't >>> work in >>> > that case. >>> > >>> > Thank you. >>> > >>> > Kevin Kennedy >>> > -------------- next part -------------- >>> > An HTML attachment was scrubbed... >>> > URL:< >>> http://lists.opensips.org/pipermail/users/attachments/20231102/dd52d307/attachment-0001.html >>> > >>> > >>> > ------------------------------ >>> > >>> >>> _______________________________________________ >>> Users mailing list >>> Users@lists.opensips.org >>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users >>> >>
_______________________________________________ Users mailing list Users@lists.opensips.org http://lists.opensips.org/cgi-bin/mailman/listinfo/users