From ef9c5a65cf7eb6ecf58f8a1e4cc36c8d2c9cbb98 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Tue, 9 Aug 2022 23:26:33 -0500 Subject: [PATCH] Return a better error code when the control stream connection fails --- src/ControlStream.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/ControlStream.c b/src/ControlStream.c index 900d47a..8b74fd4 100644 --- a/src/ControlStream.c +++ b/src/ControlStream.c @@ -1214,12 +1214,24 @@ int startControlStream(void) { else { Limelog("Failed to establish ENet connection on UDP port %u: unexpected event %d (error: %d)\n", ControlPortNumber, event.type, LastSocketError()); } + stopping = true; enet_peer_reset(peer); peer = NULL; enet_host_destroy(client); client = NULL; - return ETIMEDOUT; + + if (err == 0) { + return ETIMEDOUT; + } + else if (err > 0 && event.type != ENET_EVENT_TYPE_CONNECT && LastSocketError() == 0) { + // If we got an unexpected event type and have no other error to return, return the event type + LC_ASSERT(event.type != ENET_EVENT_TYPE_NONE); + return event.type != ENET_EVENT_TYPE_NONE ? event.type : LastSocketFail(); + } + else { + return LastSocketFail(); + } } // Ensure the connect verify ACK is sent immediately