bayonne-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bayonne-devel] Re: [Bayonne-dialogic] Problem : Bayonne always try to d


From: David Sugar
Subject: [Bayonne-devel] Re: [Bayonne-dialogic] Problem : Bayonne always try to drop call when exiting
Date: Mon, 09 Aug 2004 15:12:29 -0400
User-agent: Mozilla Thunderbird 0.7.1 (Macintosh/20040626)

I was thinking of making all the gc_xxx calls that use crn validate crn has a valid value (and make sure we initialize to -1), so I generally think this would be a good idea. We could also add an extra flag that is set when a call has been successfully answered/accepted/connected somewhere.

Julien Chavanton wrote:

I still have a small problem with Dialogic when I make outbound call and
there is busy for example when the script exit bayonne still make a
gc_dropcall() even if there is no call ?

I see that when bayonne program close it does validate if there is an
active call before drop and release but when doing exit it goes to
hangup and tries to drop the call even if there is no call ?

In some case I suspect it could block the port and restrict further
outgoing calls.


I will try to patch this by adding gc_ResetLineDev(linedev, EV_ASYNC); In case of Dropcall failure And a proper validation before making the dropcall. if(crn != -1) in DialogicTrunk::hangupCall

//FROM Bayonne source code:


//BAYONNE CLOSING = CRN validation is used
DialogicTrunk::~DialogicTrunk()
{
        terminate();
        stopChannel(EV_ASYNC);
        tsRelease();

        if(crn != -1)
        {
                gc_DropCall(crn, GC_NORMAL_CLEARING, EV_SYNC);
                gc_ReleaseCallEx(crn, EV_SYNC);
        }

        if(dialogicivr.getBoardType() == SPRINGWARE)
                if(dx_close(chdev) < 0)
                        postError(chdev, "dx_close");

        ::close(evbuf[0]);
        ::close(evbuf[1]);
}

//EXIT = If I understand I think will always a call the Dialogic hangup
I //see a pointer to method but can not find the exact method name I
guess it //is an alias to DialogicTrunk::hangupCall
void DialogicTrunk::exit(void)
{
        if(!Trunk::flags.onexit)
                if(redirect("::exit"))
                {
                        autoloop(false);
                        Trunk::flags.onexit = true;
                        return;
                }

        char buffer[33];
        getName(buffer);
        slog(Slog::levelDebug) << buffer << ": script exiting" << endl;
        handler = &DialogicTrunk::hangupHandler;
}


//CALL HANGUP No CRN validation
bool DialogicTrunk::hangupCall(void)
{
        int cause;

        if(!Trunk::flags.offhook && !_accepted)
                return false;

        _disconnecting = true;

        switch(callstate)
        {
        case GCST_ACCEPTED:
        case GCST_OFFERED:
                cause = GC_CALL_REJECTED;
                break;
        default:
                cause = GC_NORMAL_CLEARING;
        }

        if(gc_DropCall(crn, cause, EV_ASYNC) < 0)
        {
                postGCError("gc_DropCall");
                return false;
        }

        Trunk::flags.offhook = false;
        return true;
}


-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
_______________________________________________
Bayonne-dialogic mailing list
address@hidden
https://lists.sourceforge.net/lists/listinfo/bayonne-dialogic





reply via email to

[Prev in Thread] Current Thread [Next in Thread]