From f390b0863ec4cce6396f1e9b50b61462c71b98d2 Mon Sep 17 00:00:00 2001 From: nikitalita <69168929+nikitalita@users.noreply.github.com> Date: Sat, 8 Mar 2025 22:41:43 -0800 Subject: [PATCH] fix deadlock when failing to bind/listen on port --- src/socket.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/socket.cpp b/src/socket.cpp index 61a087e..10dd2f0 100644 --- a/src/socket.cpp +++ b/src/socket.cpp @@ -233,17 +233,20 @@ namespace dap { Socket::Socket(const char* address, const char* port) : shared(Shared::create(address, port)) { if (shared) { + bool reset = false; shared->lock([&](SOCKET socket, const addrinfo* info) { if (bind(socket, info->ai_addr, (int)info->ai_addrlen) != 0) { - shared.reset(); + reset = true; return; } if (listen(socket, 0) != 0) { - shared.reset(); - return; + reset = true; } }); + if (reset) { + shared.reset(); + } } }