Bug 1242416

Summary: Apache httpd ProxyPass connectiontimeout parameter does not have effect when proxying to AJP back-end
Product: Red Hat Enterprise Linux 7 Reporter: Janne Snabb <janne.snabb>
Component: httpdAssignee: Luboš Uhliarik <luhliari>
Status: CLOSED ERRATA QA Contact: Martin Frodl <mfrodl>
Severity: low Docs Contact:
Priority: unspecified    
Version: 7.1CC: isenfeld, janne.snabb, jkaluza, jorton
Target Milestone: rcKeywords: Regression
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: httpd-2.4.6-36.el7 Doc Type: Bug Fix
Doc Text:
Cause: mod_proxy_ajp created proxy worker with wrong name when the default AJP port (8009) has been explicitely used in the ProxyPass definition. Consequence: All additional settings set using mentioned ProxyPass directive has been ignored (They have been set to worker with wrong name). Fix: mod_proxy_ajp now creates proxy worker with the proper name in mentioned situation. Result: Additional settings set using ProxyPass directive are not ignored anymore.
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-11-19 04:38:20 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Janne Snabb 2015-07-13 09:51:15 UTC
Description of problem:


Version-Release number of selected component (if applicable): 2.4.6-31


How reproducible: always


Steps to Reproduce:
1. Install clean CentOS/RHEL 7 in virtual machine 
2. Install Apache httpd: 
# yum install httpd 
3. Setup Apache to proxy requests with AJP: 
# echo "ProxyPass / ajp://10.66.66.66:8009/ connectiontimeout=10" >> /etc/httpd/conf/httpd.conf 
4. Ensure that the SYN packets to the proxy disappear in black hole: 
# iptables -I OUTPUT -d 10.66.66.66 -j DROP 
5. Start Apache httpd: 
# systemctl start httpd 
6. Make a request to Apache httpd and measure the time taken: 
# time curl http://127.0.0.1:80/ 


Actual results:
It takes 60 seconds until an error is returned. This indicates that the connection timeout of 10 seconds is not honored. 

Expected results:
The error should be returned in 10 seconds as we have defined a 10 second connection timeout.

Additional info:

Connection timeout is correctly honored when using HTTP back-end. If the step 3 above is replaced with the following, there is no problem:

echo "ProxyPass / http://10.66.66.66:8080/ connectiontimeout=10" >> /etc/httpd/conf/httpd.conf


This bug does not exist with vanilla Apache httpd 2.4.12 compiled from sources. It honors "connectiontimeout=10" when using AJP. Thus no need to file bug with the upstream.


It appears that the breakage is caused by Red Hat patch httpd-2.4.6-uds.patch. If I comment the line "%patch37 -p1 -b .uds" in httpd.spec and rebuild the RPM package there is no problem any more.

Comment 2 Janne Snabb 2015-07-13 11:11:04 UTC
I believe that this is a regression introduced by the UDS patch in RHBA-2015:0029-1 / RHSA-2015:0325-2 / BZ#1170286 / BZ#1168081.

Comment 3 Jan Kaluža 2015-07-13 14:37:38 UTC
This has been fixed upstream in <http://svn.apache.org/r1650655>.

Comment 5 Joe Orton 2015-07-13 15:35:32 UTC
Thanks for the report Janne, please open a ticket with Red Hat support if you would like a test package to confirm the fix.

Comment 12 errata-xmlrpc 2015-11-19 04:38:20 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2015-2194.html