From 82375c30b476177e78dec1d301286e78190f2ebd Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Thu, 19 Jan 2012 18:43:51 -0800 Subject: [PATCH] We need to detach on all errors or the Peer structure will stay in memory forever. --- Peer.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Peer.cpp b/Peer.cpp index 1b2455c946..37f293fdfa 100644 --- a/Peer.cpp +++ b/Peer.cpp @@ -32,6 +32,13 @@ void Peer::handle_write(const boost::system::error_code& error, size_t bytes_tra #endif mSendingPacket=PackedMessage::pointer(); + + if(error) + { + detach(); + return; + } + if(!mSendQ.empty()) { PackedMessage::pointer packet=mSendQ.front(); @@ -45,6 +52,7 @@ void Peer::handle_write(const boost::system::error_code& error, size_t bytes_tra void Peer::detach() { + mSendQ.erase(); mSocket.close(); if(!!mHanko) theApp->getConnectionPool().delFromMap(mHanko); }