Parcourir la source

[trac589] close the socket on errors too

Jelte Jansen il y a 14 ans
Parent
commit
41ef6df597
1 fichiers modifiés avec 3 ajouts et 0 suppressions
  1. 3 0
      src/lib/asiolink/tcp_server.cc

+ 3 - 0
src/lib/asiolink/tcp_server.cc

@@ -104,6 +104,7 @@ TCPServer::operator()(error_code ec, size_t length) {
         CORO_YIELD async_read(*socket_, asio::buffer(data_.get(),
                               TCP_MESSAGE_LENGTHSIZE), *this);
         if (ec) {
+            socket_->close();
             CORO_YIELD return;
         }
 
@@ -116,6 +117,7 @@ TCPServer::operator()(error_code ec, size_t length) {
         }
 
         if (ec) {
+            socket_->close();
             CORO_YIELD return;
         }
 
@@ -149,6 +151,7 @@ TCPServer::operator()(error_code ec, size_t length) {
         // If we don't have a DNS Lookup provider, there's no point in
         // continuing; we exit the coroutine permanently.
         if (lookup_callback_ == NULL) {
+            socket_->close();
             CORO_YIELD return;
         }