diff options
author | Eric Wong <e@80x24.org> | 2019-09-26 00:36:27 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2019-09-26 00:36:27 +0000 |
commit | a6c9366f6d8ebb0a8716a198c4e40bb339aef766 (patch) | |
tree | cdd8ba36bd5fda63a612907b446554a783a3e3f3 /lib | |
parent | 17bec61580fe1eab9b60b01d990af9046a1cb031 (diff) | |
download | public-inbox-p516-leak.tar.gz |
httpd: disable Deflater middleware by default on Perl <5.18 p516-leak
Testing with perl-5.16.3-294.el7_6 RPM package on RHEL/CentOS 7, the Deflater middleware triggers a leak when used in conjunction with our push-based responses from PublicInbox::Qspawn. I could not find another solution to workaround the memory leak in this case, and I could not find a specific leak fix in the perl5180delta manpage[1] which looked like it would solve our problem. Attempting to workaround the issue proved futile. Using internal Deflater-specific keys to prevent deflating in GitHTTPBackend and Qspawn did not solve the problem: $env->{"plack.skip-deflater"} = 1; $env->{"psgix.no-compress"} = 1; Nor did forcing an invalid encoding via "git fetch": git -c http.extraheader=Accept-Encoding:gzap fetch So this appears to be a problem with Plack::Util::response_cb somewhere. This does NOT appear to be a problem with ref() leaking as in DS::next_tick[2], since I couldn't find where Plack::Middleware::Deflater or Plack::Util::response_cb would be calling ref() on a blessed reference to trigger a leak. Also, oddly enough, the ref() use for backwards compatibility at the top of PublicInbox::GitHTTPBackend::serve does NOT seem to trigger a leak on 5.16.3 due to [2]: # XXX compatibility... ugh, can we stop supporting this? $git = PublicInbox::Git->new($git) unless ref($git); [1] https://perldoc.perl.org/perl5180delta.html [2] https://rt.perl.org/Public/Bug/Display.html?id=114340
Diffstat (limited to 'lib')
0 files changed, 0 insertions, 0 deletions