-
Notifications
You must be signed in to change notification settings - Fork 49
Add AllowHTTP, set StreamID value and fix small WindowSize hanging Firefox Fingerprint #15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Add AllowHTTP, set StreamID value and fix small WindowSize hanging Firefox Fingerprint #15
Conversation
…ize of Firefox Fingeprints causing hang Add extra logics to expose AllowHTTP, StreamID and fix small window size of Firefox Fingeprints causing hang
|
@gunir when i run the above mentioned example code i gett two times: |
The issue is this, they optimized their image to be small enough so Firefox's window size pass without issue, check my previous result, it was so much bigger:
The website seems to run image compression after a while |
… clients like Firefox and previous features intact Update transport.go - Improve window size logic for small window size clients like Firefox and previous features intact
|
Okay, with this fix the small window size will be no more, this only affect Firefox profile when downloading huge files like MB images on some websites It hard to reproduce this issue again because I have no other resource example to replace the OP example |
Update transport.go - Added safety check and merged upstream:
```
// ------------------------------------------------------------------
// SAFETY: Validate flow control values don't exceed int32 max
// RFC 7540 Section 6.9.1: Max window size is 2^31-1
// ------------------------------------------------------------------
if cc.connFlow > math.MaxInt32 {
return nil, fmt.Errorf("http2: connection flow control window too large: %d (max: %d)", cc.connFlow, math.MaxInt32)
}
if cc.streamFlow > math.MaxInt32 {
return nil, fmt.Errorf("http2: stream flow control window too large: %d (max: %d)", cc.streamFlow, math.MaxInt32)
}
```
|
Done, I added a overflow safety check: And merged upstream, you can now safety merge it |
|
@gunir thank you for the contribution. please double check my comments on bogdanfinn/tls-client#205 Regarding this change here i will do a few tests and try to check if nothing broke. |
|
Should be stable enough, I've been using it for a month actively in my proxy surfing at least 5-hour a day. |
Add extra features from this PR: bogdanfinn/tls-client#205
And also fix an issue with Firefox's Initial Window Size being small 131072 causing server to hang the request forever, this is a test script:
Run it:
If you change
profiles.Firefox_135toprofiles.Chrome_133, it works: