Skip to content
Permalink
Browse files
8255227: java/net/httpclient/FlowAdapterPublisherTest.java intermitte…
…ntly failing with TestServer: start exception: java.io.IOException: Invalid preface

Backport-of: 0544a73
  • Loading branch information
GoeLin committed Sep 28, 2021
1 parent 654ad1c commit cb4e2876265bdc72b25c0624338256e197b542f4
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -882,7 +882,6 @@ else if (item == COMPLETED) {
// handle bytes to send downstream
while (item.hasRemaining()) {
if (debug.on()) debug.log("trySend: %d", item.remaining());
assert !endStreamSent : "internal error, send data after END_STREAM flag";
DataFrame df = getDataFrame(item);
if (df == null) {
if (debug.on())
@@ -902,9 +901,12 @@ else if (item == COMPLETED) {
connection.resetStream(streamid, ResetFrame.PROTOCOL_ERROR);
throw new IOException(msg);
} else if (remainingContentLength == 0) {
assert !endStreamSent : "internal error, send data after END_STREAM flag";
df.setFlag(DataFrame.END_STREAM);
endStreamSent = true;
}
} else {
assert !endStreamSent : "internal error, send data after END_STREAM flag";
}
if (debug.on())
debug.log("trySend: sending: %d", df.getDataLength());
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -47,6 +47,7 @@
import jdk.internal.net.http.hpack.Encoder;
import sun.net.www.http.ChunkedInputStream;
import sun.net.www.http.HttpClient;
import static java.nio.charset.StandardCharsets.ISO_8859_1;
import static java.nio.charset.StandardCharsets.UTF_8;
import static jdk.internal.net.http.frame.SettingsFrame.HEADER_TABLE_SIZE;

@@ -304,9 +305,11 @@ void close(int error) {
private void readPreface() throws IOException {
int len = clientPreface.length;
byte[] bytes = new byte[len];
is.readNBytes(bytes, 0, len);
int n = is.readNBytes(bytes, 0, len);
if (Arrays.compare(clientPreface, bytes) != 0) {
throw new IOException("Invalid preface: " + new String(bytes, 0, len));
System.err.printf("Invalid preface: read %d/%d bytes%n", n, len);
throw new IOException("Invalid preface: " +
new String(bytes, 0, len, ISO_8859_1));
}
}

1 comment on commit cb4e287

@openjdk-notifier

This comment has been minimized.

Copy link

@openjdk-notifier openjdk-notifier bot commented on cb4e287 Sep 28, 2021

Please sign in to comment.