diff options
author | Wayne Davison <wayned@samba.org> | 2005-01-02 00:55:55 +0000 |
---|---|---|
committer | Wayne Davison <wayned@samba.org> | 2005-01-02 00:55:55 +0000 |
commit | 5b7bcac26081ae72da6c5d2e6d8247de17f36b93 (patch) | |
tree | 6e3301b984029bbd1ec15a1ce3569a17a1002c97 /token.c | |
parent | 7fcbf9e43e05c7c8fad4771b7cf8ac9c6ddc655a (diff) | |
download | rsync-5b7bcac26081ae72da6c5d2e6d8247de17f36b93.tar.gz rsync-5b7bcac26081ae72da6c5d2e6d8247de17f36b93.tar.bz2 rsync-5b7bcac26081ae72da6c5d2e6d8247de17f36b93.zip |
In send_deflated_token(), the section that handles "token != -2"
now breaks up the calls to deflate() into CHUNK_SIZE chunks, just
like the other sections of the code.
Diffstat (limited to 'token.c')
-rw-r--r-- | token.c | 11 |
1 files changed, 7 insertions, 4 deletions
@@ -262,19 +262,22 @@ 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 */ - tx_strm.next_in = (Bytef *) map_ptr(buf, offset, toklen); - tx_strm.avail_in = toklen; 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) { + 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); } - } while (tx_strm.avail_in != 0); + toklen -= n; + offset += n; + } while (toklen); } } |