MCPcopy Create free account
hub / github.com/OpenTTD/OpenTTD / Receive_SERVER_ERROR

Method Receive_SERVER_ERROR

src/network/network_client.cpp:580–628  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

578}
579
580NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_ERROR(Packet &p)
581{
582 static const StringID network_error_strings[] = {
583 STR_NETWORK_ERROR_LOSTCONNECTION, // NETWORK_ERROR_GENERAL
584 STR_NETWORK_ERROR_LOSTCONNECTION, // NETWORK_ERROR_DESYNC
585 STR_NETWORK_ERROR_LOSTCONNECTION, // NETWORK_ERROR_SAVEGAME_FAILED
586 STR_NETWORK_ERROR_LOSTCONNECTION, // NETWORK_ERROR_CONNECTION_LOST
587 STR_NETWORK_ERROR_LOSTCONNECTION, // NETWORK_ERROR_ILLEGAL_PACKET
588 STR_NETWORK_ERROR_LOSTCONNECTION, // NETWORK_ERROR_NEWGRF_MISMATCH
589 STR_NETWORK_ERROR_SERVER_ERROR, // NETWORK_ERROR_NOT_AUTHORIZED
590 STR_NETWORK_ERROR_SERVER_ERROR, // NETWORK_ERROR_NOT_EXPECTED
591 STR_NETWORK_ERROR_WRONG_REVISION, // NETWORK_ERROR_WRONG_REVISION
592 STR_NETWORK_ERROR_LOSTCONNECTION, // NETWORK_ERROR_NAME_IN_USE
593 STR_NETWORK_ERROR_WRONG_PASSWORD, // NETWORK_ERROR_WRONG_PASSWORD
594 STR_NETWORK_ERROR_SERVER_ERROR, // NETWORK_ERROR_COMPANY_MISMATCH
595 STR_NETWORK_ERROR_KICKED, // NETWORK_ERROR_KICKED
596 STR_NETWORK_ERROR_CHEATER, // NETWORK_ERROR_CHEATER
597 STR_NETWORK_ERROR_SERVER_FULL, // NETWORK_ERROR_FULL
598 STR_NETWORK_ERROR_TOO_MANY_COMMANDS, // NETWORK_ERROR_TOO_MANY_COMMANDS
599 STR_NETWORK_ERROR_TIMEOUT_PASSWORD, // NETWORK_ERROR_TIMEOUT_PASSWORD
600 STR_NETWORK_ERROR_TIMEOUT_COMPUTER, // NETWORK_ERROR_TIMEOUT_COMPUTER
601 STR_NETWORK_ERROR_TIMEOUT_MAP, // NETWORK_ERROR_TIMEOUT_MAP
602 STR_NETWORK_ERROR_TIMEOUT_JOIN, // NETWORK_ERROR_TIMEOUT_JOIN
603 STR_NETWORK_ERROR_INVALID_CLIENT_NAME, // NETWORK_ERROR_INVALID_CLIENT_NAME
604 STR_NETWORK_ERROR_NOT_ON_ALLOW_LIST, // NETWORK_ERROR_NOT_ON_ALLOW_LIST
605 STR_NETWORK_ERROR_SERVER_ERROR, // NETWORK_ERROR_NO_AUTHENTICATION_METHOD_AVAILABLE
606 };
607 static_assert(lengthof(network_error_strings) == NETWORK_ERROR_END);
608
609 NetworkErrorCode error = (NetworkErrorCode)p.Recv_uint8();
610
611 Debug(net, 9, "Client::Receive_SERVER_ERROR(): error={}", error);
612
613 StringID err = STR_NETWORK_ERROR_LOSTCONNECTION;
614 if (error < (ptrdiff_t)lengthof(network_error_strings)) err = network_error_strings[error];
615 /* In case of kicking a client, we assume there is a kick message in the packet if we can read one byte */
616 if (error == NETWORK_ERROR_KICKED && p.CanReadFromPacket(1)) {
617 ShowErrorMessage(GetEncodedString(err),
618 GetEncodedString(STR_NETWORK_ERROR_KICK_MESSAGE, p.Recv_string(NETWORK_CHAT_LENGTH)),
619 WL_CRITICAL);
620 } else {
621 ShowErrorMessage(GetEncodedString(err), {}, WL_CRITICAL);
622 }
623
624 /* Perform an emergency save if we had already entered the game */
625 if (this->status == STATUS_ACTIVE) ClientNetworkEmergencySave();
626
627 return NETWORK_RECV_STATUS_SERVER_ERROR;
628}
629
630NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CHECK_NEWGRFS(Packet &p)
631{

Callers

nothing calls this directly

Calls 6

ShowErrorMessageFunction · 0.85
Recv_uint8Method · 0.80
CanReadFromPacketMethod · 0.80
Recv_stringMethod · 0.80
GetEncodedStringFunction · 0.50

Tested by

no test coverage detected