bayonne-devel
[Top][All Lists]
Advanced

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

RE: [Bayonne-devel] Leaving a conference when one is not entered in


From: Julien Chavanton
Subject: RE: [Bayonne-devel] Leaving a conference when one is not entered in
Date: Mon, 11 Apr 2005 15:08:23 -0400

Hi,

The description of the bug was not correct.

I did revert to the code I have made for conference and at the end I encounter 
the same problem.

It seem that after hangup we must avoid using certain function call or obect 
instantiation, because sometime it fail with a segfault, not sure if it is the 
instantiation of "Line" or the "getscript()" function but the problem is there:


bool Trunk::scrConf()
{
       slog(Slog::levelDebug) << "CONF:scrConf1"<<endl;
        TrunkEvent event;
        Trunk *trk;
        char *name = NULL;

        slog(Slog::levelDebug) << "CONF:scrConf2"<<endl; 

//(This is where the segfault take place sometime)

        // Analyze the arguments
        Line *line = getScript();

        slog(Slog::levelDebug) << "CONF:scrConf2.1"<<endl;

        for (unsigned int argc = 0 ; argc < line->argc ; argc++)
        {
         if (!strcmp(line->args[argc], "=name"))
         {
          // Name of the conference
          name = line->args[++argc];
          if (name[0] == '%')
          {
            name = getContent(name);
          }
          if (strlen(name) > 255)
          {
            name[255] = 0;
          } 
         }
        }  

      slog(Slog::levelDebug) << "CONF:scrConf3"<<endl;

        strncpy(data.conf.name, name, 255);

       slog(Slog::levelDebug) << "CONF:scrConf4"<<endl;

        slog(Slog::levelDebug) << "Conference Name:"<< data.conf.name <<endl;
        trunkStep(TRUNK_STEP_CONF);

        return true;
}

What I did is create another command for exiting conference that can safely be 
used after hangup "confexit" .



bool Trunk::scrConfexit()
{
       slog(Slog::levelDebug) << "CONF:scrConf1"<<endl;
        TrunkEvent event;
        Trunk *trk;
        char *name = NULL;

       slog(Slog::levelDebug) << "CONF:scrConf2"<<endl;

        trunkStep(TRUNK_STEP_CONF);

        return true;

}

 
-----Original Message-----
From: infos chez fdrconseil [mailto:address@hidden 
Sent: April 4, 2005 12:31 PM
To: Julien Chavanton
Subject: Re: [Bayonne-devel] Leaving a conference when one is not entered in

Le Fri, 18 Mar 2005 11:08:41 -0500, Julien Chavanton  
<address@hidden> a écrit:

> Etoile,
>
> The problem is a bit more complex then I was thinking:
> But it takes place only under certain circumstance when a  
> conference.leave is called before a conference.enter.
>
> I am going to add a protection in the code, a "status variable" that  
> will automatically return from  conference.leave if conference.enter was  
> not called before.
>
> Mar 18 08:33:34 bayonne: dx(147): GCEV TDX_PLAY HDL:302 chdev:303
> Mar 18 08:33:34 bayonne: dx(147): step 3 gosub(conf)
> Mar 18 08:33:34 bayonne: dx(147): step 3 cleardigits()
> Mar 18 08:33:35 bayonne: dx(147): GCEV_DISCONNECTED HDL:302
> Mar 18 08:33:35 bayonne: dx(147): step 2  
> conference.leave(=name,%confname)
> Mar 18 08:33:35 bayonne: trace: pid=186551 reason=11
> Mar 18 08:33:35 bayonne: trace(0):  
> /usr/local/lib/bayonne/1.2.13/bayonne.bin(stackTrace__Q23ost5Debugi+0x20)  
> [0x8079604]
>
>
> I see your validation was stronger then I was thinking but still there  
> is something somewhere, I am testing this under heavy stress so maybe  
> this problem did not take place on your servers.
>
> Many thanks,
>
> Julien
>

I confirm that the problem does not occur on our server.
We also have some circumstances where some one who has NOT entered yet in  
a conference
is hanging up and then is leaving the conference : it does not cause any  
trouble.

Nevertheless, we have slightly modified the conference code to manage the  
conference
ressources in a better way : we are using a 60 ressources card (DCB/640SC)
and when a new conference has to be created, the device which is choosen  
(dcbB1D1 or dcbB1D2) is the one
which has the SMALLEST number of ressources occupied. When creating a new  
conference, based
on the number of conferees attributed on each board, it chooses the less  
busy.
This is important because the maximum of conferee on a board is 30.

This new version of dcb.cpp is available at  
http://www.etoilediese.com/bayonne/dcb.cpp
It can be used with dialogic or globalcall driver.

Cheers,

FdR/ED






reply via email to

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