summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/sys/AsynchIOHandler.cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2010-06-01 18:54:56 +0000
committerGordon Sim <gsim@apache.org>2010-06-01 18:54:56 +0000
commita942c5e9625068a7a1585ad1e4cc8138830a8500 (patch)
tree255d66d953bc90a6c83e47afd66ef37011625716 /cpp/src/qpid/sys/AsynchIOHandler.cpp
parent00513930d81a9344683c54a620da02dcd35da400 (diff)
downloadqpid-python-a942c5e9625068a7a1585ad1e4cc8138830a8500.tar.gz
QPID-2636: Ensure close is called for a disconnect preventing occasional leaks of abruptly terminated connections
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@950201 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/sys/AsynchIOHandler.cpp')
-rw-r--r--cpp/src/qpid/sys/AsynchIOHandler.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/cpp/src/qpid/sys/AsynchIOHandler.cpp b/cpp/src/qpid/sys/AsynchIOHandler.cpp
index 5771141d08..30a87d9d44 100644
--- a/cpp/src/qpid/sys/AsynchIOHandler.cpp
+++ b/cpp/src/qpid/sys/AsynchIOHandler.cpp
@@ -173,9 +173,8 @@ void AsynchIOHandler::readbuff(AsynchIO& , AsynchIO::BufferBase* buff) {
}
}
-void AsynchIOHandler::eof(AsynchIO&) {
- QPID_LOG(debug, "DISCONNECTED [" << identifier << "]");
- if (codec) codec->closed();
+void AsynchIOHandler::eof(AsynchIO& a) {
+ disconnect(a);
readError = true;
aio->queueWriteClose();
}
@@ -190,9 +189,9 @@ void AsynchIOHandler::closedSocket(AsynchIO&, const Socket& s) {
delete this;
}
-void AsynchIOHandler::disconnect(AsynchIO& a) {
- // treat the same as eof
- eof(a);
+void AsynchIOHandler::disconnect(AsynchIO&) {
+ QPID_LOG(debug, "DISCONNECTED [" << identifier << "]");
+ if (codec) codec->closed();
}
// Notifications