diff --git a/src/pc/network/network.c b/src/pc/network/network.c index b46063deb..bb5818e48 100644 --- a/src/pc/network/network.c +++ b/src/pc/network/network.c @@ -177,6 +177,7 @@ void network_update(void) { } void network_shutdown(void) { + network_forget_all_reliable(); if (gNetworkType == NT_NONE) { return; } if (gNetworkSystem == NULL) { LOG_ERROR("no network system attached"); return; } diff --git a/src/pc/network/packets/packet.h b/src/pc/network/packets/packet.h index ba7a940b0..b04e4dce3 100644 --- a/src/pc/network/packets/packet.h +++ b/src/pc/network/packets/packet.h @@ -63,6 +63,7 @@ u32 packet_hash(struct Packet* packet); bool packet_check_hash(struct Packet* packet); // packet_reliable.c +void network_forget_all_reliable(void); void network_send_ack(struct Packet* p); void network_receive_ack(struct Packet* p); void network_remember_reliable(struct Packet* p); diff --git a/src/pc/network/packets/packet_reliable.c b/src/pc/network/packets/packet_reliable.c index e32eff139..7c89d8f03 100644 --- a/src/pc/network/packets/packet_reliable.c +++ b/src/pc/network/packets/packet_reliable.c @@ -33,6 +33,10 @@ static void remove_node_from_list(struct PacketLinkedList* node) { free(node); } +void network_forget_all_reliable(void) { + while (head != NULL) { remove_node_from_list(head); } +} + void network_send_ack(struct Packet* p) { // grab seq num u16 seqId = 0;