Bug 65179 - HTTP2:WINDOW_UPDATE not sent when receiving http2 requests over unknown url
Summary: HTTP2:WINDOW_UPDATE not sent when receiving http2 requests over unknown url
Status: RESOLVED FIXED
Alias: None
Product: Tomcat 9
Classification: Unclassified
Component: Catalina (show other bugs)
Version: 9.0.43
Hardware: PC Linux
: P2 regression (vote)
Target Milestone: -----
Assignee: Tomcat Developers Mailing List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-03-11 14:56 UTC by Arshiya
Modified: 2021-03-18 19:18 UTC (History)
0 users



Attachments
PCAP for case where WINDOW_UPDATE is not sent (244.06 KB, image/jpeg)
2021-03-11 14:56 UTC, Arshiya
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Arshiya 2021-03-11 14:56:46 UTC
Created attachment 37767 [details]
PCAP for case where WINDOW_UPDATE is not sent

We are using embedded tomcat version 9.0.43 in our application to transport http/2 packets between 2 systems (h2c connection). All parameters used are the tomcat defaults.

We are facing the below issue :
1.	Tomcat is not sending WINDOW_UPDATE when a request(payload > 65K) is landed on an Unknown URL(which is not deployed as a servlet and not having  a servlet mapping). The same is working when request landed on an known URL(which is deployed as a servlet and has an servlet mapping). 
2.	Tomcat is listening on 1080 port, client is sending packet size of > 65KB, but here tomcat receives only 65KB  and not receiving full DATA, later tomcat sends RST_STREAM, further no WINDOW_UPDATE, after that client is not able to send DATA frames as there is no WINDOW_UPDATE from tomcat.

Working case :
Client sends request to a correct URL of size/payload > 65KB. Tomcat is sending WINDOW_UPDATE. 200OK from application, which is working as expected. Later client is able to send requests along with DATA also, and tomcat is receiving those .

Please find attached the PCAPs for the Not Working Case (unknown url).

Please help resolve this issue.

Thanks in advance !!
Comment 1 Mark Thomas 2021-03-15 22:27:40 UTC
Fixed in:
- 10.0.x for 10.0.5 onwards
- 9.0.x for 9.0.45 onwards
- 8.5.x for 8.5.65 onwards
Comment 2 Doug Whitfield 2021-03-18 18:01:09 UTC
Hi Mark,

Regarding this fix, we still see an error code 8 and not the expected 404. Is the error code 8 a separate bug? If so, is it logged somewhere I am not finding? We have a jmx file we have been using for testing. I can upload the jmx file either here or to a separate bug as necessary. Is there anything useful that we can provide to help with this?

Thanks!
Comment 3 Mark Thomas 2021-03-18 19:18:59 UTC
Yes, you will see a RST frame for the stream with error code 8 (cancel) to tell the client no to bother sending (any more of) the requets body.

The 404 response is sent before the RST frame.