[Top][All Lists]

[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: Larry Jones
Subject: Re: cvs 1.11.2 buffer.c blocking socket/pipe w/bugfix
Date: Thu, 24 Oct 2002 14:52:34 -0400 (EDT)

Derek Robert Price writes:
> 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.

I really don't like that idea.  This doesn't seem like the kind of thing
we need to amend the client/server protocol to address -- the benefits
of checking for stray trailing data from the client are so small that,
on further reflection, I don't think we're giving up enough to make it
worth worrying about.  It also strikes me as a bit presumptious of the
buffering library to take it upon itself to comment on how it's being
used; if the caller decides to shut down an input buffer prematurely,
what gives the buffering library the right to complain about it?

In fact, I wonder if that works at all -- if the server shuts down
prematurely (due to receiving a signal, for example) while receiving
input from a compressed connection, does its buffer shutdown wait for
the client to shut down?  Does the client necessarily get notified that
all is lost so it even knows to shut down?

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

That's actually quite difficult to do portably, particularly since stdio
is involved in the process.

-Larry Jones

See if we can sell Mom and Dad into slavery for a star cruiser. -- Calvin

reply via email to

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