You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2015/01/29 23:40:08 UTC
svn commit: r1655881 -
/qpid/branches/QPID-6262-JavaBrokerNIO/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/NonBlockingSenderReceiver.java
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-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org