I have continued some tests on 8.5.51 with PUT requests and Expect: 100
continue header from HttpClient 5.0.
I have noticed that the very same code code fragment kicks in in the
expect header evaluation when run as valve, but completely ignored when
run in a filter. Tomcat will simply signal the client to continue with
the request.
Valve:
[main] DEBUG org.apache.http.impl.execchain.MainClientExec - Proxy auth state:
UNCHALLENGED
[main] DEBUG org.apache.http.headers - http-outgoing-0 >> PUT /bb/repo/my.file
HTTP/1.1
[main] DEBUG org.apache.http.headers - http-outgoing-0 >> Content-Length: 15
[main] DEBUG org.apache.http.headers - http-outgoing-0 >> Host: localhost:8080
[main] DEBUG org.apache.http.headers - http-outgoing-0 >> Connection: Keep-Alive
[main] DEBUG org.apache.http.headers - http-outgoing-0 >> User-Agent:
Apache-HttpClient/4.5.11 (Java/1.7.0_252)
[main] DEBUG org.apache.http.headers - http-outgoing-0 >> Expect: 100-continue
[main] DEBUG org.apache.http.headers - http-outgoing-0 >> Accept-Encoding:
gzip,deflate
[main] DEBUG org.apache.http.wire - http-outgoing-0 >> "PUT /bb/repo/my.file
HTTP/1.1[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Content-Length:
15[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Host:
localhost:8080[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Connection:
Keep-Alive[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-0 >> "User-Agent:
Apache-HttpClient/4.5.11 (Java/1.7.0_252)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Expect:
100-continue[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Accept-Encoding:
gzip,deflate[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-0 >> "[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-0 << "HTTP/1.1 307 [\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-0 << "Location:
/bb/redirected/repo/my.file[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-0 << "Content-Length:
0[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-0 << "Date: Mon, 17 Feb 2020
20:11:54 GMT[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-0 << "Connection:
close[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-0 << "[\r][\n]"
[main] DEBUG org.apache.http.headers - http-outgoing-0 << HTTP/1.1 307
[main] DEBUG org.apache.http.headers - http-outgoing-0 << Location: /bb/redirected/repo/my.file
[main] DEBUG org.apache.http.headers - http-outgoing-0 << Content-Length: 0
[main] DEBUG org.apache.http.headers - http-outgoing-0 << Date: Mon, 17 Feb
2020 20:11:54 GMT
[main] DEBUG org.apache.http.headers - http-outgoing-0 << Connection: close
[main] DEBUG org.apache.http.impl.conn.DefaultManagedHttpClientConnection -
http-outgoing-0: Close connection
[main] DEBUG org.apache.http.impl.execchain.MainClientExec - Connection
discarded
[main] DEBUG org.apache.http.impl.conn.PoolingHttpClientConnectionManager -
Connection released: [id: 0][route: {}->http://localhost:8080][total available:
0; route allocated: 0 of 2; total allocated: 0 of 20]
[main] DEBUG org.apache.http.impl.execchain.RedirectExec - Redirecting to
'http://localhost:8080/bb/redirected/repo/my.file' via {}->http://localhost:8080
[main] DEBUG org.apache.http.client.protocol.RequestAddCookies - CookieSpec
selected: default
[main] DEBUG org.apache.http.client.protocol.RequestAuthCache - Auth cache not
set in the context
[main] DEBUG org.apache.http.impl.conn.PoolingHttpClientConnectionManager -
Connection request: [route: {}->http://localhost:8080][total available: 0;
route allocated: 0 of 2; total allocated: 0 of 20]
[main] DEBUG org.apache.http.impl.conn.PoolingHttpClientConnectionManager -
Connection leased: [id: 1][route: {}->http://localhost:8080][total available:
0; route allocated: 1 of 2; total allocated: 1 of 20]
[main] DEBUG org.apache.http.impl.execchain.MainClientExec - Opening connection
{}->http://localhost:8080
[main] DEBUG org.apache.http.impl.conn.DefaultHttpClientConnectionOperator -
Connecting to localhost/127.0.0.1:8080
[main] DEBUG org.apache.http.impl.conn.DefaultHttpClientConnectionOperator -
Connection established 127.0.0.1:57395<->127.0.0.1:8080
[main] DEBUG org.apache.http.impl.execchain.MainClientExec - Executing request
PUT /bb/redirected/repo/my.file HTTP/1.1
[main] DEBUG org.apache.http.impl.execchain.MainClientExec - Target auth state:
UNCHALLENGED
[main] DEBUG org.apache.http.impl.execchain.MainClientExec - Proxy auth state:
UNCHALLENGED
[main] DEBUG org.apache.http.headers - http-outgoing-1 >> PUT
/bb/redirected/repo/my.file HTTP/1.1
[main] DEBUG org.apache.http.headers - http-outgoing-1 >> Content-Length: 15
[main] DEBUG org.apache.http.headers - http-outgoing-1 >> Host: localhost:8080
[main] DEBUG org.apache.http.headers - http-outgoing-1 >> Connection: Keep-Alive
[main] DEBUG org.apache.http.headers - http-outgoing-1 >> User-Agent:
Apache-HttpClient/4.5.11 (Java/1.7.0_252)
[main] DEBUG org.apache.http.headers - http-outgoing-1 >> Expect: 100-continue
[main] DEBUG org.apache.http.headers - http-outgoing-1 >> Accept-Encoding:
gzip,deflate
[main] DEBUG org.apache.http.wire - http-outgoing-1 >> "PUT
/bb/redirected/repo/my.file HTTP/1.1[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 >> "Content-Length:
15[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 >> "Host:
localhost:8080[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 >> "Connection:
Keep-Alive[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 >> "User-Agent:
Apache-HttpClient/4.5.11 (Java/1.7.0_252)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 >> "Expect:
100-continue[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 >> "Accept-Encoding:
gzip,deflate[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 >> "[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 << "HTTP/1.1 100 [\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 << "[\r][\n]"
[main] DEBUG org.apache.http.headers - http-outgoing-1 << HTTP/1.1 100
[main] DEBUG org.apache.http.wire - http-outgoing-1 >> "I am a checksum"
[main] DEBUG org.apache.http.wire - http-outgoing-1 << "HTTP/1.1 200 [\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 << "Content-Length:
0[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 << "Date: Mon, 17 Feb 2020
20:11:54 GMT[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 << "Keep-Alive:
timeout=20[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 << "Connection:
keep-alive[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 << "[\r][\n]"
[main] DEBUG org.apache.http.headers - http-outgoing-1 << HTTP/1.1 200
[main] DEBUG org.apache.http.headers - http-outgoing-1 << Content-Length: 0
[main] DEBUG org.apache.http.headers - http-outgoing-1 << Date: Mon, 17 Feb
2020 20:11:54 GMT
[main] DEBUG org.apache.http.headers - http-outgoing-1 << Keep-Alive: timeout=20
[main] DEBUG org.apache.http.headers - http-outgoing-1 << Connection: keep-alive
Filter:
[main] DEBUG org.apache.http.headers - http-outgoing-1 >> PUT
/bb/redirected/repo/my.file HTTP/1.1
[main] DEBUG org.apache.http.headers - http-outgoing-1 >> Content-Length: 15
[main] DEBUG org.apache.http.headers - http-outgoing-1 >> Host: localhost:8080
[main] DEBUG org.apache.http.headers - http-outgoing-1 >> Connection: Keep-Alive
[main] DEBUG org.apache.http.headers - http-outgoing-1 >> User-Agent:
Apache-HttpClient/4.5.11 (Java/1.7.0_252)
[main] DEBUG org.apache.http.headers - http-outgoing-1 >> Expect: 100-continue
[main] DEBUG org.apache.http.headers - http-outgoing-1 >> Accept-Encoding:
gzip,deflate
[main] DEBUG org.apache.http.wire - http-outgoing-1 >> "PUT
/bb/redirected/repo/my.file HTTP/1.1[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 >> "Content-Length:
15[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 >> "Host:
localhost:8080[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 >> "Connection:
Keep-Alive[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 >> "User-Agent:
Apache-HttpClient/4.5.11 (Java/1.7.0_252)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 >> "Expect:
100-continue[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 >> "Accept-Encoding:
gzip,deflate[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 >> "[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 << "HTTP/1.1 100 [\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 << "[\r][\n]"
[main] DEBUG org.apache.http.headers - http-outgoing-1 << HTTP/1.1 100
[main] DEBUG org.apache.http.wire - http-outgoing-1 << "HTTP/1.1 500 [\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 << "Content-Type:
text/html;charset=utf-8[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 << "Content-Language:
en[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 << "Content-Length:
3291[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 << "Date: Mon, 17 Feb 2020
20:15:15 GMT[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 << "Connection:
close[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 << "[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 << "<!doctype html><html lang="en"><head><title>HTTP Status 500 [0xe2][0x80][0x93] Internal Server Error</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;}
h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 500 [0xe2][0x80][0x93]
Internal Server Error</h1><hr class="line" /><p><b>Type</b> Exception Report</p><p><b>Message</b> java.net.SocketTimeoutException</p><p><b>Description</b> The server encountered an unexpected condition that
prevented it from fulfilling the request.</p><p><b>Exception</b></p><pre>org.apache.catalina.connector.ClientAbortException: java.net.SocketTimeoutException[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:348)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]org.apache.catalina.connector.InputBuffer.checkByteBufferEof(InputBuffer.java:663)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:370)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:152)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]java.nio.file.Files.copy(Files.java:2735)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]java.nio.file.Files.copy(Files.java:2854)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]aa.Test2.doPut(Test2.java:68)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]javax.servlet.http.HttpServlet.service(HttpServlet.java:663)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]javax.servlet.http.HttpServlet.service(HttpServlet.java:741)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]aa.RedirectFilter.doFilter(RedirectFilter.java:39)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 << "</pre><p><b>Root
Cause</b></p><pre>java.net.SocketTimeoutException[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]org.apache.tomcat.util.net.NioBlockingSelector.read(NioBlockingSelector.java:201)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]org.apache.tomcat.util.net.NioSelectorPool.read(NioSelectorPool.java:235)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]org.apache.tomcat.util.net.NioSelectorPool.read(NioSelectorPool.java:216)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1282)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1225)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:737)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]org.apache.coyote.http11.Http11InputBuffer.access$300(Http11InputBuffer.java:42)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]org.apache.coyote.http11.Http11InputBuffer$SocketInputBuffer.doRead(Http11InputBuffer.java:1120)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:140)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]org.apache.coyote.http11.Http11InputBuffer.doRead(Http11InputBuffer.java:262)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]org.apache.coyote.Request.doRead(Request.java:581)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:344)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]org.apache.catalina.connector.InputBuffer.checkByteBufferEof(InputBuffer.java:663)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:370)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:152)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]java.nio.file.Files.copy(Files.java:2735)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]java.nio.file.Files.copy(Files.java:2854)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]aa.Test2.doPut(Test2.java:68)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]javax.servlet.http.HttpServlet.service(HttpServlet.java:663)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]javax.servlet.http.HttpServlet.service(HttpServlet.java:741)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]aa.RedirectFilter.doFilter(RedirectFilter.java:39)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 <<
"[0x9]org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)[\r][\n]"
[main] DEBUG org.apache.http.wire - http-outgoing-1 << "</pre><p><b>Note</b> The full stack trace of the root cause is available
in the server logs.</p><hr class="line" /><h3>Apache Tomcat/8.5.51</h3></body></html>"
[main] DEBUG org.apache.http.headers - http-outgoing-1 << HTTP/1.1 500
[main] DEBUG org.apache.http.headers - http-outgoing-1 << Content-Type: text/html;charset=utf-8
[main] DEBUG org.apache.http.headers - http-outgoing-1 << Content-Language: en
[main] DEBUG org.apache.http.headers - http-outgoing-1 << Content-Length: 3291
[main] DEBUG org.apache.http.headers - http-outgoing-1 << Date: Mon, 17 Feb
2020 20:15:15 GMT
[main] DEBUG org.apache.http.headers - http-outgoing-1 << Connection: close
Is that intended?
Michael
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org