]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MAJOR: compression: Be sure to release the compression state in all cases
authorChristopher Faulet <cfaulet@haproxy.com>
Mon, 26 Jun 2017 09:47:13 +0000 (11:47 +0200)
committerWilly Tarreau <w@1wt.eu>
Fri, 30 Jun 2017 12:05:29 +0000 (14:05 +0200)
commitd60b3cf43191488b0dece7000e7da94be981ba1a
treea6d12a9edda7cb53528a32380e4313b518899475
parent8d85aa44dabb772cf99360c41143486875f3e383
BUG/MAJOR: compression: Be sure to release the compression state in all cases

This patch fixes an obvious memory leak in the compression filter. The
compression state (comp_state) is allocated when a HTTP transaction starts, in
channel_start_analyze callback, Whether we are able to compression the response
or not. So it must be released when the transaction ends, in channel_end_analyze
callback.

But there is a bug here. The state is released on the response side only. So, if
a transaction ends before the response is started, it is never released. This
happens when a connection is closed before the response is started.

To fix the bug, statistics about the HTTP compression are now updated in
http_end callback, when the response parsing ends.  It happens only if no error
is encountered and when the response is compressed. So, it is safe to release
the compression state in channel_end_analyze callback, regardless the
channel's type.

This patch must be backported in 1.7.
src/flt_http_comp.c