Mark,

I read that you ported all the new SSL functionality to 8.5, so my first guess 
was, that if that problem was new, you might want to know what's wrong ;-).

>On 25/04/2016 17:10, Kreuser, Peter wrote:
>> Hi there,
>> 
>> I have setup Tomcat 8.5 with the all new SSL Config and HTTP/2.
>> 
>> To test the setup I use testssl.sh (https://testssl.sh ) . The scan is 
>> successful, also stating HTTP/2 is working. So far so good.
>> 
>> However I see the following exception in the Logs:
>> 
>> 25-Apr-2016 17:36:16.697 SEVERE [https-nio2-8443-exec-6] 
>> org.apache.coyote.AbstractProtocol$ConnectionHandler.process Error reading 
>> request, ignored
>> java.lang.IllegalStateException: Failed to create Processor for negotiated 
>> protocol [""]
>>                 at 
>> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:736)
>>                 at 
>> org.apache.tomcat.util.net.Nio2Endpoint$SocketProcessor.run(Nio2Endpoint.java:1699)
>>                 at 
>> org.apache.tomcat.util.net.Nio2Endpoint.processSocket0(Nio2Endpoint.java:397)
>>                 at 
>> org.apache.tomcat.util.net.Nio2Endpoint.processSocket(Nio2Endpoint.java:382)
>>                 at 
>> org.apache.tomcat.util.net.SecureNio2Channel$HandshakeWriteCompletionHandler.completed(SecureNio2Channel.java:115)
>>                 at 
>> org.apache.tomcat.util.net.SecureNio2Channel$HandshakeWriteCompletionHandler.completed(SecureNio2Channel.java:108)
>>                 at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)
>>                 at sun.nio.ch.Invoker.invokeDirect(Invoker.java:157)
>>                 at 
>> sun.nio.ch.UnixAsynchronousSocketChannelImpl.implWrite(UnixAsynchronousSocketChannelImpl.java:736)
>>                 at 
>> sun.nio.ch.AsynchronousSocketChannelImpl.write(AsynchronousSocketChannelImpl.java:382)
>>                 at 
>> sun.nio.ch.AsynchronousSocketChannelImpl.write(AsynchronousSocketChannelImpl.java:399)
>>                 at 
>> java.nio.channels.AsynchronousSocketChannel.write(AsynchronousSocketChannel.java:577)
>>                 at 
>> org.apache.tomcat.util.net.SecureNio2Channel.handshakeInternal(SecureNio2Channel.java:273)
>>                 at 
>> org.apache.tomcat.util.net.SecureNio2Channel.handshake(SecureNio2Channel.java:204)
>>                 at 
>> org.apache.tomcat.util.net.Nio2Endpoint$SocketProcessor.run(Nio2Endpoint.java:1676)
>>                 at 
>> org.apache.tomcat.util.net.Nio2Endpoint.processSocket0(Nio2Endpoint.java:397)
>>                 at 
>> org.apache.tomcat.util.net.Nio2Endpoint.processSocket(Nio2Endpoint.java:382)
>>                 at 
>> org.apache.tomcat.util.net.SecureNio2Channel$HandshakeReadCompletionHandler.completed(SecureNio2Channel.java:98)
>>                 at 
>> org.apache.tomcat.util.net.SecureNio2Channel$HandshakeReadCompletionHandler.completed(SecureNio2Channel.java:91)
>>                 at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)
>>                 at sun.nio.ch.Invoker$2.run(Invoker.java:218)
>>                 at 
>> sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)
>>                 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)
>> 
>> The sourcecode of AbstractProtocol.java states:
>> 
>>                 if (processor == null) {
>>                     String negotiatedProtocol = 
>> wrapper.getNegotiatedProtocol();
>>                     if (negotiatedProtocol != null) {
>>                         UpgradeProtocol upgradeProtocol =
>>                                 
>> getProtocol().getNegotiatedProtocol(negotiatedProtocol);
>>                         if (upgradeProtocol != null) {
>>                             processor = upgradeProtocol.getProcessor(
>>                                     wrapper, getProtocol().getAdapter());
>>                         } else if (negotiatedProtocol.equals("http/1.1")) {
>>                             // Explicitly negotiated the default protocol.
>>                             // Obtain a processor below.
>>                         } else {
>>                             // Failed to create processor. This is a bug.
>>                             throw new IllegalStateException(sm.getString(
>>                                     
>> "abstractConnectionHandler.negotiatedProcessor.fail",
>>                                     negotiatedProtocol));
>>                         }
>>                     }
>>                 }
>> 
>> So why is this a bug? Should I change something or should Mark T. look into 
>> it?
>
>I don't have exclusive rights for investigating potential Tomcat bugs
>you know (although I do have the advantage that a large proportion of my
>$dayjob is doing exactly that).
>
>This is on my radar but I'd love to see someone else (I'm looking at you
>Peter) take a look. My suggestion is to find out:
>a) what protocols Tomcat is advertising
>b) what protocols the client is requesting
>c) how Tomcat combines a) and b) to get "".
>
>a) and b) should be easy to log from the existing code.
>
>Mark
>

I will try to look into that and maybe I can trace some of the request that 
cause the problem.
Any hints on how to get more debug output without compiling the code myself?


Peter

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to