about summary refs log tree commit diff
path: root/src/engine/server/es_server.c
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2008-03-24 15:33:12 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2008-03-24 15:33:12 +0000
commit8ff7c94ac268bde9fc928a7541b573312d142663 (patch)
tree2505bfd75979e3c3bcaec0ae32f2276d074516a8 /src/engine/server/es_server.c
parent30e78ec74a34b86b395247effee1bbbd8670bd50 (diff)
downloadzcatch-8ff7c94ac268bde9fc928a7541b573312d142663.tar.gz
zcatch-8ff7c94ac268bde9fc928a7541b573312d142663.zip
fixed some memory leaks
Diffstat (limited to 'src/engine/server/es_server.c')
-rw-r--r--src/engine/server/es_server.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/engine/server/es_server.c b/src/engine/server/es_server.c
index 91c3d758..a0c35772 100644
--- a/src/engine/server/es_server.c
+++ b/src/engine/server/es_server.c
@@ -24,6 +24,7 @@ static SNAPBUILD builder;
 
 static int64 game_start_time;
 static int current_tick = 0;
+static int run_server = 1;
 
 static int browseinfo_gametype = -1;
 static int browseinfo_progression = -1;
@@ -31,6 +32,8 @@ static int browseinfo_progression = -1;
 static int64 lastheartbeat;
 /*static NETADDR4 master_server;*/
 
+
+
 static char current_map[64];
 static int current_map_crc;
 static unsigned char *current_map_data = 0;
@@ -949,7 +952,7 @@ static int server_run()
 		if(config.debug)
 			dbg_msg("server", "baseline memory usage %dk", mem_allocated()/1024);
 
-		while(1)
+		while(run_server)
 		{
 			static PERFORMACE_INFO rootscope = {"root", 0};
 			int64 t = time_get();
@@ -1087,6 +1090,8 @@ static int server_run()
 	mods_shutdown();
 	map_unload();
 
+	if(current_map_data)
+		mem_free(current_map_data);
 	return 0;
 }
 
@@ -1111,10 +1116,17 @@ static void con_status(void *result, void *user_data)
 	}
 }
 
+static void con_shutdown(void *result, void *user_data)
+{
+	run_server = 0;
+	/*server_kick(console_arg_int(result, 0), "kicked by console");*/
+}
+
 static void server_register_commands()
 {
 	MACRO_REGISTER_COMMAND("kick", "i", con_kick, 0);
 	MACRO_REGISTER_COMMAND("status", "", con_status, 0);
+	MACRO_REGISTER_COMMAND("shutdown", "", con_shutdown, 0);
 }
 
 int main(int argc, char **argv)