mirror of
https://github.com/wichtounet/thor-os.git
synced 2025-09-09 12:31:06 -04:00
Cleanup TCP numbers
This commit is contained in:
parent
748d3727f1
commit
2f5b56b4c0
@ -46,6 +46,9 @@ struct tcp_connection {
|
||||
uint32_t ack_number = 0; ///< The next ack number
|
||||
uint32_t seq_number = 0; ///< The next sequence number
|
||||
|
||||
uint32_t fina_ack_number = 0; ///< The next ack number (from finalize)
|
||||
uint32_t fina_seq_number = 0; ///< The next sequence number (from finalize)
|
||||
|
||||
network::socket* socket = nullptr; ///< Pointer to the user socket
|
||||
|
||||
tcp_connection() : listening(false) {
|
||||
|
@ -465,6 +465,9 @@ std::expected<void> network::tcp::layer::finalize_packet(network::interface_desc
|
||||
if (correct_ack) {
|
||||
logging::logf(logging::log_level::TRACE, "tcp:finalize: Received ACK\n");
|
||||
|
||||
connection.fina_ack_number = switch_endian_32(tcp_header->ack_number);
|
||||
connection.fina_seq_number = switch_endian_32(tcp_header->sequence_number);
|
||||
|
||||
received = true;
|
||||
|
||||
break;
|
||||
@ -529,6 +532,9 @@ std::expected<size_t> network::tcp::layer::connect(network::socket& sock, networ
|
||||
return std::make_unexpected<size_t, size_t>(status.error());
|
||||
}
|
||||
|
||||
connection.seq_number = connection.fina_ack_number;
|
||||
connection.ack_number = connection.fina_seq_number + 1;
|
||||
|
||||
// The SYN/ACK is ensured by finalize_packet
|
||||
|
||||
logging::logf(logging::log_level::TRACE, "tcp:connect: Received SYN/ACK\n");
|
||||
@ -639,6 +645,10 @@ std::expected<size_t> network::tcp::layer::accept(network::socket& socket){
|
||||
child_sock.connection_data = &child_connection;
|
||||
child_connection.socket = &child_sock;
|
||||
|
||||
// Child connection numbers
|
||||
child_connection.seq_number = connection.seq_number;
|
||||
child_connection.ack_number = connection.ack_number;
|
||||
|
||||
child_connection.connected = true;
|
||||
|
||||
auto& interface = network::select_interface(source_address);
|
||||
@ -678,7 +688,7 @@ std::expected<size_t> network::tcp::layer::accept(network::socket& socket){
|
||||
}
|
||||
|
||||
std::expected<size_t> network::tcp::layer::accept(network::socket& socket, size_t ms){
|
||||
|
||||
//TODO
|
||||
}
|
||||
|
||||
std::expected<void> network::tcp::layer::server_start(network::socket& sock, size_t server_port, network::ip::address server) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user