From 0b589a74c9cfc805fe1d71f403a6c15c811a5cfd Mon Sep 17 00:00:00 2001 From: Lion Kortlepel Date: Sun, 22 Sep 2024 20:31:25 +0200 Subject: [PATCH] refactor tcp receive to be less weird --- src/Network/VehicleEvent.cpp | 36 +++++++++++++++--------------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/src/Network/VehicleEvent.cpp b/src/Network/VehicleEvent.cpp index 7201763..b31f097 100644 --- a/src/Network/VehicleEvent.cpp +++ b/src/Network/VehicleEvent.cpp @@ -82,32 +82,26 @@ std::string TCPRcv(SOCKET Sock) { UUl("Invalid Socket"); return ""; } - int32_t Header, BytesRcv = 0, Temp; + int32_t Header, Temp; std::vector Data(sizeof(Header)); - do { - Temp = recv(Sock, &Data[BytesRcv], 4 - BytesRcv, 0); - if (!CheckBytes(Temp)) { - UUl("Socket Closed Code 3"); - return ""; - } - BytesRcv += Temp; - } while (BytesRcv < 4); - memcpy(&Header, &Data[0], sizeof(Header)); + Temp = recv(Sock, Data.data(), sizeof(Header), MSG_WAITALL); + if (!CheckBytes(Temp)) { + UUl("Socket Closed Code 3"); + return ""; + } + memcpy(&Header, Data.data(), sizeof(Header)); - if (!CheckBytes(BytesRcv)) { + if (!CheckBytes(Temp)) { UUl("Socket Closed Code 4"); return ""; } - Data.resize(Header); - BytesRcv = 0; - do { - Temp = recv(Sock, &Data[BytesRcv], Header - BytesRcv, 0); - if (!CheckBytes(Temp)) { - UUl("Socket Closed Code 5"); - return ""; - } - BytesRcv += Temp; - } while (BytesRcv < Header); + + Data.resize(Header, 0); + Temp = recv(Sock, Data.data(), Header, MSG_WAITALL); + if (!CheckBytes(Temp)) { + UUl("Socket Closed Code 5"); + return ""; + } std::string Ret(Data.data(), Header);