diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-07-29 22:46:26 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-07-29 22:46:26 +0000 |
| commit | 3cbaf193c7edc31eedb23ba298341367df41128f (patch) | |
| tree | 403b57291087c37b83d6d7ee5850ede6ffba7e40 | |
| parent | f80dd7097e62c20520d76e77162c7e312ce5e0e0 (diff) | |
| download | zcatch-3cbaf193c7edc31eedb23ba298341367df41128f.tar.gz zcatch-3cbaf193c7edc31eedb23ba298341367df41128f.zip | |
fixed so that vital packets acctually works
| -rw-r--r-- | src/engine/network.cpp | 19 |
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; } |