Fixed ? ping

This commit is contained in:
Anonymous275 2020-11-13 00:30:03 +02:00
parent cf13396c96
commit d5466bb68a
6 changed files with 28 additions and 17 deletions

View File

@ -16,6 +16,7 @@ extern std::string MStatus;
extern std::string UlStatus; extern std::string UlStatus;
extern std::string ListOfMods; extern std::string ListOfMods;
void UDPSend(std::string Data); void UDPSend(std::string Data);
int KillSocket(uint64_t Dead);
void CoreNetwork(); void CoreNetwork();
void GameSend(std::string Data); void GameSend(std::string Data);
void SendLarge(std::string Data); void SendLarge(std::string Data);

View File

@ -128,7 +128,7 @@ void GameHandler(SOCKET Client){
if(Temp < 1)break; if(Temp < 1)break;
if(!isdigit(Header[Rcv]) && Header[Rcv] != '>') { if(!isdigit(Header[Rcv]) && Header[Rcv] != '>') {
error(Sec("(Core) Invalid lua communication")); error(Sec("(Core) Invalid lua communication"));
closesocket(Client); KillSocket(Client);
return; return;
} }
}while(Header[Rcv++] != '>'); }while(Header[Rcv++] != '>');
@ -155,7 +155,7 @@ void GameHandler(SOCKET Client){
} else { } else {
debug(Sec("(Core) recv failed with error: ") + std::to_string(WSAGetLastError())); debug(Sec("(Core) recv failed with error: ") + std::to_string(WSAGetLastError()));
} }
closesocket(Client); KillSocket(Client);
} }
void localRes(){ void localRes(){
MStatus = " "; MStatus = " ";
@ -197,7 +197,7 @@ void CoreMain() {
if (iRes == SOCKET_ERROR) { if (iRes == SOCKET_ERROR) {
error(Sec("(Core) bind failed with error: ") + std::to_string(WSAGetLastError())); error(Sec("(Core) bind failed with error: ") + std::to_string(WSAGetLastError()));
freeaddrinfo(res); freeaddrinfo(res);
closesocket(LSocket); KillSocket(LSocket);
WSACleanup(); WSACleanup();
return; return;
} }
@ -205,7 +205,7 @@ void CoreMain() {
if (iRes == SOCKET_ERROR) { if (iRes == SOCKET_ERROR) {
debug(Sec("(Core) listen failed with error: ") + std::to_string(WSAGetLastError())); debug(Sec("(Core) listen failed with error: ") + std::to_string(WSAGetLastError()));
freeaddrinfo(res); freeaddrinfo(res);
closesocket(LSocket); KillSocket(LSocket);
WSACleanup(); WSACleanup();
return; return;
} }
@ -220,7 +220,7 @@ void CoreMain() {
GameHandler(CSocket); GameHandler(CSocket);
warn(Sec("Game Reconnecting...")); warn(Sec("Game Reconnecting..."));
}while(CSocket); }while(CSocket);
closesocket(LSocket); KillSocket(LSocket);
WSACleanup(); WSACleanup();
} }
int Handle(EXCEPTION_POINTERS *ep){ int Handle(EXCEPTION_POINTERS *ep){

View File

@ -18,6 +18,11 @@ extern SOCKET UDPSock;
extern SOCKET TCPSock; extern SOCKET TCPSock;
SOCKET CSocket; SOCKET CSocket;
int KillSocket(uint64_t Dead){
shutdown(Dead,SD_BOTH);
return closesocket(Dead);
}
bool CheckBytes(uint32_t Bytes){ bool CheckBytes(uint32_t Bytes){
if(Bytes == 0){ if(Bytes == 0){
debug(Sec("(Proxy) Connection closing")); debug(Sec("(Proxy) Connection closing"));
@ -72,15 +77,20 @@ void ServerSend(std::string Data, bool Rel){
//debug("(Game->Launcher) : " + Data); //debug("(Game->Launcher) : " + Data);
} }
} }
void NetReset(){ void NetReset(){
TCPTerminate = false; TCPTerminate = false;
GConnected = false; GConnected = false;
Terminate = false; Terminate = false;
UlStatus = Sec("Ulstart"); UlStatus = Sec("Ulstart");
MStatus = " "; MStatus = " ";
if(UDPSock != SOCKET_ERROR)closesocket(UDPSock); if(UDPSock != SOCKET_ERROR){
KillSocket(UDPSock);
}
UDPSock = -1; UDPSock = -1;
if(TCPSock != SOCKET_ERROR)closesocket(TCPSock); if(TCPSock != SOCKET_ERROR){
KillSocket(TCPSock);
}
TCPSock = -1; TCPSock = -1;
ClearAll(); ClearAll();
} }
@ -117,7 +127,7 @@ SOCKET SetupListener(){
if (iRes == SOCKET_ERROR) { if (iRes == SOCKET_ERROR) {
error(Sec("(Proxy) bind failed with error: ") + std::to_string(WSAGetLastError())); error(Sec("(Proxy) bind failed with error: ") + std::to_string(WSAGetLastError()));
freeaddrinfo(result); freeaddrinfo(result);
closesocket(LSocket); KillSocket(LSocket);
WSACleanup(); WSACleanup();
return -1; return -1;
} }
@ -125,7 +135,7 @@ SOCKET SetupListener(){
iRes = listen(LSocket, SOMAXCONN); iRes = listen(LSocket, SOMAXCONN);
if (iRes == SOCKET_ERROR) { if (iRes == SOCKET_ERROR) {
error(Sec("(Proxy) listen failed with error: ") + std::to_string(WSAGetLastError())); error(Sec("(Proxy) listen failed with error: ") + std::to_string(WSAGetLastError()));
closesocket(LSocket); KillSocket(LSocket);
WSACleanup(); WSACleanup();
return -1; return -1;
} }
@ -236,5 +246,5 @@ void TCPGameServer(const std::string& IP, int Port){
if(LSocket == -1){ if(LSocket == -1){
UlStatus = Sec("Critical error! check the launcher logs"); UlStatus = Sec("Critical error! check the launcher logs");
} }
if(CSocket != SOCKET_ERROR)closesocket(CSocket); if(CSocket != SOCKET_ERROR)KillSocket(CSocket);
} }

View File

@ -47,7 +47,7 @@ void STCPSendRaw(SOCKET socket,const std::vector<char>& Data){
} }
else if (BytesSent < 0) { else if (BytesSent < 0) {
debug(Sec("(TCP) send failed with error: ") + std::to_string(WSAGetLastError())); debug(Sec("(TCP) send failed with error: ") + std::to_string(WSAGetLastError()));
closesocket(socket); KillSocket(socket);
Terminate = true; Terminate = true;
return; return;
} }
@ -67,7 +67,7 @@ std::pair<char*,size_t> STCPRecv(SOCKET socket){
return std::make_pair((char*)"",0); return std::make_pair((char*)"",0);
}else if (BytesRcv < 0) { }else if (BytesRcv < 0) {
info(Sec("(TCP) recv failed with error: ") + std::to_string(WSAGetLastError())); info(Sec("(TCP) recv failed with error: ") + std::to_string(WSAGetLastError()));
closesocket(socket); KillSocket(socket);
Terminate = true; Terminate = true;
return std::make_pair((char*)"",0); return std::make_pair((char*)"",0);
} }
@ -115,7 +115,7 @@ void Check(Hold* S){
std::this_thread::sleep_for(std::chrono::seconds(5)); std::this_thread::sleep_for(std::chrono::seconds(5));
if(S != nullptr){ if(S != nullptr){
if(!S->Done && S->TCPSock != -1){ if(!S->Done && S->TCPSock != -1){
closesocket(S->TCPSock); KillSocket(S->TCPSock);
} }
} }
} }

View File

@ -218,6 +218,6 @@ void UDPClientMain(const std::string& IP,int Port){
TCPSend(Sec("P")); TCPSend(Sec("P"));
UDPSend(Sec("p")); UDPSend(Sec("p"));
while(!Terminate)UDPRcv(); while(!Terminate)UDPRcv();
closesocket(UDPSock); KillSocket(UDPSock);
WSACleanup(); WSACleanup();
} }

View File

@ -20,7 +20,7 @@ bool CheckBytes(int32_t Bytes){
return false; return false;
}else if (Bytes < 0) { }else if (Bytes < 0) {
debug(Sec("(TCP) recv failed with error: ") + std::to_string(WSAGetLastError())); debug(Sec("(TCP) recv failed with error: ") + std::to_string(WSAGetLastError()));
closesocket(TCPSock); KillSocket(TCPSock);
Terminate = true; Terminate = true;
return false; return false;
} }
@ -107,7 +107,7 @@ void TCPClientMain(const std::string& IP,int Port){
if(RetCode != 0){ if(RetCode != 0){
UlStatus = Sec("UlConnection Failed!"); UlStatus = Sec("UlConnection Failed!");
std::cout << Sec("Client: connect failed! Error code: ") << WSAGetLastError() << std::endl; std::cout << Sec("Client: connect failed! Error code: ") << WSAGetLastError() << std::endl;
closesocket(TCPSock); KillSocket(TCPSock);
WSACleanup(); WSACleanup();
Terminate = true; Terminate = true;
return; return;
@ -118,7 +118,7 @@ void TCPClientMain(const std::string& IP,int Port){
while(!Terminate)TCPRcv(); while(!Terminate)TCPRcv();
GameSend(Sec("T")); GameSend(Sec("T"));
////Game Send Terminate ////Game Send Terminate
if(closesocket(TCPSock) != 0) if(KillSocket(TCPSock) != 0)
debug(Sec("(TCP) Cannot close socket. Error code: ") + std::to_string(WSAGetLastError())); debug(Sec("(TCP) Cannot close socket. Error code: ") + std::to_string(WSAGetLastError()));
if(WSACleanup() != 0) if(WSACleanup() != 0)