summaryrefslogtreecommitdiff
path: root/src/network/core/tcp.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2009-01-22 10:09:56 +0000
committerrubidium <rubidium@openttd.org>2009-01-22 10:09:56 +0000
commit4f5a8b15edea385f5eadbe9bb40927d07576a61d (patch)
tree9407b6f5d2c57ed543f7d9315bb6b15169351ab8 /src/network/core/tcp.cpp
parent92b9ff3f9660fc2a5ac154a762f7568e40c97ad4 (diff)
downloadopenttd-4f5a8b15edea385f5eadbe9bb40927d07576a61d.tar.xz
(svn r15206) -Fix [FS#2567]: memory corruption due to not properly cleanup up the mess when cancelling a download
Diffstat (limited to 'src/network/core/tcp.cpp')
-rw-r--r--src/network/core/tcp.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/network/core/tcp.cpp b/src/network/core/tcp.cpp
index 9c58af2c0..963257847 100644
--- a/src/network/core/tcp.cpp
+++ b/src/network/core/tcp.cpp
@@ -20,7 +20,14 @@ NetworkTCPSocketHandler::NetworkTCPSocketHandler(SOCKET s) :
NetworkTCPSocketHandler::~NetworkTCPSocketHandler()
{
+ this->CloseConnection();
+
if (this->sock != INVALID_SOCKET) closesocket(this->sock);
+ this->sock = INVALID_SOCKET;
+}
+
+NetworkRecvStatus NetworkTCPSocketHandler::CloseConnection()
+{
this->writable = false;
this->has_quit = true;
@@ -33,7 +40,7 @@ NetworkTCPSocketHandler::~NetworkTCPSocketHandler()
delete this->packet_recv;
this->packet_recv = NULL;
- this->sock = INVALID_SOCKET;
+ return NETWORK_RECV_STATUS_OKAY;
}
/**