From 437da38a26548714e6e1640722148f0f9f601ccb Mon Sep 17 00:00:00 2001 From: oroborus Date: Mon, 17 Mar 2008 20:29:34 +0000 Subject: - opravena chyba, clent nacital iba _jeden_ sietovy packet za 50 ms ( ano aj ked ich prislo viacej) - server pinguje clientov a na zaklade toho client vie, ci server nespadol - publicserver sa da korektne vypnut signalom SIGQUIT - publicserver bol pretiahnuty cez valgrind, teraz za pocet volani funkcie malloc rovna poctu volani funkcie free - v sietovom multiplayeri sa da chodit cez teleporty a strielat do teleportov - do rur sa da siez strielat git-svn-id: http://opensvn.csie.org/tuxanci_ng@24 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e --- src/publicServer.c | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'src/publicServer.c') diff --git a/src/publicServer.c b/src/publicServer.c index 8206062..7e1d56e 100644 --- a/src/publicServer.c +++ b/src/publicServer.c @@ -21,6 +21,7 @@ static int arenaId; static arena_t *arena; +static bool_t isSignalEnd; arena_t* getWorldArena() { @@ -31,7 +32,7 @@ void countRoundInc() { } -void initPublicServer() +int initPublicServer() { initArenaFile(); initTux(); @@ -42,8 +43,15 @@ void initPublicServer() arenaId = getArenaIdFormNetName( getParamElse("--arena", "FAGN") ); arena = getArena(arenaId); addNewItem(arena->listItem, NULL); + isSignalEnd = FALSE; - initNetMuliplayer(NET_GAME_TYPE_SERVER, NULL, atoi( getParamElse("--port", "2200") ) ); + if( initNetMuliplayer(NET_GAME_TYPE_SERVER, NULL, atoi( getParamElse("--port", "2200") ) ) < 0 ) + { + printf("Nemozem inicalizovat sietovy socket !\n"); + return -1; + } + + return 0; } int getChoiceArenaId() @@ -92,6 +100,11 @@ void eventPublicServer() eventNetMultiplayer(); + if( isSignalEnd == TRUE ) + { + quitPublicServer(); + } + if( lastActive == 0 ) { lastActive = getMyTime(); @@ -103,6 +116,7 @@ void eventPublicServer() { return; } + /* printf("interval = %d\n", interval); */ @@ -123,10 +137,19 @@ void eventPublicServer() eventTimer(); } +void my_handler_quit(int n) +{ + printf("my_handler_quit\n"); + isSignalEnd = TRUE; +} + void quitPublicServer() { printf("quit public server\n"); quitNetMultiplayer(); destroyArena(arena); + quitArenaFile(); quitTimer(); + exit(0); } + -- cgit v1.2.3