Implement Socket::RecvFrom(ReceiveBuffer& buffer) in PhysicalSocketServer
And RTC_CHECK(NOTREACHED) Socket::RecvFrom(void* pv..)
This cl also change usage of PhysicalSocket to use PhysicalSocket::RecvFrom(ReceivedBuffer&) in Nat and tests.
Note that Socket::RecvFrom(ReceiveBuffer& buffer) is already used in AsyncUdpSocket.( https://webrtc-review.googlesource.com/c/src/+/332200)
AsyncTCPSocket uses Socket::Recv(). Therefore, there should be no production usage left of Socket::RecvFrom(void* pv..) in open source webrtc.
Follow up cls should remove usage of Socket::RecvFrom(void* pv..) in implementations of rtc:AsyncSocketAdapter such as FirewallSocketAdapter.
Change-Id: I597dc32b14be98e954a3dc419723f043e8a7e19e
Bug: webrtc:15368
Change-Id: I597dc32b14be98e954a3dc419723f043e8a7e19e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/332341
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#41635}
diff --git a/rtc_base/nat_unittest.cc b/rtc_base/nat_unittest.cc
index 742e0d6..978a30a 100644
--- a/rtc_base/nat_unittest.cc
+++ b/rtc_base/nat_unittest.cc
@@ -233,12 +233,12 @@
const char* buf = "hello other socket";
size_t len = strlen(buf);
int sent = client->SendTo(buf, len, server->GetLocalAddress());
- SocketAddress addr;
- const size_t kRecvBufSize = 64;
- char recvbuf[kRecvBufSize];
+
Thread::Current()->SleepMs(100);
- int received = server->RecvFrom(recvbuf, kRecvBufSize, &addr, nullptr);
- return received == sent && ::memcmp(buf, recvbuf, len) == 0;
+ rtc::Buffer payload;
+ Socket::ReceiveBuffer receive_buffer(payload);
+ int received = server->RecvFrom(receive_buffer);
+ return received == sent && ::memcmp(buf, payload.data(), len) == 0;
}
void TestPhysicalInternal(const SocketAddress& int_addr) {