diff --git a/CHANGES b/CHANGES
index d12ddb3af5987ef8b383f28fda6f404ff21d7dd3..b68d49bdb05f3a7db0b9107d410c3abc00633f63 100644
--- a/CHANGES
+++ b/CHANGES
@@ -7,6 +7,11 @@
                                   Changelog
 
 Daniel Stenberg (11 May 2009)
+- Balint Szilakszi reported a memory leak when libcurl did gzip decompression
+  of streams that had some parts (legitimately) missing. We now provide and use
+  a proper cleanup function for the content encoding submodule.
+  http://curl.haxx.se/mail/lib-2009-05/0092.html
+
 - Kamil Dudka provided a fix for libcurl-NSS reported by Michael Cronenworth
   at https://bugzilla.redhat.com/show_bug.cgi?id=453612#c12
 
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index e3b82bc0234251e920f550ab406e4f9fa6a291d6..57dcac95a7fe0acc297856cb04bf10fc119c2ea1 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -46,6 +46,7 @@ This release includes the following bugfixes:
  o fixed the Curl_getoff_all_pipelines SIGSEGV 
  o POST, NTLM and following a redirect hang
  o libcurl+NSS endless loop on incorrect password for private key
+ o gzip decompression memory leak
 
 This release includes the following known bugs:
 
@@ -59,6 +60,7 @@ advice from friends like these:
  Kamil Dudka, Jim Freeman, Daniel Johnson, Toshio Kuratomi, Martin Storsjo,
  Pramod Sharma, Gisle Vanem, Lenaic Lefever, Rainer Koenig, Sven Wegener,
  Tim Chen, Constantine Sapuntzakis, David McCreedy, Michael Smith,
- Colin Watson, Ebenezer Ikonne, Laurent Rabret, Michael Cronenworth
+ Colin Watson, Ebenezer Ikonne, Laurent Rabret, Michael Cronenworth,
+ Balint Szilakszi
 
         Thanks! (and sorry if I forgot to mention someone)
diff --git a/TODO-RELEASE b/TODO-RELEASE
index d03401419950b378492066437dd7b8c81dc9eedb..3d2d4bbdf1bde0a6e989cae0ac442272c0d4e0c1 100644
--- a/TODO-RELEASE
+++ b/TODO-RELEASE
@@ -9,10 +9,12 @@ To be addressed in 7.19.5 (planned release: May 2009)
       - awaiting patch rework/breakdown
 
 235 - #2784055, connect race with multi and socks proxy
+      Code adjustment for FTP over socks proxy remains
 
 236 - timeout in milliseconds doesn't seem to work
+      http://curl.haxx.se/mail/lib-2009-05/0021.html
 
-239 -
+240 - 
 
 To be addressed in 7.19.6 (planned release: July 2009)
 =========================
diff --git a/lib/content_encoding.c b/lib/content_encoding.c
index 411f21337eef142af27d579b66baaa0a7a95a468..08cf1dccc3646a6d96c5674deea571684567b4f1 100644
--- a/lib/content_encoding.c
+++ b/lib/content_encoding.c
@@ -414,4 +414,14 @@ Curl_unencode_gzip_write(struct connectdata *conn,
   return inflate_stream(conn, k);
 #endif
 }
+
+void Curl_unencode_cleanup(struct connectdata *conn)
+{
+  struct SessionHandle *data = conn->data;
+  struct SingleRequest *k = &data->req;
+  z_stream *z = &k->z;
+  if(k->zlib_init != ZLIB_UNINIT)
+    (void) exit_zlib(z, &k->zlib_init, CURLE_OK);
+}
+
 #endif /* HAVE_LIBZ */
diff --git a/lib/content_encoding.h b/lib/content_encoding.h
index aa51420db1fb5b9878b20f9943e5325898f1033e..5e1db65a7e5f25228afa4ac72f7be2a3cd62aab3 100644
--- a/lib/content_encoding.h
+++ b/lib/content_encoding.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -29,8 +29,11 @@
  */
 #ifdef HAVE_LIBZ
 #define ALL_CONTENT_ENCODINGS "deflate, gzip"
+/* force a cleanup */
+void Curl_unencode_cleanup(struct connectdata *conn);
 #else
 #define ALL_CONTENT_ENCODINGS "identity"
+#define Curl_unencode_cleanup(x)
 #endif
 
 CURLcode Curl_unencode_deflate_write(struct connectdata *conn,
@@ -42,4 +45,5 @@ Curl_unencode_gzip_write(struct connectdata *conn,
                          struct SingleRequest *k,
                          ssize_t nread);
 
+
 #endif
diff --git a/lib/http.c b/lib/http.c
index 9c020396c18aa6c5008da878cd4fb0c206acf859..a17c6eba9803a6d224ed8a3966b5ff72cba26ca1 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -97,6 +97,7 @@
 #include "strtoofft.h"
 #include "multiif.h"
 #include "rawstr.h"
+#include "content_encoding.h"
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
@@ -1917,6 +1918,8 @@ CURLcode Curl_http_done(struct connectdata *conn,
   struct HTTP *http =data->state.proto.http;
   (void)premature; /* not used */
 
+  Curl_unencode_cleanup(conn);
+
   /* set the proper values (possibly modified on POST) */
   conn->fread_func = data->set.fread_func; /* restore */
   conn->fread_in = data->set.in; /* restore */