[Top][All Lists]
[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, 26 Mar 2004 10:08:00 +0100 |
User-agent: |
Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3 (gnu/linux) |
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