Bug 66373 - Multi chunk post data does not arrive
Summary: Multi chunk post data does not arrive
Status: NEW
Alias: None
Product: Apache httpd-2
Classification: Unclassified
Component: mod_proxy_fcgi (show other bugs)
Version: 2.4.54
Hardware: PC Linux
: P1 major with 3 votes (vote)
Target Milestone: ---
Assignee: Apache HTTPD Bugs Mailing List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-12-02 09:46 UTC by Torge Kummerow
Modified: 2022-12-05 09:11 UTC (History)
0 users



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Torge Kummerow 2022-12-02 09:46:35 UTC
If I make a POST request to apache configured with event/fpm which is chunked and has more than 1 chunk, then the data does not arrive at the php script.

If I use prefork instead of event/fpm all works fine

If I make a non chunked request, or a chunked request with only one chunk, all is fine as well.

To reproduce use CURL with post data larger than 64kb


Works fine (non chunked request):
curl -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" -X POST -d @postdata.dat "http://test.website.de/test.php"

Failes (chunked request):
curl  -H "Transfer-Encoding: chunked" -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" -X POST -d @postdata.dat "http://test.website.de/test.php"

Works fine (chunked but < 64kb):
curl  -H "Transfer-Encoding: chunked" -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" -X POST -d @postdata_small.dat "http://test.website.de/test.php"

Note that php://input as well as $_POST is empty when it fails.

I noticed this as some of our clients chunk POST requests already after 1024Kb


I am using 2.4.54 

httpd -V
[Fri Dec 02 09:39:38.916798 2022] [so:warn] [pid 11980:tid 140066409769152] AH01574: module systemd_module is already loaded, skipping
Server version: Apache/2.4.54 (codeit)
Server built:   Jun  8 2022 09:34:58
Server's Module Magic Number: 20120211:124
Server loaded:  APR 1.7.0, APR-UTIL 1.6.1, PCRE 10.23 2017-02-14
Compiled using: APR 1.7.0, APR-UTIL 1.6.1, PCRE 10.23 2017-02-14
Architecture:   64-bit
Server MPM:     event
  threaded:     yes (fixed thread count)
    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_PROC_PTHREAD_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="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="run/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"


apachectl -M
Loaded Modules:
 core_module (static)
 so_module (static)
 http_module (static)
 access_compat_module (shared)
 actions_module (shared)
 alias_module (shared)
 allowmethods_module (shared)
 auth_basic_module (shared)
 auth_digest_module (shared)
 authn_anon_module (shared)
 authn_core_module (shared)
 authn_dbd_module (shared)
 authn_dbm_module (shared)
 authn_file_module (shared)
 authn_socache_module (shared)
 authz_core_module (shared)
 authz_dbd_module (shared)
 authz_dbm_module (shared)
 authz_groupfile_module (shared)
 authz_host_module (shared)
 authz_owner_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 brotli_module (shared)
 cache_module (shared)
 cache_disk_module (shared)
 cache_socache_module (shared)
 data_module (shared)
 dbd_module (shared)
 deflate_module (shared)
 dir_module (shared)
 dumpio_module (shared)
 echo_module (shared)
 env_module (shared)
 expires_module (shared)
 ext_filter_module (shared)
 filter_module (shared)
 headers_module (shared)
 include_module (shared)
 info_module (shared)
 log_config_module (shared)
 logio_module (shared)
 macro_module (shared)
 mime_magic_module (shared)
 mime_module (shared)
 negotiation_module (shared)
 remoteip_module (shared)
 reqtimeout_module (shared)
 request_module (shared)
 rewrite_module (shared)
 setenvif_module (shared)
 slotmem_plain_module (shared)
 slotmem_shm_module (shared)
 socache_dbm_module (shared)
 socache_memcache_module (shared)
 socache_redis_module (shared)
 socache_shmcb_module (shared)
 status_module (shared)
 substitute_module (shared)
 suexec_module (shared)
 unique_id_module (shared)
 unixd_module (shared)
 userdir_module (shared)
 version_module (shared)
 vhost_alias_module (shared)
 watchdog_module (shared)
 dav_module (shared)
 dav_fs_module (shared)
 dav_lock_module (shared)
 lua_module (shared)
 mpm_event_module (shared)
 proxy_module (shared)
 lbmethod_bybusyness_module (shared)
 lbmethod_byrequests_module (shared)
 lbmethod_bytraffic_module (shared)
 lbmethod_heartbeat_module (shared)
 proxy_ajp_module (shared)
 proxy_balancer_module (shared)
 proxy_connect_module (shared)
 proxy_express_module (shared)
 proxy_fcgi_module (shared)
 proxy_fdpass_module (shared)
 proxy_ftp_module (shared)
 proxy_http_module (shared)
 proxy_hcheck_module (shared)
 proxy_scgi_module (shared)
 proxy_uwsgi_module (shared)
 proxy_wstunnel_module (shared)
 ssl_module (shared)
 systemd_module (shared)
 cgid_module (shared)
 perl_module (shared)
 fcgid_module (shared)
 php7_module (shared)
 apreq_module (shared)



php.conf:

<IfModule  mod_php7.c>

    # Tell the PHP interpreter to handle files with a .php extension.

    # Proxy declaration
    <Proxy "fcgi://localhost/">

    # we must declare a parameter in here (doesn't matter which) or it'll not register the proxy ahead of time
    	ProxySet disablereuse=off 	
    </Proxy>

    # Redirect to the proxy
    <FilesMatch \.php$>
	SetHandler "proxy:fcgi://localhost:9000"
    </FilesMatch>

</IfModule>
Comment 1 Torge Kummerow 2022-12-02 10:28:05 UTC
When looking for others having this problem it seems to always end up with them using NGINX. And indeed, when using NGINX it works fine. So FPM seems to not be the issue here, but really apache.