ccrtp-devel
[Top][All Lists]
Advanced

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

Re: [Ccrtp-devel] 2 problem in rtp.h


From: David Sugar
Subject: Re: [Ccrtp-devel] 2 problem in rtp.h
Date: Thu, 25 Mar 2004 22:21:20 -0500
User-agent: KMail/1.5.3

It should be out this weekend or early next week.  Mostly I had been waiting 
for Federico to have a chance to look at and test the use of Common C++ 
"String" but this is not at all nessisary for 1.1.1.

On Friday 26 March 2004 04:08 am, Guillaume FRAYSSE wrote:
> Hello again,
>
> You haven't answered those questions yet.
> Could you give us a date for the next release ?
>
> Thank you,
> Guillaume Fraysse
>
> Guillaume FRAYSSE <address@hidden> writes:
> > Hello everyone,
> >
> > Is it possible to have a new release soon ? We really need a relase
> > with our bug fixes as soon as possible. It's really inconvenient now
> > especially with the 1.1.0 being on sourceforge.
> >
> > It would be much easier for us.
> >
> > Regards,
> > Guillaume Fraysse
> >
> > Federico Montesino Pouzols <address@hidden> writes:
> >>    Yes, both bugs were in 1.1.0, and both fixes from Guillaume
> >> are now in CVS. Thanks for the report!
> >>
> >>    Also yes, it would make sense to replace string with String, I
> >> will take care of that a bit later...
> >>
> >> On Thu, Mar 11, 2004 at 09:13:57PM -0500, David Sugar wrote:
> >>> Hmm...I think Federico will look at this more closely.  However, the
> >>> current release of ccrtp is 1.1.0, not 1.0.2.  It looks like the
> >>> username question is valid for 1.1.0 as well, however, and so I assume
> >>> the other issue is also.
> >>>
> >>> I was thinking it would soon be a good time to do a new release since
> >>> we were getting ready to do a 1.1.1 common c++ release shortly.
> >>>
> >>> On a related note, should we continue using std::string in ccrtp or
> >>> should we now use the new Common C++ "String" class?
> >>>
> >>> On Friday 12 March 2004 07:20 am, Guillaume Glodas wrote:
> >>> > Hi,
> >>> >
> >>> >
> >>> > we've found a string initialisation problem in the source file
> >>> > ccrtp-1.0.2/src/source.cpp
> >>> >
> >>> > 81,83c81,90
> >>> >        if ( !strcmp(user,"") )
> >>> >                user = Process::getEnv("USER");
> >>> >        username = user;
> >>> >
> >>> > when user is NULL, username which is a string, is wrongly
> >>> > initialised.
> >>> >
> >>> > this piece of code seems to fix this bug :
> >>> >        if (user) {
> >>> >                if ( !strcmp(user,"") )
> >>> >                        user = Process::getEnv("USER");
> >>> >        if (user)
> >>> >                username = user;
> >>> >        else
> >>> >                username="";
> >>> >  }
> >>> >  else
> >>> >        username ="";
> >>> > .
> >>> >
> >>> > We've found a dead lock problem in the header file
> >>> > ccrtp-1.0.2_local/src/ccrtp/rtp.h
> >>> >
> >>> >     run()
> >>> >         {
> >>> >                 microtimeout_t timeout = 0;
> >>> >                 while ( ServiceQueue::isActive() ) {
> >>> >                         if ( !timeout ){
> >>> >                                 timeout = getSchedulingTimeout();
> >>> >                         }
> >>> >                         setCancel(cancelDeferred);
> >>> >                         controlReceptionService();
> >>> >                         controlTransmissionService();
> >>> >                         setCancel(cancelImmediate);
> >>> >                         microtimeout_t maxWait =
> >>> >
> >>> > timeval2microtimeout(getRTCPCheckInterval());
> >>> >                         // make sure the scheduling timeout is
> >>> >                         // <= the check interval for RTCP
> >>> >                         // packets
> >>> >                         timeout = (timeout > maxWait)? maxWait :
> >>> > timeout;
> >>> >                         if ( !timeout ) {
> >>> >                                 setCancel(cancelDeferred);
> >>> >                                 size_t r = dispatchDataPacket();
> >>> >                                 setCancel(cancelImmediate);
> >>> >                                 if ( r < 0 )
> >>> >                                         timeout = timeout;
> >>> >                                 timerTick();
> >>> >                         } else {
> >>> >                                 if ( isPendingData(timeout/1000) ) {
> >>> >                                         setCancel(cancelDeferred);
> >>> >                                         size_t r =
> >>> > takeInDataPacket(); setCancel(cancelImmediate); if ( r < 0 )
> >>> >                                                 return;
> >>> >                                 }
> >>> >                                 timeout = 0;
> >>> >                         }
> >>> >                 }
> >>> >                 dispatchBYE("GNU ccRTP stack finishing.");
> >>> >                 sleep(~0);
> >>> >         }
> >>> >
> >>> > if timeout < 100 timeout/1000 = 0
> >>> > isPendingData(timeout/1000) == isPendingData(0)
> >>> > if there no incoming data, isPendingData waits undefinitely.
> >>> >
> >>> > This piece of code seems to solve the problem :
> >>> >     run()
> >>> >         {
> >>> >                 microtimeout_t timeout = 0;
> >>> >                 while ( ServiceQueue::isActive() ) {
> >>> >                         if ( !(timeout/1000) ){
> >>> >                                 timeout = getSchedulingTimeout();
> >>> >                         }
> >>> >                         setCancel(cancelDeferred);
> >>> >                         controlReceptionService();
> >>> >                         controlTransmissionService();
> >>> >                         setCancel(cancelImmediate);
> >>> >                         microtimeout_t maxWait =
> >>> >
> >>> > timeval2microtimeout(getRTCPCheckInterval());
> >>> >                         // make sure the scheduling timeout is
> >>> >                         // <= the check interval for RTCP
> >>> >                         // packets
> >>> >                         timeout = (timeout > maxWait)? maxWait :
> >>> > timeout;
> >>> >                         if ( !(timeout/1000) ) {
> >>> >                                 setCancel(cancelDeferred);
> >>> >                                 size_t r = dispatchDataPacket();
> >>> >                                 setCancel(cancelImmediate);
> >>> >                                 if ( r < 0 )
> >>> >                                         timeout = timeout;
> >>> >                                 timerTick();
> >>> >                         } else {
> >>> >                                 if ( isPendingData(timeout/1000) ) {
> >>> >                                         setCancel(cancelDeferred);
> >>> >                                         size_t r =
> >>> > takeInDataPacket(); setCancel(cancelImmediate); if ( r < 0 )
> >>> >                                                 return;
> >>> >                                 }
> >>> >                                 timeout = 0;
> >>> >                         }
> >>> >                 }
> >>> >                 dispatchBYE("GNU ccRTP stack finishing.");
> >>> >                 sleep(~0);
> >>> >         }
> >>> >
> >>> > regards,
> >>> >
> >>> > Guillaume Glodas
> >>> >
> >>> >
> >>> >
> >>> > _______________________________________________
> >>> > Ccrtp-devel mailing list
> >>> > address@hidden
> >>> > http://mail.gnu.org/mailman/listinfo/ccrtp-devel
> >>>
> >>> _______________________________________________
> >>> Ccrtp-devel mailing list
> >>> address@hidden
> >>> http://mail.gnu.org/mailman/listinfo/ccrtp-devel
> >>
> >> _______________________________________________
> >> Ccrtp-devel mailing list
> >> address@hidden
> >> http://mail.gnu.org/mailman/listinfo/ccrtp-devel





reply via email to

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