Hello

During investigation of results of IDEA inspections I found suspicious
code in a method
'jdk.internal.net.http.ResponseContent.UnknownLengthBodyParser#accept'
https://github.com/openjdk/jdk/blob/master/src/java.net.http/share/classes/jdk/internal/net/http/ResponseContent.java#L492

boolean completed = false;
try {
    if (debug.on())
        debug.log("Parser got %d bytes ", b.remaining());

    if (b.hasRemaining()) {
        // only reduce demand if we actually push something.
        // we would not have come here if there was no
        // demand.
        boolean hasDemand = sub.demand().tryDecrement();
        assert hasDemand;
        breceived += b.remaining();
        pusher.onNext(List.of(b.asReadOnlyBuffer()));
    }
} catch (Throwable t) {
    if (debug.on()) debug.log("Unexpected exception", t);
    closedExceptionally = t;
    if (!completed) {
        onComplete.accept(t);
    }
}


Variable 'completed' has an initial value 'false' and never assigned again.
Then it's checked in the 'catch' section.
It seems it should be set to 'true' somewhere.


Andrey Turbanov

Reply via email to