On Tue, Oct 8, 2024 at 5:23 AM Bernhard Fey <bernhard....@realobjects.com>
wrote:

> Commenting out "response.close();" has no effect. It still fails on
> "client.close();".
>

Hi Bernhard,

Thank you for experimenting, I was surprised to see that code fragment.

Gary


> 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
> com.realobjects.util.url.http.client.J8HttpsErrorTest.main(J8HttpsErrorTest.java:21)
>
> Bernhard
>
>
> -----Original Message-----
> From: Gary Gregory <garydgreg...@gmail.com>
> Sent: Tuesday, October 8, 2024 10:51
> To: HttpClient User Discussion <httpclient-users@hc.apache.org>
> Subject: Re: Exception in version 5.4 with Java 8, potential bug
>
> 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
> >
> >
>

Reply via email to