about summary refs log tree commit diff
path: root/src/engine
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2008-06-12 10:51:48 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2008-06-12 10:51:48 +0000
commitf6c67c29cd10d41b877ee1319801edc01b625e72 (patch)
tree6ca26c44ac0218a57d078a6f72034f2924b44104 /src/engine
parent0d3b988c1aed8f6b91879a801253db81a251a532 (diff)
downloadzcatch-f6c67c29cd10d41b877ee1319801edc01b625e72.tar.gz
zcatch-f6c67c29cd10d41b877ee1319801edc01b625e72.zip
large commit with loads of clean up. more is comming
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/client/ec_client.c2
-rw-r--r--src/engine/e_network.c37
-rw-r--r--src/engine/server/es_server.c3
3 files changed, 35 insertions, 7 deletions
diff --git a/src/engine/client/ec_client.c b/src/engine/client/ec_client.c
index 6d3a400b..8872d5f4 100644
--- a/src/engine/client/ec_client.c
+++ b/src/engine/client/ec_client.c
@@ -770,7 +770,7 @@ static void client_process_packet(NETCHUNK *packet)
 	{
 		int sys;
 		int msg = msg_unpack_start(packet->data, packet->data_size, &sys);
-
+		
 		if(sys)
 		{
 			/* system message */
diff --git a/src/engine/e_network.c b/src/engine/e_network.c
index 9ebeba61..51fcbd75 100644
--- a/src/engine/e_network.c
+++ b/src/engine/e_network.c
@@ -19,7 +19,6 @@ CURRENT:
 		unsigned char flags_size; // 2bit flags, 6 bit size
 		unsigned char size_seq; // 4bit size, 4bit seq
 		(unsigned char seq;) // 8bit seq, if vital flag is set
-		
 */
 
 enum
@@ -216,6 +215,25 @@ struct NETCLIENT_t
 static IOHANDLE datalog = 0;
 static HUFFSTATE huffmanstate;
 
+#define COMPRESSION 0
+
+typedef struct pcap_hdr_s {
+        unsigned magic_number;   /* magic number */
+        short version_major;  /* major version number */
+        short version_minor;  /* minor version number */
+        int  thiszone;       /* GMT to local correction */
+        unsigned sigfigs;        /* accuracy of timestamps */
+        unsigned snaplen;        /* max length of captured packets, in octets */
+        unsigned network;        /* data link type */
+} pcap_hdr_t;
+
+typedef struct pcaprec_hdr_s {
+        unsigned ts_sec;         /* timestamp seconds */
+        unsigned ts_usec;        /* timestamp microseconds */
+        unsigned incl_len;       /* number of octets of packet saved in file */
+        unsigned orig_len;       /* actual length of packet */
+} pcaprec_hdr_t;
+
 /* packs the data tight and sends it */
 static void send_packet(NETSOCKET socket, NETADDR4 *addr, NETPACKETCONSTRUCT *packet)
 {
@@ -229,14 +247,14 @@ static void send_packet(NETSOCKET socket, NETADDR4 *addr, NETPACKETCONSTRUCT *pa
 		io_write(datalog, &packet->chunk_data, packet->data_size);
 	}
 	
-	if(1)
+	if(COMPRESSION)
 	{
 		int compressed_size = (huffman_compress(&huffmanstate, packet->chunk_data, packet->data_size, &buffer[4], NET_MAX_PACKETSIZE-4)+7)/8;
 		net_udp4_send(socket, addr, buffer, NET_PACKETHEADERSIZE+compressed_size);
 	}
 	else
 	{
-		mem_copy(&buffer[4], packet->chunk_data, packet->data_size);
+		mem_copy(&buffer[3], packet->chunk_data, packet->data_size);
 		net_udp4_send(socket, addr, buffer, NET_PACKETHEADERSIZE+packet->data_size);
 	}
 }
@@ -246,7 +264,10 @@ static int unpack_packet(unsigned char *buffer, int size, NETPACKETCONSTRUCT *pa
 {
 	/* check the size */
 	if(size < NET_PACKETHEADERSIZE || size > NET_MAX_PACKETSIZE)
+	{
+		dbg_msg("", "packet too small");
 		return -1;
+	}
 	
 	/* read the packet */
 	packet->flags = buffer[0]>>4;
@@ -254,12 +275,12 @@ static int unpack_packet(unsigned char *buffer, int size, NETPACKETCONSTRUCT *pa
 	packet->num_chunks = buffer[2];
 	packet->data_size = size - NET_PACKETHEADERSIZE;
 	
-	if(1)
+	if(COMPRESSION)
 	{
-		huffman_decompress(&huffmanstate, &buffer[4], packet->data_size, packet->chunk_data, sizeof(packet->chunk_data));
+		huffman_decompress(&huffmanstate, &buffer[3], packet->data_size, packet->chunk_data, sizeof(packet->chunk_data));
 	}
 	else
-		mem_copy(packet->chunk_data, &buffer[4], packet->data_size);
+		mem_copy(packet->chunk_data, &buffer[3], packet->data_size);
 	
 	/* return success */
 	return 0;
@@ -435,6 +456,7 @@ static void conn_send_control(NETCONNECTION *conn, int controlmsg, const void *e
 
 static void conn_resend(NETCONNECTION *conn)
 {
+	int resend_count = 0;
 	int max = 10;
 	RINGBUFFER_ITEM *item = conn->buffer.first;
 	while(item)
@@ -443,9 +465,12 @@ static void conn_resend(NETCONNECTION *conn)
 		conn_queue_chunk(conn, resend->flags|NET_CHUNKFLAG_RESEND, resend->data_size, resend->data);
 		item = item->next;
 		max--;
+		resend_count++;
 		if(!max)
 			break;
 	}
+	
+	dbg_msg("conn", "resent %d packets", resend_count);
 }
 
 static int conn_connect(NETCONNECTION *conn, NETADDR4 *addr)
diff --git a/src/engine/server/es_server.c b/src/engine/server/es_server.c
index 0d2200c3..ac1a79a1 100644
--- a/src/engine/server/es_server.c
+++ b/src/engine/server/es_server.c
@@ -226,6 +226,9 @@ void server_setclientname(int client_id, const char *name)
 	if(client_id < 0 || client_id > MAX_CLIENTS || clients[client_id].state < SRVCLIENT_STATE_READY)
 		return;
 		
+	if(!name)
+		return;
+		
 	str_copy(nametry, name, MAX_NAME_LENGTH);
 	if(server_try_setclientname(client_id, nametry))
 	{