diff --git a/src/network/network_content.cpp b/src/network/network_content.cpp --- a/src/network/network_content.cpp +++ b/src/network/network_content.cpp @@ -611,8 +611,6 @@ void ClientNetworkContentSocketHandler:: return; } - this->lastActivity = std::chrono::steady_clock::now(); - if (this->http_response_index == -1) { if (data != nullptr) { /* Append the rest of the response. */ @@ -799,7 +797,6 @@ void ClientNetworkContentSocketHandler:: */ NetworkRecvStatus ClientNetworkContentSocketHandler::CloseConnection(bool) { - this->isCancelled = true; NetworkContentSocketHandler::CloseConnection(); if (this->sock == INVALID_SOCKET) return NETWORK_RECV_STATUS_OKAY; @@ -811,6 +808,15 @@ NetworkRecvStatus ClientNetworkContentSo } /** + * Cancel the current download. + */ +void ClientNetworkContentSocketHandler::Cancel(void) +{ + this->isCancelled = true; + this->CloseConnection(); +} + +/** * Check whether we received/can send some data from/to the content server and * when that's the case handle it appropriately */ @@ -818,6 +824,7 @@ void ClientNetworkContentSocketHandler:: { if (this->sock == INVALID_SOCKET || this->isConnecting) return; + /* Close the connection to the content server after inactivity; there can still be downloads pending via HTTP. */ if (std::chrono::steady_clock::now() > this->lastActivity + IDLE_TIMEOUT) { this->CloseConnection(); return;