--- a/network.c Tue May 02 12:54:23 2006 +0000
+++ b/network.c Tue May 02 12:58:13 2006 +0000
@@ -256,6 +256,36 @@
_networking = false;
}
+/** Retrieve a string representation of an internal error number
+ * @param buf buffer where the error message will be stored
+ * @param err NetworkErrorCode (integer)
+ * @return returns a pointer to the error message (buf) */
+char *GetNetworkErrorMsg(char *buf, NetworkErrorCode err)
+{
+ /* List of possible network errors, used by
+ * PACKET_SERVER_ERROR and PACKET_CLIENT_ERROR */
+ static const StringID network_error_strings[] = {
+ STR_NETWORK_ERR_CLIENT_GENERAL,
+ STR_NETWORK_ERR_CLIENT_DESYNC,
+ STR_NETWORK_ERR_CLIENT_SAVEGAME,
+ STR_NETWORK_ERR_CLIENT_CONNECTION_LOST,
+ STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR,
+ STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED,
+ STR_NETWORK_ERR_CLIENT_NOT_EXPECTED,
+ STR_NETWORK_ERR_CLIENT_WRONG_REVISION,
+ STR_NETWORK_ERR_CLIENT_NAME_IN_USE,
+ STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD,
+ STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH,
+ STR_NETWORK_ERR_CLIENT_KICKED,
+ STR_NETWORK_ERR_CLIENT_CHEATER,
+ STR_NETWORK_ERR_CLIENT_SERVER_FULL,
+ };
+
+ if (err >= lengthof(network_error_strings)) err = 0;
+
+ return GetString(buf, network_error_strings[err]);
+}
+
// Find all IP-aliases for this host
static void NetworkFindIPs(void)
{
@@ -524,7 +554,7 @@
NetworkGetClientName(client_name, sizeof(client_name), cs);
- GetString(str, STR_NETWORK_ERR_CLIENT_GENERAL + errorno);
+ GetNetworkErrorMsg(str, errorno);
NetworkTextMessage(NETWORK_ACTION_LEAVE, 1, false, client_name, "%s", str);
--- a/network_client.c Tue May 02 12:54:23 2006 +0000
+++ b/network_client.c Tue May 02 12:58:13 2006 +0000
@@ -683,15 +683,12 @@
DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_ERROR_QUIT)
{
- int errorno;
char str[100];
uint16 index;
NetworkClientInfo *ci;
index = NetworkRecv_uint16(MY_CLIENT, p);
- errorno = NetworkRecv_uint8(MY_CLIENT, p);
-
- GetString(str, STR_NETWORK_ERR_CLIENT_GENERAL + errorno);
+ GetNetworkErrorMsg(str, NetworkRecv_uint8(MY_CLIENT, p));
ci = NetworkFindClientInfoFromIndex(index);
if (ci != NULL) {
--- a/network_data.h Tue May 02 12:54:23 2006 +0000
+++ b/network_data.h Tue May 02 12:58:13 2006 +0000
@@ -230,6 +230,7 @@
NetworkClientInfo *NetworkFindClientInfoFromIP(const char *ip);
NetworkClientState *NetworkFindClientStateFromIndex(uint16 client_index);
unsigned long NetworkResolveHost(const char *hostname);
+char *GetNetworkErrorMsg(char *buf, NetworkErrorCode err);
#endif /* ENABLE_NETWORK */
--- a/network_server.c Tue May 02 12:54:23 2006 +0000
+++ b/network_server.c Tue May 02 12:58:13 2006 +0000
@@ -29,24 +29,6 @@
void NetworkPopulateCompanyInfo(void);
-/* List of possible network errors, used by PACKET_SERVER_ERROR and PACKET_CLIENT_ERROR */
-static const StringID _network_error_strings[] = {
- STR_NETWORK_ERR_CLIENT_GENERAL,
- STR_NETWORK_ERR_CLIENT_DESYNC,
- STR_NETWORK_ERR_CLIENT_SAVEGAME,
- STR_NETWORK_ERR_CLIENT_CONNECTION_LOST,
- STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR,
- STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED,
- STR_NETWORK_ERR_CLIENT_NOT_EXPECTED,
- STR_NETWORK_ERR_CLIENT_WRONG_REVISION,
- STR_NETWORK_ERR_CLIENT_NAME_IN_USE,
- STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD,
- STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH,
- STR_NETWORK_ERR_CLIENT_KICKED,
- STR_NETWORK_ERR_CLIENT_CHEATER,
- STR_NETWORK_ERR_CLIENT_SERVER_FULL,
-};
-
// **********
// Sending functions
// DEF_SERVER_SEND_COMMAND has parameter: NetworkClientState *cs
@@ -165,12 +147,10 @@
Packet *p = NetworkSend_Init(PACKET_SERVER_ERROR);
- if (error >= lengthof(_network_error_strings)) error = 0;
-
NetworkSend_uint8(p, error);
NetworkSend_Packet(p, cs);
- GetString(str, _network_error_strings[error]);
+ GetNetworkErrorMsg(str, error);
// Only send when the current client was in game
if (cs->status > STATUS_AUTH) {
@@ -909,8 +889,8 @@
// This packets means a client noticed an error and is reporting this
// to us. Display the error and report it to the other clients
NetworkClientState *new_cs;
+ char str[100];
NetworkErrorCode errorno = NetworkRecv_uint8(cs, p);
- char str[100];
char client_name[NETWORK_CLIENT_NAME_LENGTH];
// The client was never joined.. thank the client for the packet, but ignore it
@@ -921,9 +901,7 @@
NetworkGetClientName(client_name, sizeof(client_name), cs);
- if (errorno >= lengthof(_network_error_strings)) errorno = 0;
-
- GetString(str, _network_error_strings[errorno]);
+ GetNetworkErrorMsg(str, errorno);
DEBUG(net, 2)("[NET] %s reported an error and is closing his connection (%s)", client_name, str);