about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2007-07-29 22:46:26 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2007-07-29 22:46:26 +0000
commit3cbaf193c7edc31eedb23ba298341367df41128f (patch)
tree403b57291087c37b83d6d7ee5850ede6ffba7e40
parentf80dd7097e62c20520d76e77162c7e312ce5e0e0 (diff)
downloadzcatch-3cbaf193c7edc31eedb23ba298341367df41128f.tar.gz
zcatch-3cbaf193c7edc31eedb23ba298341367df41128f.zip
fixed so that vital packets acctually works
-rw-r--r--src/engine/network.cpp19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/engine/network.cpp b/src/engine/network.cpp
index 90946c0c..11786e08 100644
--- a/src/engine/network.cpp
+++ b/src/engine/network.cpp
@@ -308,6 +308,14 @@ static int conn_feed(NETCONNECTION *conn, NETPACKETDATA *p, NETADDR4 *addr)
 					return 0;
 				}
 			}
+			else
+			{
+				if(p->seq > conn->ack)
+				{
+					dbg_msg("conn", "asking for resend");
+					conn_send(conn, NETWORK_PACKETFLAG_RESEND, 0, 0);
+				}
+			}
 			
 			if(p->data_size == 0)
 				return 0;
@@ -623,7 +631,10 @@ int net_server_send(NETSERVER *s, NETPACKET *packet)
 	{
 		dbg_assert(packet->client_id >= 0, "errornous client id");
 		dbg_assert(packet->client_id < NETWORK_MAX_CLIENTS, "errornous client id");
-		conn_send(&s->slots[packet->client_id].conn, 0, packet->data_size, packet->data);
+		int flags  = 0;
+		if(packet->flags&PACKETFLAG_VITAL)
+			flags |= NETWORK_PACKETFLAG_VITAL;
+		conn_send(&s->slots[packet->client_id].conn, flags, packet->data_size, packet->data);
 	}
 	return 0;
 }
@@ -753,7 +764,11 @@ int net_client_send(NETCLIENT *c, NETPACKET *packet)
 	{
 		// TODO: insert stuff for stateless stuff
 		dbg_assert(packet->client_id == 0, "errornous client id");
-		conn_send(&c->conn, 0, packet->data_size, packet->data);
+
+		int flags = 0;		
+		if(packet->flags&PACKETFLAG_VITAL)
+			flags |= NETWORK_PACKETFLAG_VITAL;
+		conn_send(&c->conn, flags, packet->data_size, packet->data);
 	}
 	return 0;
 }