mirror of
https://github.com/BeamMP/BeamMP-Launcher.git
synced 2025-07-01 15:36:10 +00:00
Fix recv return type and better download error handling
This commit is contained in:
parent
ad7177bec8
commit
472e2d16b6
@ -141,7 +141,7 @@ void GetServerInfo(std::string Data) {
|
|||||||
const std::string buffer = ([&]() -> std::string {
|
const std::string buffer = ([&]() -> std::string {
|
||||||
int32_t Header;
|
int32_t Header;
|
||||||
std::vector<char> data(sizeof(Header));
|
std::vector<char> 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 {
|
auto checkBytes = ([&](const int32_t bytes) -> bool {
|
||||||
if (bytes == 0) {
|
if (bytes == 0) {
|
||||||
@ -352,7 +352,8 @@ void Parse(std::string Data, SOCKET CSocket) {
|
|||||||
}
|
}
|
||||||
void GameHandler(SOCKET Client) {
|
void GameHandler(SOCKET Client) {
|
||||||
CoreSocket = Client;
|
CoreSocket = Client;
|
||||||
int32_t Size, Temp, Rcv;
|
int32_t Size, Rcv;
|
||||||
|
int Temp;
|
||||||
char Header[10] = { 0 };
|
char Header[10] = { 0 };
|
||||||
do {
|
do {
|
||||||
Rcv = 0;
|
Rcv = 0;
|
||||||
|
@ -262,7 +262,8 @@ void TCPGameServer(const std::string& IP, int Port) {
|
|||||||
NetMainThread = std::make_unique<std::thread>(NetMain, IP, Port);
|
NetMainThread = std::make_unique<std::thread>(NetMain, IP, Port);
|
||||||
CServer = false;
|
CServer = false;
|
||||||
}
|
}
|
||||||
int32_t Size, Temp, Rcv;
|
int32_t Size, Rcv;
|
||||||
|
int Temp;
|
||||||
char Header[10] = { 0 };
|
char Header[10] = { 0 };
|
||||||
|
|
||||||
// Read byte by byte until '>' is rcved then get the size and read based on it
|
// Read byte by byte until '>' is rcved then get the size and read based on it
|
||||||
|
@ -164,9 +164,12 @@ std::vector<char> TCPRcvRaw(SOCKET Sock, uint64_t& GRcv, uint64_t Size) {
|
|||||||
do {
|
do {
|
||||||
// receive at most some MB at a time
|
// receive at most some MB at a time
|
||||||
int Len = std::min(int(Size - Rcv), 1 * 1024 * 1024);
|
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) {
|
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");
|
UUl("Socket Closed Code 1");
|
||||||
KillSocket(Sock);
|
KillSocket(Sock);
|
||||||
Terminate = true;
|
Terminate = true;
|
||||||
|
@ -81,7 +81,8 @@ std::string TCPRcv(SOCKET Sock) {
|
|||||||
UUl("Invalid Socket");
|
UUl("Invalid Socket");
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
int32_t Header, Temp;
|
int32_t Header;
|
||||||
|
int Temp;
|
||||||
std::vector<char> Data(sizeof(Header));
|
std::vector<char> Data(sizeof(Header));
|
||||||
Temp = recv(Sock, Data.data(), sizeof(Header), MSG_WAITALL);
|
Temp = recv(Sock, Data.data(), sizeof(Header), MSG_WAITALL);
|
||||||
if (!CheckBytes(Temp)) {
|
if (!CheckBytes(Temp)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user