You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bugs@httpd.apache.org by bu...@apache.org on 2019/02/20 17:39:40 UTC

[Bug 63192] New: mod_ratelimit breaks HEAD requests

https://bz.apache.org/bugzilla/show_bug.cgi?id=63192

            Bug ID: 63192
           Summary: mod_ratelimit breaks HEAD requests
           Product: Apache httpd-2
           Version: 2.4.38
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: major
          Priority: P2
         Component: mod_ratelimit
          Assignee: bugs@httpd.apache.org
          Reporter: jean@phpnet.org
  Target Milestone: ---

Since upgrading to 2.4.34, mod_ratelimit breaks HEAD requests, the problem
still exists in 2.4.38.

Doing a HEAD on a simple text file containing "ok" does fail each time while a
GET on the same URL does work (most of the time at least).
Also to note that rate limiting on GET requests does work as expected and that
setting a rate-initial-burst superior to the request size doesnt fix the issue.

$ curl -I -vvv http://server.local/check
*   Trying 10.xx.xxx.92...
* TCP_NODELAY set
* Connected to server.local (10.xx.xxx.92) port 80 (#0)
> HEAD /check HTTP/1.1
> Host: server.local
> User-Agent: curl/7.61.0
> Accept: */*
> 
* Empty reply from server
* Connection #0 to host server.local left intact
curl: (52) Empty reply from server

The trace log :
[Wed Feb 20 17:53:38.867696 2019] [core:trace5] [pid 101123] protocol.c(710):
[client 10.xx.xxx.20:60016] Request received from client: HEAD /check HTTP/1.1
[Wed Feb 20 17:53:38.867803 2019] [http:trace4] [pid 101123]
http_request.c(437): [client 10.xx.xxx.20:60016] Headers received from client:
[Wed Feb 20 17:53:38.867814 2019] [http:trace4] [pid 101123]
http_request.c(441): [client 10.xx.xxx.20:60016]   Host: server.local
[Wed Feb 20 17:53:38.867820 2019] [http:trace4] [pid 101123]
http_request.c(441): [client 10.xx.xxx.20:60016]   User-Agent: curl/7.61.0
[Wed Feb 20 17:53:38.867826 2019] [http:trace4] [pid 101123]
http_request.c(441): [client 10.xx.xxx.20:60016]   Accept: */*
[Wed Feb 20 17:53:38.867976 2019] [authz_core:debug] [pid 101123]
mod_authz_core.c(846): [client 10.xx.xxx.20:60016] AH01628: authorization
result: granted (no directives)
[Wed Feb 20 17:53:38.867986 2019] [core:trace3] [pid 101123] request.c(304):
[client 10.xx.xxx.20:60016] request authorized without authentication by
access_checker_ex hook: /check
[Wed Feb 20 17:53:38.868056 2019] [http:trace3] [pid 101123]
http_filters.c(1128): [client 10.xx.xxx.20:60016] Response sent with status
200, headers:
[Wed Feb 20 17:53:38.868065 2019] [http:trace5] [pid 101123]
http_filters.c(1135): [client 10.xx.xxx.20:60016]   Date: Wed, 20 Feb 2019
16:53:38 GMT
[Wed Feb 20 17:53:38.868071 2019] [http:trace5] [pid 101123]
http_filters.c(1138): [client 10.xx.xxx.20:60016]   Server: Apache/2.4.38
(Unix)
[Wed Feb 20 17:53:38.868079 2019] [http:trace4] [pid 101123]
http_filters.c(957): [client 10.xx.xxx.20:60016]   Last-Modified: Sat, 23 Dec
2006 07:40:14 GMT
[Wed Feb 20 17:53:38.868085 2019] [http:trace4] [pid 101123]
http_filters.c(957): [client 10.xx.xxx.20:60016]   ETag: \"3-42540accb9380\"
[Wed Feb 20 17:53:38.868091 2019] [http:trace4] [pid 101123]
http_filters.c(957): [client 10.xx.xxx.20:60016]   Accept-Ranges: bytes
[Wed Feb 20 17:53:38.868096 2019] [http:trace4] [pid 101123]
http_filters.c(957): [client 10.xx.xxx.20:60016]   Content-Length: 3
[Wed Feb 20 17:53:38.868113 2019] [ratelimit:debug] [pid 101123]
mod_ratelimit.c(196): [client 10.xx.xxx.20:60016] AH03485: rl: burst 1048576;
len 198
[Wed Feb 20 17:53:38.868131 2019] [core:trace8] [pid 101123]
core_filters.c(580): [client 10.xx.xxx.20:60016] brigade contains: bytes: 0,
non-file bytes: 0, eor buckets: 1, morphing buckets: 0
[Wed Feb 20 17:53:38.868157 2019] [core:trace6] [pid 101123]
core_filters.c(525): [client 10.xx.xxx.20:60016] will flush because of FLUSH
bucket
[Wed Feb 20 17:53:38.868164 2019] [core:trace8] [pid 101123]
core_filters.c(535): [client 10.xx.xxx.20:60016] seen in brigade so far: bytes:
0, non-file bytes: 0, eor buckets: 0, morphing buckets: 0
[Wed Feb 20 17:53:38.868171 2019] [core:trace8] [pid 101123]
core_filters.c(554): [client 10.xx.xxx.20:60016] flushing now
[Wed Feb 20 17:53:38.868177 2019] [core:trace8] [pid 101123]
core_filters.c(569): [client 10.xx.xxx.20:60016] total bytes written: 0
[Wed Feb 20 17:53:38.868183 2019] [core:trace8] [pid 101123]
core_filters.c(580): [client 10.xx.xxx.20:60016] brigade contains: bytes: 0,
non-file bytes: 0, eor buckets: 0, morphing buckets: 0
[Wed Feb 20 17:53:39.034116 2019] [core:trace4] [pid 101117] mpm_common.c(536):
mpm child 101282 (gen 0/slot 5) started
[Wed Feb 20 17:53:43.873359 2019] [core:trace6] [pid 101123]
core_filters.c(525): [client 10.xx.xxx.20:60016] will flush because of FLUSH
bucket
[Wed Feb 20 17:53:43.873420 2019] [core:trace8] [pid 101123]
core_filters.c(535): [client 10.xx.xxx.20:60016] seen in brigade so far: bytes:
0, non-file bytes: 0, eor buckets: 0, morphing buckets: 0
[Wed Feb 20 17:53:43.873428 2019] [core:trace8] [pid 101123]
core_filters.c(554): [client 10.xx.xxx.20:60016] flushing now
[Wed Feb 20 17:53:43.873434 2019] [core:trace8] [pid 101123]
core_filters.c(569): [client 10.xx.xxx.20:60016] total bytes written: 0
[Wed Feb 20 17:53:43.873440 2019] [core:trace8] [pid 101123]
core_filters.c(580): [client 10.xx.xxx.20:60016] brigade contains: bytes: 0,
non-file bytes: 0, eor buckets: 0, morphing buckets: 0

$ httpd -V
Server version: Apache/2.4.38 (Unix)
Server built:   Feb 20 2019 16:57:03
Server's Module Magic Number: 20120211:83
Server loaded:  APR 1.5.2, APR-UTIL 1.5.4
Compiled using: APR 1.5.2, APR-UTIL 1.5.4
Architecture:   64-bit
Server MPM:     prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/home/apache"
 -D SUEXEC_BIN="/home/apache/bin/suexec"
 -D DEFAULT_PIDLOG="logs/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

httpd.conf :
ServerRoot "/home/apache"
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule ratelimit_module modules/mod_ratelimit.so
LoadModule env_module modules/mod_env.so
LoadModule unixd_module modules/mod_unixd.so
User www-data
Group www-data
DocumentRoot "/home/test/www"
ErrorLog "/tmp/error.log"
LogLevel trace8
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 10240
SetEnv rate-initial-burst 1024

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org


[Bug 63192] mod_ratelimit breaks HEAD requests

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=63192

Yann Ylavic <yl...@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |FixedInTrunk

--- Comment #7 from Yann Ylavic <yl...@gmail.com> ---
Thanks for testing, committed to trunk (r1854004).

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org


[Bug 63192] mod_ratelimit breaks HEAD requests

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=63192

--- Comment #2 from Jean Weisbuch <je...@phpnet.org> ---
(In reply to Christophe JAILLET from comment #1)
> > Since upgrading to 2.4.34
> 
> In order to help diagnose the potential regression, which version were you
> using before the upgrade?

It first appeared with 2.4.34 if i recall correctly, still happens on both
2.4.37 and 2.4.38.

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org


[Bug 63192] mod_ratelimit breaks HEAD requests

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=63192

--- Comment #3 from Christophe JAILLET <ch...@wanadoo.fr> ---
The only modification that occurred in mod_ratelimit in 2.4.34 is r1835168.

I've reverted this commit and the behavior looks correct again (i.e. curl does
not exits with "(52) Empty reply from server")

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org


[Bug 63192] mod_ratelimit breaks HEAD requests

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=63192

--- Comment #5 from Yann Ylavic <yl...@gmail.com> ---
Created attachment 36449
  --> https://bz.apache.org/bugzilla/attachment.cgi?id=36449&action=edit
Don't eat EOS in ap_http_header_filter() for single brigade HEAD responses
(2.4.x)

This version applies to 2.4.x branch.

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org


[Bug 63192] mod_ratelimit breaks HEAD requests

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=63192

--- Comment #6 from Jean Weisbuch <je...@phpnet.org> ---
(In reply to Yann Ylavic from comment #4)
> Created attachment 36448 [details]
> Don't eat EOS in ap_http_header_filter() for single brigade HEAD responses
> (trunk)
> 
> Does this patch work?

The 2.4.x version seems to fix the issue on 2.4.38, thanks.

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org


[Bug 63192] mod_ratelimit breaks HEAD requests

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=63192

Yann Ylavic <yl...@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #36448|Don't eat EOS in            |Don't eat EOS in
        description|ap_http_header_filter() for |ap_http_header_filter() for
                   |single brigade HEAD         |single brigade HEAD
                   |responses                   |responses (trunk)

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org


[Bug 63192] mod_ratelimit breaks HEAD requests

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=63192

Yann Ylavic <yl...@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
             Status|NEW                         |RESOLVED

--- Comment #8 from Yann Ylavic <yl...@gmail.com> ---
Backported to 2.4.x, will be in upcoming 2.4.39.

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org


[Bug 63192] mod_ratelimit breaks HEAD requests

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=63192

--- Comment #1 from Christophe JAILLET <ch...@wanadoo.fr> ---
> Since upgrading to 2.4.34

In order to help diagnose the potential regression, which version were you
using before the upgrade?

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org


[Bug 63192] mod_ratelimit breaks HEAD requests

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=63192

--- Comment #4 from Yann Ylavic <yl...@gmail.com> ---
Created attachment 36448
  --> https://bz.apache.org/bugzilla/attachment.cgi?id=36448&action=edit
Don't eat EOS in ap_http_header_filter() for single brigade HEAD responses

Does this patch work?

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org


[Bug 63192] mod_ratelimit breaks HEAD requests

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=63192

Ruediger Pluem <rp...@apache.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |marcin@marcinwilk.eu

--- Comment #9 from Ruediger Pluem <rp...@apache.org> ---
*** Bug 65636 has been marked as a duplicate of this bug. ***

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org