version 1.1, 2012/02/17 15:09:30
|
version 1.1.1.2, 2013/10/14 07:51:14
|
Line 3
|
Line 3
|
* |
* |
* Copyright (C) 1996 Andrew Tridgell |
* Copyright (C) 1996 Andrew Tridgell |
* Copyright (C) 1996 Paul Mackerras |
* Copyright (C) 1996 Paul Mackerras |
* Copyright (C) 2003-2009 Wayne Davison | * Copyright (C) 2003-2013 Wayne Davison |
* |
* |
* This program is free software; you can redistribute it and/or modify |
* This program is free software; you can redistribute it and/or modify |
* it under the terms of the GNU General Public License as published by |
* it under the terms of the GNU General Public License as published by |
Line 20
|
Line 20
|
*/ |
*/ |
|
|
#include "rsync.h" |
#include "rsync.h" |
#include "ifuncs.h" | #include "itypes.h" |
#include "zlib/zlib.h" | #include <zlib.h> |
|
|
|
#ifndef Z_INSERT_ONLY |
|
#define Z_INSERT_ONLY Z_SYNC_FLUSH |
|
#endif |
|
|
extern int do_compression; |
extern int do_compression; |
|
extern int protocol_version; |
extern int module_id; |
extern int module_id; |
extern int def_compress_level; |
extern int def_compress_level; |
extern char *skip_compress; |
extern char *skip_compress; |
Line 308 send_deflated_token(int f, int32 token, struct map_str
|
Line 313 send_deflated_token(int f, int32 token, struct map_str
|
Z_DEFLATED, -15, 8, |
Z_DEFLATED, -15, 8, |
Z_DEFAULT_STRATEGY) != Z_OK) { |
Z_DEFAULT_STRATEGY) != Z_OK) { |
rprintf(FERROR, "compression init failed\n"); |
rprintf(FERROR, "compression init failed\n"); |
exit_cleanup(RERR_STREAMIO); | exit_cleanup(RERR_PROTOCOL); |
} |
} |
if ((obuf = new_array(char, OBUF_SIZE)) == NULL) |
if ((obuf = new_array(char, OBUF_SIZE)) == NULL) |
out_of_memory("send_deflated_token"); |
out_of_memory("send_deflated_token"); |
Line 411 send_deflated_token(int f, int32 token, struct map_str
|
Line 416 send_deflated_token(int f, int32 token, struct map_str
|
toklen -= n1; |
toklen -= n1; |
tx_strm.next_in = (Bytef *)map_ptr(buf, offset, n1); |
tx_strm.next_in = (Bytef *)map_ptr(buf, offset, n1); |
tx_strm.avail_in = n1; |
tx_strm.avail_in = n1; |
tx_strm.next_out = (Bytef *) obuf; | if (protocol_version >= 31) /* Newer protocols avoid a data-duplicating bug */ |
tx_strm.avail_out = AVAIL_OUT_SIZE(CHUNK_SIZE); | offset += n1; |
r = deflate(&tx_strm, Z_INSERT_ONLY); | do { |
if (r != Z_OK || tx_strm.avail_in != 0) { | tx_strm.next_out = (Bytef *) obuf; |
rprintf(FERROR, "deflate on token returned %d (%d bytes left)\n", | tx_strm.avail_out = AVAIL_OUT_SIZE(CHUNK_SIZE); |
r, tx_strm.avail_in); | r = deflate(&tx_strm, Z_INSERT_ONLY); |
exit_cleanup(RERR_STREAMIO); | if (r != Z_OK) { |
} | 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); |
} while (toklen > 0); |
} while (toklen > 0); |
} |
} |
} |
} |
Line 452 static int32 recv_deflated_token(int f, char **data)
|
Line 461 static int32 recv_deflated_token(int f, char **data)
|
rx_strm.zfree = NULL; |
rx_strm.zfree = NULL; |
if (inflateInit2(&rx_strm, -15) != Z_OK) { |
if (inflateInit2(&rx_strm, -15) != Z_OK) { |
rprintf(FERROR, "inflate init failed\n"); |
rprintf(FERROR, "inflate init failed\n"); |
exit_cleanup(RERR_STREAMIO); | exit_cleanup(RERR_PROTOCOL); |
} |
} |
if (!(cbuf = new_array(char, MAX_DATA_COUNT)) |
if (!(cbuf = new_array(char, MAX_DATA_COUNT)) |
|| !(dbuf = new_array(char, AVAIL_OUT_SIZE(CHUNK_SIZE)))) |
|| !(dbuf = new_array(char, AVAIL_OUT_SIZE(CHUNK_SIZE)))) |
Line 593 static void see_deflate_token(char *buf, int32 len)
|
Line 602 static void see_deflate_token(char *buf, int32 len)
|
} else { |
} else { |
rx_strm.next_in = (Bytef *)buf; |
rx_strm.next_in = (Bytef *)buf; |
rx_strm.avail_in = blklen; |
rx_strm.avail_in = blklen; |
|
if (protocol_version >= 31) /* Newer protocols avoid a data-duplicating bug */ |
|
buf += blklen; |
len -= blklen; |
len -= blklen; |
blklen = 0; |
blklen = 0; |
} |
} |