diff options
-rw-r--r-- | Kernel/Net/TCPSocket.cpp | 3 | ||||
-rw-r--r-- | Kernel/Net/TCPSocket.h | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/Kernel/Net/TCPSocket.cpp b/Kernel/Net/TCPSocket.cpp index 8389cec31c..98cdcb68e9 100644 --- a/Kernel/Net/TCPSocket.cpp +++ b/Kernel/Net/TCPSocket.cpp @@ -162,6 +162,7 @@ void TCPSocket::send_tcp_packet(u16 flags, const void* payload, int payload_size tcp_packet.set_checksum(compute_tcp_checksum(local_address(), peer_address(), tcp_packet, payload_size)); if (tcp_packet.has_syn() || payload_size > 0) { + LOCKER(m_not_acked_lock); m_not_acked.append({ m_sequence_number, move(buffer), 0, {} }); send_outgoing_packets(); return; @@ -185,6 +186,7 @@ void TCPSocket::send_outgoing_packets() auto now = kgettimeofday(); + LOCKER(m_not_acked_lock); for (auto& packet : m_not_acked) { timeval diff; timeval_sub(packet.tx_time, now, diff); @@ -228,6 +230,7 @@ void TCPSocket::receive_tcp_packet(const TCPPacket& packet, u16 size) #endif int removed = 0; + LOCKER(m_not_acked_lock); while (!m_not_acked.is_empty()) { auto& packet = m_not_acked.first(); diff --git a/Kernel/Net/TCPSocket.h b/Kernel/Net/TCPSocket.h index bfbe5eda20..a01cf3a1ac 100644 --- a/Kernel/Net/TCPSocket.h +++ b/Kernel/Net/TCPSocket.h @@ -172,5 +172,6 @@ private: timeval tx_time; }; + Lock m_not_acked_lock { "TCPSocket unacked packets" }; SinglyLinkedList<OutgoingPacket> m_not_acked; }; |