A multistep compress is required here, so we need the full arsenal of compress helpers. Signed-off-by: Marco Costalba <mcostalba@xxxxxxxxx> --- http-push.c | 22 ++++++++-------------- 1 files changed, 8 insertions(+), 14 deletions(-) diff --git a/http-push.c b/http-push.c index b2b410d..a7997ec 100644 --- a/http-push.c +++ b/http-push.c @@ -1,5 +1,6 @@ #include "cache.h" #include "commit.h" +#include "compress.h" #include "pack.h" #include "tag.h" #include "blob.h" @@ -491,31 +492,24 @@ static void start_put(struct transfer_request *request) hdrlen = sprintf(hdr, "%s %lu", typename(type), len) + 1; /* Set it up */ - memset(&stream, 0, sizeof(stream)); - deflateInit(&stream, zlib_compression_level); - size = deflateBound(&stream, len + hdrlen); + size = compress_alloc(&stream, zlib_compression_level, len + hdrlen); strbuf_init(&request->buffer.buf, size); request->buffer.posn = 0; /* Compress it */ - stream.next_out = (unsigned char *)request->buffer.buf.buf; - stream.avail_out = size; + compress_start(&stream, (void *)hdr, hdrlen, + (unsigned char *)request->buffer.buf.buf, size); /* First header.. */ - stream.next_in = (void *)hdr; - stream.avail_in = hdrlen; - while (deflate(&stream, 0) == Z_OK) - /* nothing */; + compress_next(&stream, Z_NO_FLUSH); /* Then the data itself.. */ stream.next_in = unpacked; stream.avail_in = len; - while (deflate(&stream, Z_FINISH) == Z_OK) - /* nothing */; - deflateEnd(&stream); - free(unpacked); + compress_next(&stream, Z_FINISH); - request->buffer.buf.len = stream.total_out; + request->buffer.buf.len = compress_free(&stream); + free(unpacked); request->url = xmalloc(strlen(remote->url) + strlen(request->lock->token) + 51); -- 1.5.4.rc4.39.g524a - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html