Hi Daniel,

The terminate_dlg() function is exclusively used via the dialog API (it is not internally used by the dialog module).

The only module that uses the function via the dialog API is the rtpproxy module, which is testing the return code in a convenient way ( < 0 -> error).

So, returning 1 (instead of 0) for dialog not found should not break anything right now.

Regards,

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

On 15.07.2016 19:59, Daniel Zanutti wrote:
Actually I did register to receive the dialog callback and it's working fine.

The problem happens when I receive a 200 OK of the Invite, simultaneously with BYE. On BYE i delete the call from my controls, then process the 200 OK, dialog has all info of the call and I load it back. I'm not sure if it's a bug but the fact is that I need to check if dialog still exist.

Will it embarrass so much the system to return a different positive value?

On Fri, Jul 15, 2016 at 12:48 PM, Bogdan-Andrei Iancu <[email protected] <mailto:[email protected]>> wrote:

    Hi,

    Why don't you register dialog callback to get notified when the
    call is terminated ? in this case, the dialog module will trigger
    you if a call gets terminated (expired or bye'ed)

    Regards,

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

    On 15.07.2016 17:58, Daniel Zanutti wrote:
    Hi Bogdan

    I developed a billing mecanism to control how long calls can
    last, so I need to keep tracking all calls until they hangup.
    Every X seconds, I check all calls on Opensips and hangup some of
    them if necessary.

    For some reason (maybe a bug), some random calls (1 in a 1M or
    more) still exist in my mecanism after call is hangup, so I try
    to hangup this call using terminate_dlg() and wait until I
    receive a trigger from dialog module, confirming that it is
    finalized. In fact, I never receive the trigger from dialog
    module, because the call no longer exist and I have no way to
    check this.

    I think just changing the terminate_dlg function to return any
    number that identifies this dialog is no longer valid, it's OK to
    me and I can remove this call from my structure. A possibility to
    check if call is UP would be even better.

    What do you think can be done?

    Thanks for responding.


    On Thu, Jul 14, 2016 at 1:18 PM, Bogdan-Andrei Iancu
    <[email protected] <mailto:[email protected]>> wrote:

        Hi Daniel,

        Indeed, there is none. Why is so important to know if the
        dialog really existed ? you want to know if it was terminated
        by YOU and not by something else prior to your terminate_dlg() ?

        We may consider returning a different positive code if no
        dialog was found.

        Regards,

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

        On 13.07.2016 21:21, Daniel Zanutti wrote:
        Hi

        Anyone could please help on this?

        Thanks


        On Mon, Jul 11, 2016 at 3:23 PM, Daniel Zanutti
        <[email protected] <mailto:[email protected]>>
        wrote:

            Hi

            I need to confirm if a call is UP and terminate it from
            my code. I have previously stored callid, h_entry and
            h_id on an internal list, so I'm executing at a specific
            time:

            dlg_api.terminate_dlg(h_entry, h_id);

            If the call is still running, it works nicely and hangup
            the call. If there is a problem, I get a negative value
            and solve too. The problem is if the call is not up
            anymore, I get a return == 0. This is the code of
            terminate_dlg function:

            struct dlg_cell * dlg = NULL;

            dlg = lookup_dlg(h_entry, h_id);

                    if(!dlg)
                            return 0;

            This function "lookup_dlg" isn't exported.

            Is there anyway to confirm if the call is still running,
            if I have these values Callid, h_entry and h_id?

            Thanks!




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





_______________________________________________
Devel mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/devel

Reply via email to