Hi Nick,

It is risky to do a sync sleep as you keep the process blocked, so the ability of OpenSIPS to handle new messages will decrease .

Either do async sleep, either simple drop it to force a retransmissions in 500ms - much simpler :)

Regards,

Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com

On 02/07/2017 12:22 PM, Nick Altmann wrote:
The easies way we use in such cases is:
if (is_method("INVITE")) usleep("500");
for in-dialog INVITEs (inside loose_route() / match_dialog() section).

It will delay slightly all reINVITES, but also will guarantee correct order of packets.

2017-02-06 22:46 GMT+03:00 Stas Kobzar <[email protected] <mailto:[email protected]>>:

    Hello Bogdan,

    In my case, ACK for previous INVITE has already been received by
    OpenSIPS, but not sent yet.
    In this case, will the variable $DLG_status still equals 3 ?

    Thanks

    On Sun, Feb 5, 2017 at 11:15 AM, Bogdan-Andrei Iancu
    <[email protected] <mailto:[email protected]>> wrote:

        Hi Stas,

        Such races may happen at application level or even at network
        level (when using UDP) - so if you have 2 packets very close
        as time, they may swap. That is SIP :)

        The full guilt is in the UAC device, IMHO - it should let some
        time gap between the ACK and re-INVITE, to eliminate any
        possible races.

        Now, what you can do is to use the dialog module and to check
        the dialog state when receiving the re-invite. If $DLG_status
        is /3/ (Confirmed by a final reply but no ACK received yet),
        drop with no reply the re-INVITEs (to force a later
        retransmission) :
        http://www.opensips.org/html/docs/modules/2.2.x/dialog.html#id297400
        <http://www.opensips.org/html/docs/modules/2.2.x/dialog.html#id297400>

        Regards,

        Bogdan-Andrei Iancu
        OpenSIPS Founder and Developer
        http://www.opensips-solutions.com
        <http://www.opensips-solutions.com>

        On 02/02/2017 10:31 PM, Stas Kobzar wrote:
        Hello List,
        My call flow has initial INVITE and re-INVITE to update RTP
        IP/port.
        Usually everything works well, but sometimes OpenSIPS come up
        with following example:
        UA OpenSIPS          PSTN GW
        -------------------------------------------
        INV(CSeq: 100) -----> | ---> INV(CSeq: 100)
        <---- 200 OK  | <--- 200 OK
        (UA sends ACK then new INVITE)
        ACK(CSeq: 100) -----> |
        reINV(Cseq: 101) ---> |
        (OpenSIPS relays first INVITE then ACK)
                              | ---> reINV(CSeq: 101)
                              | --->   ACK(CSeq: 100)
        When PSTN gateway receives re-INVITE before ACK for previous
        INVITE
        it responds 500 with Retry-After header.
        This is correct behaviour which conforms to the RFC 3261
        section 14.2
        My question is:
        Is it possible to assure order of received and relayed
        messages within the same SIP session? Is there any
        configuration parameter?
        Thank you,
--
        Stas Kobzar

        Developeur VoIP / VoIP Developer

        Modulis­.ca Inc.

        # Bureau / Office: 514-284-2020 x 246 <tel:%28514%29%20284-2020>

        Email: s <http://firstname.lastname>[email protected]

        https://www.modulis.com <https://www.modulis.com/>

        _______________________________________________
        Users mailing list
        [email protected] <mailto:[email protected]>
        http://lists.opensips.org/cgi-bin/mailman/listinfo/users
        <http://lists.opensips.org/cgi-bin/mailman/listinfo/users>

--
    Stas Kobzar

    Developeur VoIP / VoIP Developer

    Modulis­.ca Inc.

    # Bureau / Office: 514-284-2020 x 246

    Email: s <http://firstname.lastname>[email protected]

    https://www.modulis.com <https://www.modulis.com/>

    _______________________________________________ Users mailing list
    [email protected] <mailto:[email protected]>
    http://lists.opensips.org/cgi-bin/mailman/listinfo/users
<http://lists.opensips.org/cgi-bin/mailman/listinfo/users>
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to