Bug 65179

Summary: HTTP2:WINDOW_UPDATE not sent when receiving http2 requests over unknown url
Product: Tomcat 9 Reporter: Arshiya <arshiya.shariff>
Component: CatalinaAssignee: Tomcat Developers Mailing List <dev>
Severity: regression CC: arshiyaashariff
Priority: P2    
Version: 9.0.43   
Target Milestone: -----   
Hardware: PC   
OS: Linux   
Attachments: PCAP for case where WINDOW_UPDATE is not sent

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?

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.
Comment 4 Mark Thomas 2021-12-31 10:35:45 UTC
*** Bug 65773 has been marked as a duplicate of this bug. ***
Comment 5 Mark Thomas 2022-01-04 09:53:09 UTC
*** Bug 65773 has been marked as a duplicate of this bug. ***