From d3dbcec4987c70cbce89ece891421826dae443d8 Mon Sep 17 00:00:00 2001 From: Baptiste Wicht Date: Wed, 14 Sep 2016 22:32:20 +0200 Subject: [PATCH] Finalize --- kernel/src/net/tcp_layer.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/kernel/src/net/tcp_layer.cpp b/kernel/src/net/tcp_layer.cpp index 2fc725d5..d5752728 100644 --- a/kernel/src/net/tcp_layer.cpp +++ b/kernel/src/net/tcp_layer.cpp @@ -35,6 +35,7 @@ struct tcp_listener { size_t source_port; size_t target_port; std::atomic active; + //TODO Use a sleep queue here semaphore sem; circular_buffer packets; @@ -136,7 +137,6 @@ void network::tcp::decode(network::interface_descriptor& /*interface*/, network: ++it; } - packet.index += sizeof(header); //TODO @@ -218,11 +218,12 @@ std::expected network::tcp::connect(network::interface_descriptor& interfa seq = switch_endian_32(tcp_header->sequence_number); ack = switch_endian_32(tcp_header->ack_number); - //TODO Release packet + delete[] received_packet.payload; + break; } - //TODO Release packet + delete[] received_packet.payload; } listener.active = false; @@ -249,7 +250,17 @@ std::expected network::tcp::connect(network::interface_descriptor& interfa tcp::finalize_packet(interface, *packet); } - //TODO Remove the listener + auto end = listeners.end(); + auto it = listeners.begin(); + + while(it != end){ + if(&(*it) == &listener){ + listeners.erase(it); + break; + } + + ++it; + } return {}; }