Kaynağa Gözat

Kernel: TCPSocket always has a scratch buffer

Let's encode this in the constructor signature.
Andreas Kling 3 yıl önce
ebeveyn
işleme
c69035c630
2 değiştirilmiş dosya ile 3 ekleme ve 3 silme
  1. 2 2
      Kernel/Net/TCPSocket.cpp
  2. 1 1
      Kernel/Net/TCPSocket.h

+ 2 - 2
Kernel/Net/TCPSocket.cpp

@@ -130,7 +130,7 @@ void TCPSocket::release_for_accept(RefPtr<TCPSocket> socket)
     [[maybe_unused]] auto rc = queue_connection_from(*socket);
 }
 
-TCPSocket::TCPSocket(int protocol, NonnullOwnPtr<DoubleBuffer> receive_buffer, OwnPtr<KBuffer> scratch_buffer)
+TCPSocket::TCPSocket(int protocol, NonnullOwnPtr<DoubleBuffer> receive_buffer, NonnullOwnPtr<KBuffer> scratch_buffer)
     : IPv4Socket(SOCK_STREAM, protocol, move(receive_buffer), move(scratch_buffer))
 {
     m_last_retransmit_time = kgettimeofday();
@@ -154,7 +154,7 @@ KResultOr<NonnullRefPtr<TCPSocket>> TCPSocket::try_create(int protocol, NonnullO
     if (!scratch_buffer)
         return ENOMEM;
 
-    return adopt_nonnull_ref_or_enomem(new (nothrow) TCPSocket(protocol, move(receive_buffer), move(scratch_buffer)));
+    return adopt_nonnull_ref_or_enomem(new (nothrow) TCPSocket(protocol, move(receive_buffer), scratch_buffer.release_nonnull()));
 }
 
 KResultOr<size_t> TCPSocket::protocol_receive(ReadonlyBytes raw_ipv4_packet, UserOrKernelBuffer& buffer, size_t buffer_size, [[maybe_unused]] int flags)

+ 1 - 1
Kernel/Net/TCPSocket.h

@@ -165,7 +165,7 @@ protected:
     void set_direction(Direction direction) { m_direction = direction; }
 
 private:
-    explicit TCPSocket(int protocol, NonnullOwnPtr<DoubleBuffer> receive_buffer, OwnPtr<KBuffer> scratch_buffer);
+    explicit TCPSocket(int protocol, NonnullOwnPtr<DoubleBuffer> receive_buffer, NonnullOwnPtr<KBuffer> scratch_buffer);
     virtual StringView class_name() const override { return "TCPSocket"; }
 
     virtual void shut_down_for_writing() override;