From 472e2d16b60aa049184f299ba299e2275b0b4c8d Mon Sep 17 00:00:00 2001 From: Tixx <83774803+WiserTixx@users.noreply.github.com> Date: Fri, 28 Mar 2025 23:47:59 +0100 Subject: [PATCH] Fix recv return type and better download error handling --- src/Network/Core.cpp | 5 +++-- src/Network/GlobalHandler.cpp | 3 ++- src/Network/Resources.cpp | 7 +++++-- src/Network/VehicleEvent.cpp | 3 ++- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/Network/Core.cpp b/src/Network/Core.cpp index ab63bc0..9121f2a 100644 --- a/src/Network/Core.cpp +++ b/src/Network/Core.cpp @@ -141,7 +141,7 @@ void GetServerInfo(std::string Data) { const std::string buffer = ([&]() -> std::string { int32_t Header; std::vector data(sizeof(Header)); - int32_t Temp = recv(ISock, data.data(), sizeof(Header), MSG_WAITALL); + int Temp = recv(ISock, data.data(), sizeof(Header), MSG_WAITALL); auto checkBytes = ([&](const int32_t bytes) -> bool { if (bytes == 0) { @@ -352,7 +352,8 @@ void Parse(std::string Data, SOCKET CSocket) { } void GameHandler(SOCKET Client) { CoreSocket = Client; - int32_t Size, Temp, Rcv; + int32_t Size, Rcv; + int Temp; char Header[10] = { 0 }; do { Rcv = 0; diff --git a/src/Network/GlobalHandler.cpp b/src/Network/GlobalHandler.cpp index af1dedd..65141e0 100644 --- a/src/Network/GlobalHandler.cpp +++ b/src/Network/GlobalHandler.cpp @@ -262,7 +262,8 @@ void TCPGameServer(const std::string& IP, int Port) { NetMainThread = std::make_unique(NetMain, IP, Port); CServer = false; } - int32_t Size, Temp, Rcv; + int32_t Size, Rcv; + int Temp; char Header[10] = { 0 }; // Read byte by byte until '>' is rcved then get the size and read based on it diff --git a/src/Network/Resources.cpp b/src/Network/Resources.cpp index 876c6f1..6d2803b 100644 --- a/src/Network/Resources.cpp +++ b/src/Network/Resources.cpp @@ -164,9 +164,12 @@ std::vector TCPRcvRaw(SOCKET Sock, uint64_t& GRcv, uint64_t Size) { do { // receive at most some MB at a time int Len = std::min(int(Size - Rcv), 1 * 1024 * 1024); - int32_t Temp = recv(Sock, &File[Rcv], Len, MSG_WAITALL); + int Temp = recv(Sock, &File[Rcv], Len, MSG_WAITALL); if (Temp < 1) { - info(std::to_string(Temp)); + debug("Recv returned: " + std::to_string(Temp)); + if (Temp == -1) { + error("Socket error during download: " + std::to_string(WSAGetLastError())); + } UUl("Socket Closed Code 1"); KillSocket(Sock); Terminate = true; diff --git a/src/Network/VehicleEvent.cpp b/src/Network/VehicleEvent.cpp index 91a06c0..dcbb41e 100644 --- a/src/Network/VehicleEvent.cpp +++ b/src/Network/VehicleEvent.cpp @@ -81,7 +81,8 @@ std::string TCPRcv(SOCKET Sock) { UUl("Invalid Socket"); return ""; } - int32_t Header, Temp; + int32_t Header; + int Temp; std::vector Data(sizeof(Header)); Temp = recv(Sock, Data.data(), sizeof(Header), MSG_WAITALL); if (!CheckBytes(Temp)) {