about summary refs log tree commit diff
path: root/src/engine/server
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2008-04-05 14:50:43 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2008-04-05 14:50:43 +0000
commit34c3a1c1426e6443ba30b8e2852b73bf92757dff (patch)
treec804647d311bfcf2627c5a519a15888c6e396b93 /src/engine/server
parentf713ad20288800e8a74160ba390ddefb47841033 (diff)
downloadzcatch-34c3a1c1426e6443ba30b8e2852b73bf92757dff.tar.gz
zcatch-34c3a1c1426e6443ba30b8e2852b73bf92757dff.zip
new network code. not perfect. connectionless packets is missing so no server discovery is possible. reduced network traffic by A LOT
Diffstat (limited to 'src/engine/server')
-rw-r--r--src/engine/server/es_register.c16
-rw-r--r--src/engine/server/es_server.c54
2 files changed, 45 insertions, 25 deletions
diff --git a/src/engine/server/es_register.c b/src/engine/server/es_register.c
index fe8cd959..cec0fa19 100644
--- a/src/engine/server/es_register.c
+++ b/src/engine/server/es_register.c
@@ -31,10 +31,10 @@ static void register_new_state(int state)
 
 static void register_send_fwcheckresponse(NETADDR4 *addr)
 {
-	NETPACKET packet;
+	NETCHUNK packet;
 	packet.client_id = -1;
 	packet.address = *addr;
-	packet.flags = PACKETFLAG_CONNLESS;
+	packet.flags = NETSENDFLAG_CONNLESS;
 	packet.data_size = sizeof(SERVERBROWSE_FWRESPONSE);
 	packet.data = SERVERBROWSE_FWRESPONSE;
 	netserver_send(net, &packet);
@@ -44,13 +44,13 @@ static void register_send_heartbeat(NETADDR4 addr)
 {
 	static unsigned char data[sizeof(SERVERBROWSE_HEARTBEAT) + 2];
 	unsigned short port = config.sv_port;
-	NETPACKET packet;
+	NETCHUNK packet;
 	
 	mem_copy(data, SERVERBROWSE_HEARTBEAT, sizeof(SERVERBROWSE_HEARTBEAT));
 	
 	packet.client_id = -1;
 	packet.address = addr;
-	packet.flags = PACKETFLAG_CONNLESS;
+	packet.flags = NETSENDFLAG_CONNLESS;
 	packet.data_size = sizeof(SERVERBROWSE_HEARTBEAT) + 2;
 	packet.data = &data;
 
@@ -64,10 +64,10 @@ static void register_send_heartbeat(NETADDR4 addr)
 
 static void register_send_count_request(NETADDR4 addr)
 {
-	NETPACKET packet;
+	NETCHUNK packet;
 	packet.client_id = -1;
 	packet.address = addr;
-	packet.flags = PACKETFLAG_CONNLESS;
+	packet.flags = NETSENDFLAG_CONNLESS;
 	packet.data_size = sizeof(SERVERBROWSE_GETCOUNT);
 	packet.data = SERVERBROWSE_GETCOUNT;
 	netserver_send(net, &packet);
@@ -221,7 +221,7 @@ void register_update()
 	}
 }
 
-static void register_got_count(NETPACKET *p)
+static void register_got_count(NETCHUNK *p)
 {
 	unsigned char *data = (unsigned char *)p->data;
 	int count = (data[sizeof(SERVERBROWSE_COUNT)]<<8) | data[sizeof(SERVERBROWSE_COUNT)+1];
@@ -237,7 +237,7 @@ static void register_got_count(NETPACKET *p)
 	}
 }
 
-int register_process_packet(NETPACKET *packet)
+int register_process_packet(NETCHUNK *packet)
 {
 	if(packet->data_size == sizeof(SERVERBROWSE_FWCHECK) &&
 		memcmp(packet->data, SERVERBROWSE_FWCHECK, sizeof(SERVERBROWSE_FWCHECK)) == 0)
diff --git a/src/engine/server/es_server.c b/src/engine/server/es_server.c
index a0c35772..a64bbd46 100644
--- a/src/engine/server/es_server.c
+++ b/src/engine/server/es_server.c
@@ -310,22 +310,23 @@ int server_getclientinfo(int client_id, CLIENT_INFO *info)
 	return 0;
 }
 
