RE: Leaving a conference when one is not entered in

"Julien Chavanton" <[email protected]>
Newsgroups gmane.comp.gnu.bayonne.devel
Message-ID <[email protected]>
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:[email protected]] 
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  
<[email protected]> 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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.