bug-cvs
[Top][All Lists]
Advanced

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

Re: cvs 1.11.2 buffer.c blocking socket/pipe w/bugfix


From: Derek Robert Price
Subject: Re: cvs 1.11.2 buffer.c blocking socket/pipe w/bugfix
Date: Thu, 24 Oct 2002 10:22:59 -0400
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20020823 Netscape/7.0

Mark D. Baushke wrote:

Subject: Re: cvs 1.11.2 buffer.c blocking socket/pipe w/bugfix
To: derek@ximbiot.com (Derek Robert Price)
Date: Thu, 26 Sep 2002 16:07:18 -0400 (EDT)
Cc: mdb@juniper.net, peter@freebsd.org, pst@pst.org, bug-cvs@gnu.org
From: lawrence.jones@eds.com (Larry Jones)

Derek Robert Price writes:
Can you suggest an alternative to get around the blocking problem?
It looks to me like we're just screwed.  The problem is that when old
clients use compression, they don't actually close the connection to the
server until after the server closes its connection to them.  The old
server didn't check for EOF on the input stream before closing it, so it
didn't matter, but the new server does and thus hangs.

Yes, that seems to be the case. However, I see have very little hope
that everyone will be updated to cvs 1.11.2 right away...


The CVS protocol is set up so that the CVS client and server exchange a list of supported-requests. What if, and I'll have to review the protocol to figure out exactly which request this should be done with, but what if one of the requests that is sent every time has its name changed. Or better yet, clients version 1.11.2 and later send a new protocol string that says "I'll close compressed connections". Then the server can use the old method when it doesn't recieve that command and the new when it does.

Alternatively, there must be a way to install a 30 second timeout or something around that call to getc().

By the way, it looks to me like the two "if (server_active)"s in that
code should actually be "if (!server_active)"s, no?

Hmmm... I was under the impression that current_parsed_root->hostname
was only filled in for the client-side of the transaction. If true, then
the two "if (server_active)"s are likely correct as the are.

This was my analysis as well.

Derek

--
               *8^)

Email: derek@ximbiot.com

Get CVS support at <http://ximbiot.com>!
--
Conscious is what you are aware of and conscience is what you wish you weren't.







reply via email to

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