Bug 61089

Summary: Http11NioProtocol doesn't work when using port 20443
Product: Tomcat 8 Reporter: hiram.esparza
Component: ConnectorsAssignee: Tomcat Developers Mailing List <dev>
Status: RESOLVED DUPLICATE    
Severity: normal    
Priority: P2    
Version: 8.5.4   
Target Milestone: ----   
Hardware: PC   
OS: Linux   

Description hiram.esparza 2017-05-12 16:36:41 UTC
When using protocol Http11NioProtocol with port 20443 and a keystore PKCS12, tomcat looks to be running at the beginning but after some seconds I can see the processor working too hard, it keeps like that until I shut down tomcat.

If I wait more like that, I can see the next exception stacktrace being repeated indefinitely in catalina.out:

12-May-2017 11:14:22.153 SEVERE [https-jsse-nio-20443-exec-27] org.apache.coyote.AbstractProtocol$ConnectionHandler.process Error reading request, ignored
 java.lang.NullPointerException
        at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSslSupport(NioEndpoint.java:1349)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:775)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1425)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at org.apache.tomcat.util.net.AbstractEndpoint.processSocket(AbstractEndpoint.java:830)
        at org.apache.tomcat.util.net.NioEndpoint$Poller.add(NioEndpoint.java:669)
        at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.registerReadInterest(NioEndpoint.java:1264)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1433)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)

It fixes if I change to port 8443 or if I change to use protocol Http11Nio2Protocol
Comment 1 Remy Maucherat 2017-05-13 13:37:02 UTC
Please try a reasonably up to date version before reporting an issue. This should be fixed in Tomcat 8.5.6+.

I don't know what lead to the theory on the port number, but this is not possible, so something was tested incorrectly. Using NIO2 is a workaround however, as its SNI processing did not have the bug.

*** This bug has been marked as a duplicate of bug 60030 ***
Comment 2 hiram.esparza 2017-05-13 14:16:10 UTC
(In reply to Remy Maucherat from comment #1)
> Please try a reasonably up to date version before reporting an issue. This
> should be fixed in Tomcat 8.5.6+.
> 
> I don't know what lead to the theory on the port number, but this is not
> possible, so something was tested incorrectly. Using NIO2 is a workaround
> however, as its SNI processing did not have the bug.
> 
> *** This bug has been marked as a duplicate of bug 60030 ***

Thank you very much for your quick response.

I'm sorry I reported this in an older version of Tomcat but that's what I have to use because of the system administrators.

This information helped me a lot.

Have a good day.