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

Reply via email to