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

Re: proxy



At 9:13 AM 8/25/95, Eric Smith wrote:
>does it have proxy server capabilities?

The proxy server capability will be included in the release next week.

It does not cache right now.

There are issues about the reliability of some UNIX servers that will need to be
addressed on a per-platorm basis.

The problem is that a number of servers do not perform a reliable close of
the tcp connection in http 1.0.  Instead of waiting for the acknowledgement
from the client that it has received the last tcp buffer, these servers kill
the thread providing http service, and when this happens, their TCP
substrate sends
a reset to the client.  This establishes a race condition whereby the
client must complete
reading the input buffer before the reset arrives from the server.  Otherwise,
the client will flush its input buffer -- according to TCP/IP standards.

This means that the last buffer of a transmission may be lost when proxying from
as server with this bug.  Our strategy has been to retry the transfer until
the proxy
wins the race condition, giving up after 5 retries.

The next version of the HTTP specification will contain a note describing this
problem and how it should be corrected.

The claim is that servers using the Berkeley TCP stack contain this bug because
the TCP implementation does not implement the linger option correctly.
Specifically,
it hangs waiting for the acknowledgement from the client.  Consequently,
these servers
close the connection in abort and exhibit this kind of unreliable transmission.

Anyway, the proxy code will be available for people to experiment with and
see what
work-arounds they can find while we wait for SUN and others to fix their
TCP implementations.

We are not alone. I understand that this problem plagues other proxies. We
at MIT do not
know of any reliable workarounds at this time. If one ignores the reset, it
is necessary
to confirm that all the packets have arrived and prevent such a special
case hack from
running in other circumstance (e.g., when serving a client) lest one
introduce pathologies
elesewhere.

If anyone has a beter idea on a work around, please speak up.