This is an automated email from the ASF dual-hosted git repository.

remm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/master by this push:
     new 0c42530  Avoid retrieving the selection key on Java 11
0c42530 is described below

commit 0c42530829bafa745a7d0e36c5d4f0ccedf0ef84
Author: remm <r...@apache.org>
AuthorDate: Wed Mar 18 16:44:23 2020 +0100

    Avoid retrieving the selection key on Java 11
    
    In that case, cancelledKey only closes the socket wrapper.
---
 java/org/apache/tomcat/util/net/NioEndpoint.java | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/java/org/apache/tomcat/util/net/NioEndpoint.java 
b/java/org/apache/tomcat/util/net/NioEndpoint.java
index 7012782..b3947c9 100644
--- a/java/org/apache/tomcat/util/net/NioEndpoint.java
+++ b/java/org/apache/tomcat/util/net/NioEndpoint.java
@@ -1569,23 +1569,27 @@ public class NioEndpoint extends 
AbstractJsseEndpoint<NioChannel,SocketChannel>
                         state = getHandler().process(socketWrapper, event);
                     }
                     if (state == SocketState.CLOSED) {
-                        
poller.cancelledKey(socket.getIOChannel().keyFor(poller.getSelector()), 
socketWrapper);
+                        SelectionKey key = JreCompat.isJre11Available() ? null 
: socket.getIOChannel().keyFor(poller.getSelector());
+                        poller.cancelledKey(key, socketWrapper);
                     }
                 } else if (handshake == -1 ) {
                     getHandler().process(socketWrapper, 
SocketEvent.CONNECT_FAIL);
-                    
poller.cancelledKey(socket.getIOChannel().keyFor(poller.getSelector()), 
socketWrapper);
+                    SelectionKey key = JreCompat.isJre11Available() ? null : 
socket.getIOChannel().keyFor(poller.getSelector());
+                    poller.cancelledKey(key, socketWrapper);
                 } else if (handshake == SelectionKey.OP_READ){
                     socketWrapper.registerReadInterest();
                 } else if (handshake == SelectionKey.OP_WRITE){
                     socketWrapper.registerWriteInterest();
                 }
             } catch (CancelledKeyException cx) {
-                
poller.cancelledKey(socket.getIOChannel().keyFor(poller.getSelector()), 
socketWrapper);
+                SelectionKey key = JreCompat.isJre11Available() ? null : 
socket.getIOChannel().keyFor(poller.getSelector());
+                poller.cancelledKey(key, socketWrapper);
             } catch (VirtualMachineError vme) {
                 ExceptionUtils.handleThrowable(vme);
             } catch (Throwable t) {
                 log.error(sm.getString("endpoint.processing.fail"), t);
-                
poller.cancelledKey(socket.getIOChannel().keyFor(poller.getSelector()), 
socketWrapper);
+                SelectionKey key = JreCompat.isJre11Available() ? null : 
socket.getIOChannel().keyFor(poller.getSelector());
+                poller.cancelledKey(key, socketWrapper);
             } finally {
                 socketWrapper = null;
                 event = null;


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

Reply via email to