This commit is contained in:
Baptiste Wicht 2016-09-14 22:32:20 +02:00
parent 958aaebf72
commit d3dbcec498

View File

@ -35,6 +35,7 @@ struct tcp_listener {
size_t source_port; size_t source_port;
size_t target_port; size_t target_port;
std::atomic<bool> active; std::atomic<bool> active;
//TODO Use a sleep queue here
semaphore sem; semaphore sem;
circular_buffer<network::ethernet::packet, 8> packets; circular_buffer<network::ethernet::packet, 8> packets;
@ -136,7 +137,6 @@ void network::tcp::decode(network::interface_descriptor& /*interface*/, network:
++it; ++it;
} }
packet.index += sizeof(header); packet.index += sizeof(header);
//TODO //TODO
@ -218,11 +218,12 @@ std::expected<void> network::tcp::connect(network::interface_descriptor& interfa
seq = switch_endian_32(tcp_header->sequence_number); seq = switch_endian_32(tcp_header->sequence_number);
ack = switch_endian_32(tcp_header->ack_number); ack = switch_endian_32(tcp_header->ack_number);
//TODO Release packet delete[] received_packet.payload;
break; break;
} }
//TODO Release packet delete[] received_packet.payload;
} }
listener.active = false; listener.active = false;
@ -249,7 +250,17 @@ std::expected<void> network::tcp::connect(network::interface_descriptor& interfa
tcp::finalize_packet(interface, *packet); 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 {}; return {};
} }