You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by fh...@apache.org on 2007/03/23 17:05:47 UTC
svn commit: r521784 -
/tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
Author: fhanik
Date: Fri Mar 23 09:05:46 2007
New Revision: 521784
URL: http://svn.apache.org/viewvc?view=rev&rev=521784
Log:
big oopsie, forgot to do SSL for executor/socketprocessor
Modified:
tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
Modified: tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java?view=diff&rev=521784&r1=521783&r2=521784
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java Fri Mar 23 09:05:46 2007
@@ -846,8 +846,8 @@
}
public boolean getUseSendfile() {
-
- return useSendfile;
+ //send file doesn't work with SSL
+ return useSendfile && (!isSSLEnabled());
}
/**
@@ -1956,18 +1956,50 @@
public void run() {
- // Process the request from this socket
- boolean closed = (status==null)?(handler.process(socket)==Handler.SocketState.CLOSED) :
- (handler.event(socket,status)==Handler.SocketState.CLOSED);
- if (closed) {
- // Close socket and pool
- try {
- try {socket.close();}catch (Exception ignore){}
- if ( socket.isOpen() ) socket.close(true);
- } catch ( Exception x ) {
- log.error("",x);
- }
+
+ SelectionKey key = socket.getIOChannel().keyFor(socket.getPoller().getSelector());
+ int handshake = -1;
+ try {
+ handshake = socket.handshake(key.isReadable(), key.isWritable());
+ }catch ( IOException x ) {
+ handshake = -1;
+ if ( log.isDebugEnabled() ) log.debug("Error during SSL handshake",x);
+ }catch ( CancelledKeyException ckx ) {
+ handshake = -1;
+ }
+ if ( handshake == 0 ) {
+ // Process the request from this socket
+ // Process the request from this socket
+ boolean closed = (status==null)?(handler.process(socket)==Handler.SocketState.CLOSED) :
+ (handler.event(socket,status)==Handler.SocketState.CLOSED);
+
+ if (closed) {
+ // Close socket and pool
+ try {
+ KeyAttachment att = (KeyAttachment)socket.getAttachment(true);
+ try {socket.close();}catch (Exception ignore){}
+ if ( socket.isOpen() ) socket.close(true);
+ key.cancel();
+ key.attach(null);
+ nioChannels.offer(socket);
+ if ( att!=null ) keyCache.offer(att);
+ }catch ( Exception x ) {
+ log.error("",x);
+ }
+ }
+ } else if (handshake == -1 ) {
+ KeyAttachment ka = (KeyAttachment)key.attachment();
+ socket.getPoller().cancelledKey(key,SocketStatus.DISCONNECT,false);
+ try {socket.close(true);}catch (IOException ignore){}
+ nioChannels.offer(socket);
+ if ( ka!=null ) keyCache.offer(ka);
+ } else {
+ final SelectionKey fk = key;
+ final int intops = handshake;
+ final KeyAttachment ka = (KeyAttachment)fk.attachment();
+ ka.getPoller().add(socket,intops);
}
+
socket = null;
status = null;
//return to cache
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org