Author: rgodfrey Date: Thu Jan 29 22:40:08 2015 New Revision: 1655881 URL: http://svn.apache.org/r1655881 Log: close sockets when connection is closed
Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/NonBlockingSenderReceiver.java Modified: qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/NonBlockingSenderReceiver.java URL: http://svn.apache.org/viewvc/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/NonBlockingSenderReceiver.java?rev=1655881&r1=1655880&r2=1655881&view=diff ============================================================================== --- qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/NonBlockingSenderReceiver.java (original) +++ qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/NonBlockingSenderReceiver.java Thu Jan 29 22:40:08 2015 @@ -46,6 +46,7 @@ import org.apache.qpid.transport.SenderE import org.apache.qpid.transport.network.Ticker; import org.apache.qpid.transport.network.TransportEncryption; import org.apache.qpid.transport.network.security.ssl.SSLUtil; +import org.apache.qpid.util.SystemUtils; public class NonBlockingSenderReceiver implements Sender<ByteBuffer> { @@ -182,6 +183,19 @@ public class NonBlockingSenderReceiver } else { + + if(!SystemUtils.isWindows()) + { + try + { + _socketChannel.shutdownInput(); + } + catch (IOException e) + { + LOGGER.info("Exception shutting down input for thread '" + _remoteSocketAddress + "': " + e); + + } + } try { while(!doWrite()) @@ -193,9 +207,22 @@ public class NonBlockingSenderReceiver LOGGER.info("Exception performing final write/close for thread '" + _remoteSocketAddress + "': " + e); } - + LOGGER.debug("Closing receiver"); _receiver.closed(); + try + { + if(!SystemUtils.isWindows()) + { + _socketChannel.shutdownOutput(); + } + + _socketChannel.close(); + } + catch (IOException e) + { + LOGGER.info("Exception closing socket thread '" + _remoteSocketAddress + "': " + e); + } } return closed; @@ -212,9 +239,11 @@ public class NonBlockingSenderReceiver public void close() { LOGGER.debug("Closing " + _remoteSocketAddress); - _closed.set(true); - _stateChanged.set(true); - _connection.getSelector().wakeup(); + if(_closed.compareAndSet(false,true)) + { + _stateChanged.set(true); + _connection.getSelector().wakeup(); + } } private boolean doWrite() throws IOException --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org