Mailing List Archive

[Bug 63855] New: Regression in handling 100-continue after PR 60330
https://bz.apache.org/bugzilla/show_bug.cgi?id=63855

Bug ID: 63855
Summary: Regression in handling 100-continue after PR 60330
Product: Apache httpd-2
Version: 2.4.41
Hardware: Sun
OS: Solaris
Status: NEW
Severity: regression
Priority: P2
Component: mod_proxy_http
Assignee: bugs@httpd.apache.org
Reporter: k.j.chernov@gmail.com
Target Milestone: ---

Hello.

We are using 64-bit Apache 2.4.41 on Solaris SPARC.
After attempted migration from 2.4.33, we were forced to rollback because of
the way 100-continue is handled after PR 60330.

We have apache running as a reverse proxy, with Apache Tomcat as backend.
After receiving a request with "Expect: 100-Continue", when the client is
waiting for "100-Continue" before sending any request body, the apache is not
sending any request to tomcat, and is not sending a 100-Continue to the client
either.

It's very easy to reproduce:
{code}
openssl s_client -connect host:port -cert prv_key.pem -key prv_key.key
POST /service HTTP/1.1
Host: host:port
Content-Type: text/plain
Content-Length: 1
Expect: 100-Continue

{code}

After last \r\n the client is expecting to see "HTTP/1.1 100 Continue", however
apache is never sending it to the client.
However, if I enter any character after last \r\n, the reply is correct (the
415 is fine in this case):
{code}
...
Content-Type: text/plain
Expect: 100-Continue
Content-Length: 1

1
HTTP/1.1 100 Continue

HTTP/1.1 415 Unsupported Media Type
Date: Wed, 16 Oct 2019 01:27:37 GMT
Server: Apache-Coyote/1.1
Content-Length: 0
{code}

When I run a snoop (tcpdump), I never see any packets going to the backend
until I enter a request body.

But the problem disappears when I add:
{code}
SetEnv proxy-sendchunks 1
{code}

Can you please help me to figure out why is this happening, and is there any
'correct' ways to handle this bug? Maybe, it's possible to make another
environment variable to turn on the 100-continue answers from the apache as it
was before PR 60330?

Thank you very much in advance.

Our configuration (relevant to this case):
{code}
HttpProtocolOptions Unsafe LenientMethods Allow0.9

SetEnv proxy-initial-not-pooled 1
SetEnv force-response-1.0 1

SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
SetEnvIf Request_Protocol HTTP/1.0$ force-proxy-request-1.0=1

<Proxy balancer://hostPORT>
BalancerMember http://host1:PORT connectiontimeout=5 timeout=30 retry=30
ping=3 route=1 loadfactor=1
BalancerMember http://host2:PORT connectiontimeout=5 timeout=30 retry=30
ping=3 route=2 loadfactor=1
</Proxy>

<Location /service>
ProxyPass balancer://hostPORT/service
ProxyPassReverse balancer://hostPORT/service
</Location>
{code}

--
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