What happens if you remove "response.close();" ? Gary
On Tue, Oct 8, 2024, 4:36 AM Bernhard Fey <bernhard....@realobjects.com> wrote: > Hello, I hope this is the right place to report potential bugs. > > When updating to version 5.4 our Java 8 tests fail with the following > exception: > > java.lang.UnsupportedOperationException: method is not supported because > of the TLS half-close policy > at sun.security.ssl.SSLSocketImpl.shutdownInput(SSLSocketImpl.java:765) > at sun.security.ssl.SSLSocketImpl.shutdownInput(SSLSocketImpl.java:743) > at > org.apache.hc.core5.http.impl.io.BHttpConnectionBase.close(BHttpConnectionBase.java:255) > at > org.apache.hc.core5.http.impl.io.DefaultBHttpClientConnection.close(DefaultBHttpClientConnection.java:71) > at org.apache.hc.client5.http.impl.io > .DefaultManagedHttpClientConnection.close(DefaultManagedHttpClientConnection.java:176) > at > org.apache.hc.core5.pool.PoolEntry.discardConnection(PoolEntry.java:180) > at > org.apache.hc.core5.pool.StrictConnPool$PerRoutePool.shutdown(StrictConnPool.java:839) > at > org.apache.hc.core5.pool.StrictConnPool.close(StrictConnPool.java:142) > at org.apache.hc.client5.http.impl.io > .PoolingHttpClientConnectionManager.close(PoolingHttpClientConnectionManager.java:277) > at > org.apache.hc.client5.http.impl.classic.InternalHttpClient.close(InternalHttpClient.java:198) > at > org.apache.hc.client5.http.impl.classic.InternalHttpClient.close(InternalHttpClient.java:188) > at J8HttpsErrorTest.main(J8HttpsErrorTest.java:21) > > It seems to be a bug, but please let me know if it is a mistake on our > side. > > I have put together the following test class, which fails in Java 8 with > the above exception, but finishes correctly with Java 11 > (tested on Windows 10, but the Java 8 exception also occurs on Linux in > our integration): > > import org.apache.hc.client5.http.classic.methods.HttpGet; > import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; > import org.apache.hc.client5.http.impl.classic.HttpClientBuilder; > public class J8HttpsErrorTest { > public static void main(String[] args) { > System.out.println(System.getProperty("java.vm.vendor") > + " " + System.getProperty("java.vm.name") > + " " + System.getProperty("java.vm.version")); > try { > CloseableHttpClient client = > HttpClientBuilder.create().build(); > String responseStr = client.execute(new HttpGet( > https://www.google.com/), response -> { > byte[] content = new byte[1024]; > int length = > response.getEntity().getContent().read(content); // just read the first > view bytes to show the connection works > String str = new String(content, 0, length); > response.close(); > return str; > }); > System.out.println("Sucessfully loaded: " + > responseStr.replaceAll(file://s, " ")); > System.out.println(">>>"); > client.close(); // this causes the > ExceUnsupportedOperationExceptionption in Java 8 > System.out.println("<<<"); // <== success expected, except for > Java 8 > } catch (UnsupportedOperationException e) { > System.out.println("!!!"); > e.printStackTrace(System.out); // <== exception expected for > Java 8 > } catch (Throwable e) { > System.out.println("!!!!!"); > e.printStackTrace(System.out); // unexpected! > } > } > } > > --------------------------------------------------------------------- > To unsubscribe, e-mail: httpclient-users-unsubscr...@hc.apache.org > For additional commands, e-mail: httpclient-users-h...@hc.apache.org > >