--- src/zlib.c.orig 2005-06-03 11:26:09.000000000 -0700
+++ src/zlib.c 2006-08-18 17:08:36.000000000 -0700
@@ -221,15 +221,14 @@
point. */
assert (bd->size == 0);
- /* This will work well in the server, because this call will
- do an unblocked read and fetch all the available data. In
- the client, this will read a single byte from the stdio
- stream, which will cause us to call inflate once per byte.
- It would be more efficient if we could make a call which
- would fetch all the available bytes, and at least one byte. */
-
+ /* On the server, this will do an unblocking read of as much data as is
+ * available. On the client, with a blocking input descriptor and the
+ * current fd_buffer implementation, this should read as much data as
+ * is currently available, and at least 1 byte (or EOF), from the
+ * underlying buffer.
+ */
status = (*cb->buf->input) (cb->buf->closure, bd->text,
- need, BUFFER_DATA_SIZE, &nread);
+ need ? 1 : 0, BUFFER_DATA_SIZE, &nread);
if (status == -2)
/* Don't try to recover from memory allcoation errors. */