summaryrefslogtreecommitdiff
path: root/src/server/publicServer.c
diff options
context:
space:
mode:
authorTomas Chvatal (scarabeus) <tomas.chvatal@gmail.com>2008-10-22 22:50:54 +0200
committerTomas Chvatal (scarabeus) <tomas.chvatal@gmail.com>2008-10-22 22:50:54 +0200
commite12753d2ec9db83ec08bb9db63902a82fb245cdd (patch)
tree6e4a63b790d6335f969f88b797a927e0fb25f37a /src/server/publicServer.c
parent0b4d9821c7333b8c4bdf7e0eeb750aef502a1137 (diff)
X
Diffstat (limited to 'src/server/publicServer.c')
-rw-r--r--src/server/publicServer.c446
1 files changed, 225 insertions, 221 deletions
diff --git a/src/server/publicServer.c b/src/server/publicServer.c
index 8770300..a3c7326 100644
--- a/src/server/publicServer.c
+++ b/src/server/publicServer.c
@@ -47,326 +47,330 @@ extern int errno;
#define __PACKED__ __attribute__ ((__packed__))
-void countRoundInc()
+void
+countRoundInc()
{
}
-char *getSetting(char *env, char *param, char *default_val)
+char *
+getSetting(char *env, char *param, char *default_val)
{
- return getParamElse(param, getServerConfigFileValue(env, default_val) );
+ return getParamElse(param, getServerConfigFileValue(env, default_val));
}
-static int registerPublicServer()
+static int
+registerPublicServer()
{
#ifndef __WIN32
- int s;
+ int s;
#else
- SOCKET s;
+ SOCKET s;
#endif
- /* TODO: dodelat TCP makro */
- struct sockaddr_in server;
- char *master_server_ip;
+ /* TODO: dodelat TCP makro */
+ struct sockaddr_in server;
+ char *master_server_ip;
- master_server_ip = getIPFormDNS(NET_MASTER_SERVER_DOMAIN);
+ master_server_ip = getIPFormDNS(NET_MASTER_SERVER_DOMAIN);
- //printf("master_server_ip = %s\n", master_server_ip);
+ //printf("master_server_ip = %s\n", master_server_ip);
- if( master_server_ip == NULL ) // master server is down
- {
- return -1;
- }
+ if (master_server_ip == NULL) // master server is down
+ {
+ return -1;
+ }
- server.sin_family = AF_INET;
- server.sin_port = htons (NET_MASTER_PORT);
- server.sin_addr.s_addr = inet_addr (master_server_ip);
-
- free(master_server_ip);
+ server.sin_family = AF_INET;
+ server.sin_port = htons(NET_MASTER_PORT);
+ server.sin_addr.s_addr = inet_addr(master_server_ip);
- if ((s = socket (AF_INET, SOCK_STREAM, 0)) < 0) {
- return 0;
- }
+ free(master_server_ip);
- /* Set to nonblocking socket mode */
+ if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
+ return 0;
+ }
+
+ /* Set to nonblocking socket mode */
#ifndef __WIN32__
- int oldFlag;
+ int oldFlag;
- oldFlag = fcntl (s, F_GETFL, 0);
+ oldFlag = fcntl(s, F_GETFL, 0);
- if( fcntl(s, F_SETFL, oldFlag | O_NONBLOCK) == -1 )
- {
- return -1;
- }
+ if (fcntl(s, F_SETFL, oldFlag | O_NONBLOCK) == -1) {
+ return -1;
+ }
#else
- unsigned long arg = 1;
- // Operation is FIONBIO. Parameter is pointer on non-zero number.
- if( ioctlsocket(s, FIONBIO, &arg) == SOCKET_ERROR )
- {
- WSACleanup();
- return -1;
- }
+ unsigned long arg = 1;
+ // Operation is FIONBIO. Parameter is pointer on non-zero number.
+ if (ioctlsocket(s, FIONBIO, &arg) == SOCKET_ERROR) {
+ WSACleanup();
+ return -1;
+ }
#endif
- if( connect (s, (struct sockaddr *) &server, sizeof (server)) == -1 ) {
+ if (connect(s, (struct sockaddr *) &server, sizeof(server)) == -1) {
#ifndef __WIN32__
- if (errno != EINPROGRESS)
- return -1;
+ if (errno != EINPROGRESS)
+ return -1;
#else
- if (WSAGetLastError() != WSAEWOULDBLOCK) {
- WSACleanup();
- return -1;
- }
+ if (WSAGetLastError() != WSAEWOULDBLOCK) {
+ WSACleanup();
+ return -1;
+ }
#endif
- }
+ }
- struct timeval tv;
+ struct timeval tv;
- fd_set myset;
+ fd_set myset;
- FD_ZERO(&myset);
- FD_SET(s, &myset);
+ FD_ZERO(&myset);
+ FD_SET(s, &myset);
- tv.tv_sec = 3;
- tv.tv_usec = 0;
+ tv.tv_sec = 3;
+ tv.tv_usec = 0;
- int ret = select (s+1, NULL, &myset, NULL, &tv);
+ int ret = select(s + 1, NULL, &myset, NULL, &tv);
- if (ret == -1)
- return -1;
+ if (ret == -1)
+ return -1;
- if (ret == 0)
- return -1;
+ if (ret == 0)
+ return -1;
- FD_ZERO(&myset);
- FD_SET(s, &myset);
+ FD_ZERO(&myset);
+ FD_SET(s, &myset);
- tv.tv_sec = 1;
- tv.tv_usec = 0;
+ tv.tv_sec = 1;
+ tv.tv_usec = 0;
- ret = select (s+1, NULL, &myset, NULL, &tv);
+ ret = select(s + 1, NULL, &myset, NULL, &tv);
- if (ret == -1)
- return -1;
+ if (ret == -1)
+ return -1;
- if (ret == 0)
- return -1;
+ if (ret == 0)
+ return -1;
- typedef struct {
- unsigned char cmd;
- unsigned port;
- unsigned ip;
- } __PACKED__ register_head;
+ typedef struct
+ {
+ unsigned char cmd;
+ unsigned port;
+ unsigned ip;
+ } __PACKED__ register_head;
- char *str = (char *) malloc (sizeof (register_head));
+ char *str = (char *) malloc(sizeof(register_head));
- register_head *head = (register_head *) str;
+ register_head *head = (register_head *) str;
- head->cmd = 'p';
- head->port = atoi( getSetting("PORT4", "--port4", "2200") );
- head->ip = 0; // TODO
+ head->cmd = 'p';
+ head->port = atoi(getSetting("PORT4", "--port4", "2200"));
+ head->ip = 0; // TODO
- /* send request for server list */
- int r = send (s, str, 9, 0);
+ /* send request for server list */
+ int r = send(s, str, 9, 0);
- free (str);
+ free(str);
- if (r == -1) {
+ if (r == -1) {
#ifndef __WIN32
- close(s);
+ close(s);
#else
- closesocket(s);
+ closesocket(s);
#endif
- return -1;
- }
+ return -1;
+ }
#ifndef __WIN32
- close(s);
+ close(s);
#else
- closesocket(s);
+ closesocket(s);
#endif
- return 0;
+ return 0;
}
-static int initPublicServerNetwork()
+static int
+initPublicServerNetwork()
{
- char ip4[STR_IP_SIZE];
- char ip6[STR_IP_SIZE];
- char *p_ip4, *p_ip6;
- int port4;
- int port6;
- int ret;
+ char ip4[STR_IP_SIZE];
+ char ip6[STR_IP_SIZE];
+ char *p_ip4, *p_ip6;
+ int port4;
+ int port6;
+ int ret;
+
+ ret = -1;
- ret = -1;
+ strcpy(ip4, getSetting("IP4", "--ip4", "none"));
+ strcpy(ip6, getSetting("IP6", "--ip6", "none"));
- strcpy(ip4, getSetting("IP4", "--ip4", "none" ) );
- strcpy(ip6, getSetting("IP6", "--ip6", "none" ) );
+ p_ip4 = ip4;
- p_ip4 = ip4;
+ if (strcmp(ip4, "none") == 0) {
+ p_ip4 = NULL;
+ }
- if( strcmp(ip4, "none") == 0 )
- {
- p_ip4 = NULL;
- }
+ p_ip6 = ip6;
- p_ip6 = ip6;
+ if (strcmp(ip6, "none") == 0) {
+ p_ip6 = NULL;
+ }
- if( strcmp(ip6, "none") == 0 )
- {
- p_ip6 = NULL;
- }
+ port4 = atoi(getSetting("PORT4", "--port4", "2200"));
+ port6 = atoi(getSetting("PORT6", "--port6", "2200"));
- port4 = atoi( getSetting("PORT4", "--port4", "2200") );
- port6 = atoi( getSetting("PORT6", "--port6", "2200") );
+ //ret = initNetMulitplayerPublicServer(p_ip4, port4, p_ip6, port6);
- //ret = initNetMulitplayerPublicServer(p_ip4, port4, p_ip6, port6);
-
- ret = initNetMuliplayerForGameServer(p_ip4, port4, p_ip6, port6);
+ ret = initNetMuliplayerForGameServer(p_ip4, port4, p_ip6, port6);
- return ret;
+ return ret;
}
-static void loadArena()
+static void
+loadArena()
{
- choice_arenaFile = getArenaFileFormNetName( getSetting("ARENA", "--arena", "FAGN") );
- arena = getArena(choice_arenaFile);
- setCurrentArena(arena);
+ choice_arenaFile =
+ getArenaFileFormNetName(getSetting("ARENA", "--arena", "FAGN"));
+ arena = getArena(choice_arenaFile);
+ setCurrentArena(arena);
}
-int initPublicServer()
+int
+initPublicServer()
{
- int ret;
- int i;
-
- initListID();
- initModule();
- initArenaFile();
- initTux();
- initItem();
- initShot();
- initServerConfigFile();
-
- ret = initLog(getSetting("LOG_FILE", "--log-file", "/tmp/tuxanci-server.log") );
-
- if( ret < 0 )
- {
- fprintf(stderr, _("I was unable to open config file!\n"));
- return -1;
- }
-
- initHeightScore( getSetting("SCORE_FILE", "--score-file", "/tmp/heightscore") );
-
- loadArena();
-
- for( i = 0 ; i < atoi(getSetting("ITEM", "--item", "10")) ; i++ )
- {
- addNewItem(arena->spaceItem, ID_UNKNOWN);
- }
-
- isSignalEnd = FALSE;
-
- ret = initPublicServerNetwork();
-
- if( ret < 0 )
- {
- printf(_("Unable to initialize network socket!\n"));
- return -1;
- }
-
- setServerMaxClients( atoi( getSetting("MAX_CLIENTS", "--max-clients", "32") ));
-
- if (registerPublicServer() < 0)
- {
- printf(_("Unable to contact MasterServer!)\n"));
- }
-
- return 0;
+ int ret;
+ int i;
+
+ initListID();
+ initModule();
+ initArenaFile();
+ initTux();
+ initItem();
+ initShot();
+ initServerConfigFile();
+
+ ret =
+ initLog(getSetting
+ ("LOG_FILE", "--log-file", "/tmp/tuxanci-server.log"));
+
+ if (ret < 0) {
+ fprintf(stderr, _("I was unable to open config file!\n"));
+ return -1;
+ }
+
+ initHeightScore(getSetting
+ ("SCORE_FILE", "--score-file", "/tmp/heightscore"));
+
+ loadArena();
+
+ for (i = 0; i < atoi(getSetting("ITEM", "--item", "10")); i++) {
+ addNewItem(arena->spaceItem, ID_UNKNOWN);
+ }
+
+ isSignalEnd = FALSE;
+
+ ret = initPublicServerNetwork();
+
+ if (ret < 0) {
+ printf(_("Unable to initialize network socket!\n"));
+ return -1;
+ }
+
+ setServerMaxClients(atoi
+ (getSetting("MAX_CLIENTS", "--max-clients", "32")));
+
+ if (registerPublicServer() < 0) {
+ printf(_("Unable to contact MasterServer!)\n"));
+ }
+
+ return 0;
}
-arenaFile_t* getChoiceArena()
+arenaFile_t *
+getChoiceArena()
{
- return choice_arenaFile;
+ return choice_arenaFile;
}
-void eventPublicServer()
+void
+eventPublicServer()
{
- static my_time_t lastActive = 0;
- my_time_t interval;
+ static my_time_t lastActive = 0;
+ my_time_t interval;
- eventNetMultiplayer();
+ eventNetMultiplayer();
- if( isSignalEnd == TRUE )
- {
- quitPublicServer();
- }
+ if (isSignalEnd == TRUE) {
+ quitPublicServer();
+ }
- if( lastActive == 0 )
- {
- lastActive = getMyTime();
- }
+ if (lastActive == 0) {
+ lastActive = getMyTime();
+ }
- interval = getMyTime() - lastActive;
+ interval = getMyTime() - lastActive;
- if( interval < 50 )
- {
- return;
- }
+ if (interval < 50) {
+ return;
+ }
- //printf("interval = %d\n", interval);
+ //printf("interval = %d\n", interval);
- lastActive = getMyTime();
+ lastActive = getMyTime();
- eventArena(arena);
+ eventArena(arena);
}
-void my_handler_quit(int n)
+void
+my_handler_quit(int n)
{
#ifdef DEBUG
- printf("my_handler_quit\n");
+ printf("my_handler_quit\n");
#endif
- isSignalEnd = TRUE;
+ isSignalEnd = TRUE;
}
-void quitPublicServer()
+void
+quitPublicServer()
{
#ifdef DEBUG
- printf(_("Quitting public server\n"));
+ printf(_("Quitting public server\n"));
#endif
- quitNetMultiplayer();
- destroyArena(arena);
-
- quitTux();
- quitItem();
- quitShot();
-
- quitArenaFile();
- quitServerConfigFile();
- quitModule();
- quitListID();
- quitHeightScore();
- quitLog();
-
- exit(0);
+ quitNetMultiplayer();
+ destroyArena(arena);
+
+ quitTux();
+ quitItem();
+ quitShot();
+
+ quitArenaFile();
+ quitServerConfigFile();
+ quitModule();
+ quitListID();
+ quitHeightScore();
+ quitLog();
+
+ exit(0);
}
-int startPublicServer()
+int
+startPublicServer()
{
#ifndef __WIN32__
- signal(SIGINT, my_handler_quit);
- signal(SIGTERM, my_handler_quit);
- signal(SIGQUIT, my_handler_quit);
+ signal(SIGINT, my_handler_quit);
+ signal(SIGTERM, my_handler_quit);
+ signal(SIGQUIT, my_handler_quit);
#endif
- if( initPublicServer() < 0 )
- {
- quitPublicServer();
- return -1;
- }
-
- while(1)
- {
- eventPublicServer();
- }
-
- return 0;
+ if (initPublicServer() < 0) {
+ quitPublicServer();
+ return -1;
+ }
+
+ while (1) {
+ eventPublicServer();
+ }
+
+ return 0;
}