-
 int server_send_msg(int client_id)
 {
 	const MSG_INFO *info = msg_get_info();
-	NETPACKET packet;
+	NETCHUNK packet;
 	if(!info)
 		return -1;
 		
-	mem_zero(&packet, sizeof(NETPACKET));
+	mem_zero(&packet, sizeof(NETCHUNK));
 	
 	packet.client_id = client_id;
 	packet.data = info->data;
 	packet.data_size = info->size;
 
-	if(info->flags&MSGFLAG_VITAL)	
-		packet.flags = PACKETFLAG_VITAL;
+	if(info->flags&MSGFLAG_VITAL)
+		packet.flags |= NETSENDFLAG_VITAL;
+	if(info->flags&MSGFLAG_FLUSH)
+		packet.flags |= NETSENDFLAG_FLUSH;
 			
 	if(client_id == -1)
 	{
@@ -442,8 +443,8 @@ static void server_do_snap()
 			if(deltasize)
 			{
 				/* compress it */
-				unsigned char intdata[MAX_SNAPSHOT_SIZE];
-				int intsize;
+				/*unsigned char intdata[MAX_SNAPSHOT_SIZE];
+				int intsize;*/
 				int snapshot_size;
 				const int max_size = MAX_SNAPSHOT_PACKSIZE;
 				int numpackets;
@@ -456,16 +457,17 @@ static void server_do_snap()
 					{
 						static PERFORMACE_INFO scope = {"int", 0};
 						perf_start(&scope);
-						intsize = intpack_compress(deltadata, deltasize, intdata);
+						snapshot_size = intpack_compress(deltadata, deltasize, compdata);
 						perf_end();
 					}
 					
+					/*
 					{
 						static PERFORMACE_INFO scope = {"zero", 0};
 						perf_start(&scope);
 						snapshot_size = zerobit_compress(intdata, intsize, compdata);
 						perf_end();
-					}
+					}*/
 					perf_end();
 				}
 				
@@ -480,9 +482,9 @@ static void server_do_snap()
 					left -= chunk;
 
 					if(numpackets == 1)
-						msg_pack_start_system(NETMSG_SNAPSINGLE, 0);
+						msg_pack_start_system(NETMSG_SNAPSINGLE, MSGFLAG_FLUSH);
 					else
-						msg_pack_start_system(NETMSG_SNAP, 0);
+						msg_pack_start_system(NETMSG_SNAP, MSGFLAG_FLUSH);
 						
 					msg_pack_int(current_tick);
 					msg_pack_int(current_tick-delta_tick); /* compressed with */
@@ -504,7 +506,7 @@ static void server_do_snap()
 			}
 			else
 			{
-				msg_pack_start_system(NETMSG_SNAPEMPTY, 0);
+				msg_pack_start_system(NETMSG_SNAPEMPTY, MSGFLAG_FLUSH);
 				msg_pack_int(current_tick);
 				msg_pack_int(current_tick-delta_tick); /* compressed with */
 				msg_pack_int(input_predtick);
@@ -597,7 +599,7 @@ static void server_send_rcon_line_authed(const char *line)
 	reentry_guard--;
 }
 
-static void server_process_client_packet(NETPACKET *packet)
+static void server_process_client_packet(NETCHUNK *packet)
 {
 	int cid = packet->client_id;
 	int sys;
@@ -763,7 +765,21 @@ static void server_process_client_packet(NETPACKET *packet)
 		}
 		else
 		{
+			char hex[] = "0123456789ABCDEF";
+			char buf[512];
+			int b;
+
+			for(b = 0; b < packet->data_size && b < 32; b++)
+			{
+				buf[b*3] = hex[((const unsigned char *)packet->data)[b]>>4];
+				buf[b*3+1] = hex[((const unsigned char *)packet->data)[b]&0xf];
+				buf[b*3+2] = ' ';
+				buf[b*3+3] = 0;
+			}
+
 			dbg_msg("server", "strange message cid=%d msg=%d data_size=%d", cid, msg, packet->data_size);
+			dbg_msg("server", "%s", buf);
+			
 		}
 	}
 	else
@@ -775,7 +791,7 @@ static void server_process_client_packet(NETPACKET *packet)
 
 static void server_send_serverinfo(NETADDR4 *addr, int lan)
 {
-	NETPACKET packet;
+	NETCHUNK packet;
 	PACKER p;
 	char buf[128];
 
@@ -827,18 +843,18 @@ static void server_send_serverinfo(NETADDR4 *addr, int lan)
 	
 	packet.client_id = -1;
 	packet.address = *addr;
-	packet.flags = PACKETFLAG_CONNLESS;
+	packet.flags = NETSENDFLAG_CONNLESS;
 	packet.data_size = packer_size(&p);
 	packet.data = packer_data(&p);
 	netserver_send(net, &packet);
 }
 
-extern int register_process_packet(NETPACKET *packet);
+extern int register_process_packet(NETCHUNK *packet);
 extern int register_update();
 
 static void server_pump_network()
 {
-	NETPACKET packet;
+	NETCHUNK packet;
 
 	netserver_update(net);
 	
@@ -1063,6 +1079,7 @@ static int server_run()
 			{
 				if(config.debug)
 				{
+					/*
 					static NETSTATS prev_stats;
 					NETSTATS stats;
 					netserver_stats(net, &stats);
@@ -1077,6 +1094,7 @@ static int server_run()
 						(stats.recv_bytes - prev_stats.recv_bytes)/reportinterval);
 						
 					prev_stats = stats;
+					*/
 				}
 	
 				reporttime += time_freq()*reportinterval;
@@ -1147,6 +1165,8 @@ int main(int argc, char **argv)
 	dbg_msg("server", "starting...");
 	engine_init("Teeworlds");
 	
+	netcommon_openlog("output.dat");
+	
 	/* register all console commands */
 	server_register_commands();
 	mods_console_init();