Kaven Stone created HTTPCORE-701:
------------------------------------
Summary: A little confuse for the H2 update window function
Key: HTTPCORE-701
URL: https://issues.apache.org/jira/browse/HTTPCORE-701
Project: HttpComponents HttpCore
Issue Type: Improvement
Components: HttpCore
Affects Versions: 5.1
Reporter: Kaven Stone
I just read the update window logic for http2, and the function is a little
confuse for me.
# why here should use the for (;;) here? what the purpose?
# for the two TODO: The first TODO, it revert the min value as to the the max
value, this if for what situation?
# The seconde TODO: needs to be removed , and that will remove what?
The soure code in
httpcore5-h2\src\main\java\org\apache\hc\core5\http2\impl\nio\AbstractH2StreamMultiplexer.java
is as below:
private int updateWindow(final AtomicInteger window, final int delta) throws
ArithmeticException {
for (;;) {
final int current = window.get();
long newValue = (long) current + delta;
//TODO: work-around for what looks like a bug in Ngnix (1.11)
// Tolerate if the update window exceeded by one
if (newValue == 0x80000000L) {
newValue = Integer.MAX_VALUE;
}
//TODO: needs to be removed
if (Math.abs(newValue) > 0x7fffffffL) {
throw new ArithmeticException("Update causes flow control window to exceed " +
Integer.MAX_VALUE);
}
if (window.compareAndSet(current, (int) newValue)) {
return (int) newValue;
}
}
}
--
This message was sent by Atlassian Jira
(v8.20.1#820001)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]