{"thread":{"id":"11578","subject":"[PATCH 4/5] Use new compress helpers in http-push.c","startedAt":"2008-01-11T07:39:45Z","lastAt":"2008-01-11T15:39:41Z","messageCount":2,"participants":["Marco Costalba","Kristian Høgsberg"],"isPatch":true,"patchVersion":1,"patchTotal":5},"messages":[{"id":"64992","messageId":"e5bfff550801102339o757eea62h40b5e00cd904f7e1@mail.gmail.com","threadId":"11578","inReplyTo":null,"subject":"[PATCH 4/5] Use new compress helpers in http-push.c","fromName":"Marco Costalba","fromEmail":"mcostalba@gmail.com","sentAt":"2008-01-11T07:39:45Z","receivedAt":"2008-01-11T07:39:45Z","isPatch":true,"sender":{"key":"mcostalba@gmail.com","avatar":null},"body":"A multistep compress is required here, so\nwe need the full arsenal of compress helpers.\n\nSigned-off-by: Marco Costalba <mcostalba@gmail.com>\n---\n http-push.c |   22 ++++++++--------------\n 1 files changed, 8 insertions(+), 14 deletions(-)\n\ndiff --git a/http-push.c b/http-push.c\nindex 55d0c94..b7fe57f 100644\n--- a/http-push.c\n+++ b/http-push.c\n@@ -1,5 +1,6 @@\n #include \"cache.h\"\n #include \"commit.h\"\n+#include \"compress.h\"\n #include \"pack.h\"\n #include \"tag.h\"\n #include \"blob.h\"\n@@ -491,31 +492,24 @@ static void start_put(struct transfer_request\n \thdrlen = sprintf(hdr, \"%s %lu\", typename(type), len) + 1;\n\n \t/* Set it up */\n-\tmemset(&stream, 0, sizeof(stream));\n-\tdeflateInit(&stream, zlib_compression_level);\n-\tsize = deflateBound(&stream, len + hdrlen);\n+\tsize = compress_alloc(&stream, zlib_compression_level, len + hdrlen);\n \tstrbuf_init(&request->buffer.buf, size);\n \trequest->buffer.posn = 0;\n\n \t/* Compress it */\n-\tstream.next_out = (unsigned char *)request->buffer.buf.buf;\n-\tstream.avail_out = size;\n+\tcompress_start(&stream, (void *)hdr, hdrlen,\n+                      (unsigned char *)request->buffer.buf.buf, size);\n\n \t/* First header.. */\n-\tstream.next_in = (void *)hdr;\n-\tstream.avail_in = hdrlen;\n-\twhile (deflate(&stream, 0) == Z_OK)\n-\t\t/* nothing */;\n+\tcompress_next(&stream, Z_NO_FLUSH);\n\n \t/* Then the data itself.. */\n \tstream.next_in = unpacked;\n \tstream.avail_in = len;\n-\twhile (deflate(&stream, Z_FINISH) == Z_OK)\n-\t\t/* nothing */;\n-\tdeflateEnd(&stream);\n-\tfree(unpacked);\n+\tcompress_next(&stream, Z_FINISH);\n\n-\trequest->buffer.buf.len = stream.total_out;\n+\trequest->buffer.buf.len = compress_free(&stream);\n+\tfree(unpacked);\n\n \trequest->url = xmalloc(strlen(remote->url) +\n \t\t\t       strlen(request->lock->token) + 51);\n-- \n1.5.4.rc2.89.g1b3f-dirty\n"},{"id":"65028","messageId":"1200065981.18570.8.camel@gaara.boston.redhat.com","threadId":"11578","inReplyTo":"e5bfff550801102339o757eea62h40b5e00cd904f7e1@mail.gmail.com","subject":"Re: [PATCH 4/5] Use new compress helpers in http-push.c","fromName":"Kristian Høgsberg","fromEmail":"krh@redhat.com","sentAt":"2008-01-11T15:39:41Z","receivedAt":"2008-01-11T15:39:41Z","isPatch":true,"sender":{"key":"krh@redhat.com","avatar":"https://gravatar.com/avatar/763dee6f9594ac474f725b137a39565792928e583ddf59b32befc2907409027e?d=mp&s=160"},"body":"On Fri, 2008-01-11 at 08:39 +0100, Marco Costalba wrote:\n> A multistep compress is required here, so\n> we need the full arsenal of compress helpers.\n> \n> Signed-off-by: Marco Costalba <mcostalba@gmail.com>\n> ---\n>  http-push.c |   22 ++++++++--------------\n>  1 files changed, 8 insertions(+), 14 deletions(-)\n> \n> diff --git a/http-push.c b/http-push.c\n> index 55d0c94..b7fe57f 100644\n> --- a/http-push.c\n> +++ b/http-push.c\n> @@ -1,5 +1,6 @@\n>  #include \"cache.h\"\n>  #include \"commit.h\"\n> +#include \"compress.h\"\n>  #include \"pack.h\"\n>  #include \"tag.h\"\n>  #include \"blob.h\"\n> @@ -491,31 +492,24 @@ static void start_put(struct transfer_request\n>  \thdrlen = sprintf(hdr, \"%s %lu\", typename(type), len) + 1;\n> \n>  \t/* Set it up */\n> -\tmemset(&stream, 0, sizeof(stream));\n> -\tdeflateInit(&stream, zlib_compression_level);\n> -\tsize = deflateBound(&stream, len + hdrlen);\n> +\tsize = compress_alloc(&stream, zlib_compression_level, len + hdrlen);\n>  \tstrbuf_init(&request->buffer.buf, size);\n>  \trequest->buffer.posn = 0;\n> \n>  \t/* Compress it */\n> -\tstream.next_out = (unsigned char *)request->buffer.buf.buf;\n> -\tstream.avail_out = size;\n> +\tcompress_start(&stream, (void *)hdr, hdrlen,\n> +                      (unsigned char *)request->buffer.buf.buf, size);\n> \n>  \t/* First header.. */\n> -\tstream.next_in = (void *)hdr;\n> -\tstream.avail_in = hdrlen;\n> -\twhile (deflate(&stream, 0) == Z_OK)\n> -\t\t/* nothing */;\n> +\tcompress_next(&stream, Z_NO_FLUSH);\n\nHow about moving next_in and avail_in to be args of compress_next() so\nthe user doesn't have to deal with the z_stream object at all?  For\nexample:\n\n\tcompress_next(&stream, hdr, hdrlen, Z_NO_FLUSH);\n\nand of course remove them from the compress_start() function.\n\n>  \t/* Then the data itself.. */\n>  \tstream.next_in = unpacked;\n>  \tstream.avail_in = len;\n> -\twhile (deflate(&stream, Z_FINISH) == Z_OK)\n> -\t\t/* nothing */;\n> -\tdeflateEnd(&stream);\n> -\tfree(unpacked);\n> +\tcompress_next(&stream, Z_FINISH);\n\nThis whole chunk just becomes\n\n\tcompress_next(&stream, unpacked, len, Z_FINISH);\n\ncheers,\nKristian\n"}]}