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: Guillaume FRAYSSE
Subject: Re: [Ccrtp-devel] 2 problem in rtp.h
Date: Fri, 19 Mar 2004 10:37:13 +0100
User-agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3 (gnu/linux)

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]