[OpenSIPS-Users] Opensips and rtpengine_play_media not absorbing ACK

Kevin Kennedy kennedy4260 at gmail.com
Mon Nov 6 22:58:57 UTC 2023


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 <kennedy4260 at 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 <kennedy4260 at 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 <iamhalje at 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<iamhalje at gmail.com>
>>> > To:users at lists.opensips.org
>>> > Subject: Re: [OpenSIPS-Users] Opensips and rtpengine_play_media not
>>> >       absorbing ACK
>>> > Message-ID:<3971cbc2-7281-2299-4212-7f241e8b8b5a at 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<kennedy4260 at gmail.com>
>>> > To: OpenSIPS users mailling list<users at lists.opensips.org>
>>> > Subject: [OpenSIPS-Users] Opensips and rtpengine_play_media not
>>> >       absorbing ACK
>>> > Message-ID:
>>> >       <
>>> CABDXsRxLTp2_uEX_UPX1adg16af6gaetzJujUTPki8c7H3KKLQ at 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 at lists.opensips.org
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20231106/020a43bd/attachment-0001.html>


More information about the Users mailing list