Author: remm
Date: Mon Jul 20 16:28:28 2015
New Revision: 1691974
URL: http://svn.apache.org/r1691974
Log:
Remove confusing closeSocket method.
Remove nested exception catch, doesn't seem very useful.
58103: Add some sync to avoid double close.
Modified:
tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java?rev=1691974&r1=1691973&r2=1691974&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Mon Jul 20
16:28:28 2015
@@ -430,26 +430,30 @@ public class Nio2Endpoint extends Abstra
}
try {
handler.release(socket);
- try {
- if (socket.getSocket() != null) {
- socket.getSocket().close(true);
- }
- } catch (Exception e){
- if (log.isDebugEnabled()) {
- log.debug(sm.getString(
- "endpoint.debug.socketCloseFail"), e);
+ } catch (Throwable e) {
+ ExceptionUtils.handleThrowable(e);
+ if (log.isDebugEnabled()) log.error("",e);
+ }
+ try {
+ if (socket.getSocket() != null) {
+ synchronized (socket.getSocket()) {
+ if (socket.getSocket() != null &&
socket.getSocket().isOpen()) {
+ countDownConnection();
+ socket.getSocket().close(true);
+ }
}
}
+ } catch (Throwable e) {
+ ExceptionUtils.handleThrowable(e);
+ if (log.isDebugEnabled()) log.error("",e);
+ }
+ try {
Nio2SocketWrapper nio2Socket = (Nio2SocketWrapper) socket;
- try {
- if (nio2Socket.getSendfileData() != null
- && nio2Socket.getSendfileData().fchannel != null
- && nio2Socket.getSendfileData().fchannel.isOpen()) {
- nio2Socket.getSendfileData().fchannel.close();
- }
- } catch (Exception ignore) {
+ if (nio2Socket.getSendfileData() != null
+ && nio2Socket.getSendfileData().fchannel != null
+ && nio2Socket.getSendfileData().fchannel.isOpen()) {
+ nio2Socket.getSendfileData().fchannel.close();
}
- countDownConnection();
} catch (Throwable e) {
ExceptionUtils.handleThrowable(e);
if (log.isDebugEnabled()) log.error("",e);
@@ -523,12 +527,24 @@ public class Nio2Endpoint extends Abstra
// Hand this socket off to an appropriate processor
if (!setSocketOptions(socket)) {
countDownConnection();
- closeSocket(socket);
- }
+ try {
+ socket.close();
+ } catch (IOException ioe) {
+ if (log.isDebugEnabled()) {
+ log.debug("", ioe);
+ }
+ }
+ }
} else {
countDownConnection();
// Close socket right away
- closeSocket(socket);
+ try {
+ socket.close();
+ } catch (IOException ioe) {
+ if (log.isDebugEnabled()) {
+ log.debug("", ioe);
+ }
+ }
}
} catch (Throwable t) {
ExceptionUtils.handleThrowable(t);
@@ -541,17 +557,6 @@ public class Nio2Endpoint extends Abstra
}
- private void closeSocket(AsynchronousSocketChannel socket) {
- try {
- socket.close();
- } catch (IOException ioe) {
- if (log.isDebugEnabled()) {
- log.debug("", ioe);
- }
- }
- }
-
-
public static class Nio2SocketWrapper extends
SocketWrapperBase<Nio2Channel> {
private static final ThreadLocal<AtomicInteger>
nestedWriteCompletionCount =
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]