Uploaded image for project: 'HttpComponents HttpCore'
  1. HttpComponents HttpCore
  2. HTTPCORE-749

SSLIOSession should catch UnsupportedOperationException from SSLEngine.getApplicationProtocol

    XMLWordPrintableJSON

Details

    Description

      When SSLEngine implementation is old and does not override getApplicationProtocol from SSLEngine, HttpClient async fails with:

      java.lang.UnsupportedOperationException
      at javax.net.ssl.SSLEngine.getApplicationProtocol(SSLEngine.java:1283)
      at org.apache.hc.core5.reactor.ssl.SSLIOSession.doHandshake(SSLIOSession.java:429)
      at org.apache.hc.core5.reactor.ssl.SSLIOSession.access$100(SSLIOSession.java:74)
      at org.apache.hc.core5.reactor.ssl.SSLIOSession$1.inputReady(SSLIOSession.java:201)
      at org.apache.hc.core5.reactor.InternalDataChannel.onIOEvent(InternalDataChannel.java:142)
      at org.apache.hc.core5.reactor.InternalChannel.handleIOEvent(InternalChannel.java:51)
      at org.apache.hc.core5.reactor.SingleCoreIOReactor.processEvents(SingleCoreIOReactor.java:178)
      at org.apache.hc.core5.reactor.SingleCoreIOReactor.doExecute(SingleCoreIOReactor.java:127)
      at org.apache.hc.core5.reactor.AbstractSingleCoreIOReactor.execute(AbstractSingleCoreIOReactor.java:86)
      at org.apache.hc.core5.reactor.IOReactorWorker.run(IOReactorWorker.java:44)
      at java.lang.Thread.run(Thread.java:750)

      Instead, SSLIOSession should catch UnsupportedOperationException from getApplicationProtocol call and fall back to HTTP1_1. getApplicationProtocol was added in a later version of Java 8, and not all SSL libraries support it.

      tlsDetailsFactory from DefaultClientTlsStrategy can be potentially used to work around this, but it is deprecated.

      Attachments

        Activity

          People

            Unassigned Unassigned
            akatkere Arun Katkere
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0h
                0h
                Logged:
                Time Spent - 1h 20m
                1h 20m