Backed out changes to send_deflated_token() that surrounded the
authorWayne Davison <wayned@samba.org>
Sun, 2 Jan 2005 09:08:59 +0000 (09:08 +0000)
committerWayne Davison <wayned@samba.org>
Sun, 2 Jan 2005 09:08:59 +0000 (09:08 +0000)
call to deflate(..., Z_INSERT_ONLY) -- the underlying bug was
caused by the zlib code not handling Z_INSERT_ONLY in the case
where the server has disabled compression.

token.c

diff --git a/token.c b/token.c
index 201862e..8ba32b9 100644 (file)
--- a/token.c
+++ b/token.c
@@ -262,22 +262,16 @@ send_deflated_token(int f, int token, struct map_struct *buf, OFF_T offset,
        } else if (token != -2) {
                /* add the data in the current block to the compressor's
                   history and hash table */
-               do {
-                       n = MIN(toklen, CHUNK_SIZE);
-                       tx_strm.next_in = (Bytef *) map_ptr(buf, offset, n);
-                       tx_strm.avail_in = n;
-                       tx_strm.next_out = (Bytef *)obuf;
-                       tx_strm.avail_out = AVAIL_OUT_SIZE(CHUNK_SIZE);
-                       r = deflate(&tx_strm, Z_INSERT_ONLY);
-                       if (r != Z_OK || tx_strm.avail_in != 0) {
-                               rprintf(FERROR,
-                                       "deflate on token returned %d (%d bytes left)\n",
-                                       r, tx_strm.avail_in);
-                               exit_cleanup(RERR_STREAMIO);
-                       }
-                       toklen -= n;
-                       offset += n;
-               } while (toklen);
+               tx_strm.next_in = (Bytef *) map_ptr(buf, offset, toklen);
+               tx_strm.avail_in = toklen;
+               tx_strm.next_out = (Bytef *) obuf;
+               tx_strm.avail_out = AVAIL_OUT_SIZE(CHUNK_SIZE);
+               r = deflate(&tx_strm, Z_INSERT_ONLY);
+               if (r != Z_OK || tx_strm.avail_in != 0) {
+                       rprintf(FERROR, "deflate on token returned %d (%d bytes left)\n",
+                               r, tx_strm.avail_in);
+                       exit_cleanup(RERR_STREAMIO);
+               }
        }
 }