refactor tcp receive to be less weird

This commit is contained in:
Lion Kortlepel 2024-09-22 20:31:25 +02:00
parent 1260515a40
commit 0b589a74c9
No known key found for this signature in database
GPG Key ID: 4322FF2B4C71259B

View File

@ -82,32 +82,26 @@ std::string TCPRcv(SOCKET Sock) {
UUl("Invalid Socket"); UUl("Invalid Socket");
return ""; return "";
} }
int32_t Header, BytesRcv = 0, Temp; int32_t Header, Temp;
std::vector<char> Data(sizeof(Header)); std::vector<char> Data(sizeof(Header));
do { Temp = recv(Sock, Data.data(), sizeof(Header), MSG_WAITALL);
Temp = recv(Sock, &Data[BytesRcv], 4 - BytesRcv, 0); if (!CheckBytes(Temp)) {
if (!CheckBytes(Temp)) { UUl("Socket Closed Code 3");
UUl("Socket Closed Code 3"); return "";
return ""; }
} memcpy(&Header, Data.data(), sizeof(Header));
BytesRcv += Temp;
} while (BytesRcv < 4);
memcpy(&Header, &Data[0], sizeof(Header));
if (!CheckBytes(BytesRcv)) { if (!CheckBytes(Temp)) {
UUl("Socket Closed Code 4"); UUl("Socket Closed Code 4");
return ""; return "";
} }
Data.resize(Header);
BytesRcv = 0; Data.resize(Header, 0);
do { Temp = recv(Sock, Data.data(), Header, MSG_WAITALL);
Temp = recv(Sock, &Data[BytesRcv], Header - BytesRcv, 0); if (!CheckBytes(Temp)) {
if (!CheckBytes(Temp)) { UUl("Socket Closed Code 5");
UUl("Socket Closed Code 5"); return "";
return ""; }
}
BytesRcv += Temp;
} while (BytesRcv < Header);
std::string Ret(Data.data(), Header); std::string Ret(Data.data(), Header);