projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added support for protocol version check as first protocol command
[rocksndiamonds.git]
/
src
/
netserv.c
diff --git
a/src/netserv.c
b/src/netserv.c
index 02a014fd86f3757a6b3891bbb302b7cfb2007d1c..4b846f9da413425db5e86999fd149111f34ea77c 100644
(file)
--- a/
src/netserv.c
+++ b/
src/netserv.c
@@
-9,20
+9,16
@@
// netserv.c
// ============================================================================
// netserv.c
// ============================================================================
-#include "libgame/platform.h"
-
-#if defined(NETWORK_AVALIABLE)
-
#include <fcntl.h>
#include <sys/time.h>
#include <signal.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/time.h>
#include <signal.h>
#include <errno.h>
-#include "main.h"
-
#include "libgame/libgame.h"
#include "netserv.h"
#include "libgame/libgame.h"
#include "netserv.h"
+#include "main.h"
+
static int clients = 0;
static int onceonly = 0;
static int clients = 0;
static int onceonly = 0;
@@
-133,6
+129,7
@@
static void RemovePlayer(struct NetworkServerPlayerInfo *player)
free(player);
clients--;
free(player);
clients--;
+#if 0 /* do not terminate network server if last player disconnected */
if (onceonly && clients == 0)
{
if (options.verbose)
if (onceonly && clients == 0)
{
if (options.verbose)
@@
-142,6
+139,7
@@
static void RemovePlayer(struct NetworkServerPlayerInfo *player)
}
exit(0);
}
}
exit(0);
}
+#endif
}
static void AddPlayer(TCPsocket fd)
}
static void AddPlayer(TCPsocket fd)
@@
-591,10
+589,12
@@
void NetworkServer(int port, int serveronly)
memmove(player->readbuffer, player->readbuffer + 4 + len, player->nread);
buffer[0] = player->number;
memmove(player->readbuffer, player->readbuffer + 4 + len, player->nread);
buffer[0] = player->number;
- if (!player->introduced && buffer[1] != OP_PLAYER_NAME)
+ if (!player->introduced &&
+ buffer[1] != OP_PLAYER_NAME &&
+ buffer[1] != OP_PROTOCOL_VERSION)
{
if (options.verbose)
{
if (options.verbose)
- Error(ERR_NETWORK_SERVER, "!(client %d)->introduced && buffer[1]==%d (expected OP_PLAYER_NAME)", buffer[0], buffer[1]);
+ Error(ERR_NETWORK_SERVER, "!(client %d)->introduced && buffer[1]==%d (expected OP_PLAYER_NAME
or OP_PROTOCOL_VERSION
)", buffer[0], buffer[1]);
RemovePlayer(player);
interrupt = 1;
RemovePlayer(player);
interrupt = 1;
@@
-657,5
+657,3
@@
void NetworkServer(int port, int serveronly)
}
}
}
}
}
}
-
-#endif /* NETWORK_AVALIABLE */