From 48caa320178a649a47dfb88de382e7c383502eee Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Sun, 19 Feb 2023 15:27:49 -0800 Subject: [PATCH] close socket before return Signed-off-by: Rosen Penev --- src/http.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/http.cpp b/src/http.cpp index ecea29bc..4a558c31 100644 --- a/src/http.cpp +++ b/src/http.cpp @@ -227,9 +227,11 @@ int Exiv2::http(Exiv2::Dictionary& request, Exiv2::Dictionary& response, std::st //////////////////////////////////// // and connect server = connect(sockfd, reinterpret_cast(&serv_addr), serv_len); - if (server == SOCKET_ERROR && WSAGetLastError() != WSAEWOULDBLOCK) + if (server == SOCKET_ERROR && WSAGetLastError() != WSAEWOULDBLOCK) { + closesocket(sockfd); return error(errors, "error - unable to connect to server = %s port = %s wsa_error = %d", servername_p, port_p, WSAGetLastError()); + } char buffer[32 * 1024 + 1]; size_t buff_l = sizeof buffer - 1; @@ -248,9 +250,11 @@ int Exiv2::http(Exiv2::Dictionary& request, Exiv2::Dictionary& response, std::st sleep_ -= snooze; } - if (sleep_ < std::chrono::milliseconds::zero()) + if (sleep_ < std::chrono::milliseconds::zero()) { + closesocket(sockfd); return error(errors, "error - timeout connecting to server = %s port = %s wsa_error = %d", servername, port, WSAGetLastError()); + } int end = 0; // write position in buffer bool bSearching = true; // looking for headers in the response @@ -344,6 +348,7 @@ int Exiv2::http(Exiv2::Dictionary& request, Exiv2::Dictionary& response, std::st // we finished OK without finding headers, flush the buffer flushBuffer(buffer, 0, end, file); } else { + closesocket(sockfd); return error(errors, "error - no response from server = %s port = %s wsa_error = %d", servername, port, WSAGetLastError()); }