Delete BasicPacketSocketFactory constructor with thread argument
In callers where it's non-trivial to explicitly pass the right
SocketFactory, pull the call to rtc::Thread::socketserver() into the
caller, with a TODO comment.
Bug: webrtc:13145
Change-Id: I029d3adca385d822180e089f016c3778e0d4fd0c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/231227
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35063}
diff --git a/p2p/base/basic_packet_socket_factory.cc b/p2p/base/basic_packet_socket_factory.cc
index d206497..c23b5d9 100644
--- a/p2p/base/basic_packet_socket_factory.cc
+++ b/p2p/base/basic_packet_socket_factory.cc
@@ -25,16 +25,12 @@
#include "rtc_base/socket_adapters.h"
#include "rtc_base/socket_server.h"
#include "rtc_base/ssl_adapter.h"
-#include "rtc_base/thread.h"
namespace rtc {
-BasicPacketSocketFactory::BasicPacketSocketFactory(Thread* thread)
- : thread_(thread), socket_factory_(NULL) {}
-
BasicPacketSocketFactory::BasicPacketSocketFactory(
SocketFactory* socket_factory)
- : thread_(NULL), socket_factory_(socket_factory) {}
+ : socket_factory_(socket_factory) {}
BasicPacketSocketFactory::~BasicPacketSocketFactory() {}
@@ -43,7 +39,7 @@
uint16_t min_port,
uint16_t max_port) {
// UDP sockets are simple.
- Socket* socket = socket_factory()->CreateSocket(address.family(), SOCK_DGRAM);
+ Socket* socket = socket_factory_->CreateSocket(address.family(), SOCK_DGRAM);
if (!socket) {
return NULL;
}
@@ -67,7 +63,7 @@
}
Socket* socket =
- socket_factory()->CreateSocket(local_address.family(), SOCK_STREAM);
+ socket_factory_->CreateSocket(local_address.family(), SOCK_STREAM);
if (!socket) {
return NULL;
}
@@ -104,7 +100,7 @@
const std::string& user_agent,
const PacketSocketTcpOptions& tcp_options) {
Socket* socket =
- socket_factory()->CreateSocket(local_address.family(), SOCK_STREAM);
+ socket_factory_->CreateSocket(local_address.family(), SOCK_STREAM);
if (!socket) {
return NULL;
}
@@ -215,13 +211,4 @@
return ret;
}
-SocketFactory* BasicPacketSocketFactory::socket_factory() {
- if (thread_) {
- RTC_DCHECK(thread_ == Thread::Current());
- return thread_->socketserver();
- } else {
- return socket_factory_;
- }
-}
-
} // namespace rtc
diff --git a/p2p/base/basic_packet_socket_factory.h b/p2p/base/basic_packet_socket_factory.h
index 368c976..030eb82 100644
--- a/p2p/base/basic_packet_socket_factory.h
+++ b/p2p/base/basic_packet_socket_factory.h
@@ -19,11 +19,9 @@
namespace rtc {
class SocketFactory;
-class Thread;
class BasicPacketSocketFactory : public PacketSocketFactory {
public:
- explicit BasicPacketSocketFactory(Thread* thread);
explicit BasicPacketSocketFactory(SocketFactory* socket_factory);
~BasicPacketSocketFactory() override;
@@ -49,9 +47,6 @@
uint16_t min_port,
uint16_t max_port);
- SocketFactory* socket_factory();
-
- Thread* thread_;
SocketFactory* socket_factory_;
};
diff --git a/p2p/base/fake_port_allocator.h b/p2p/base/fake_port_allocator.h
index efe9a53..83b27db 100644
--- a/p2p/base/fake_port_allocator.h
+++ b/p2p/base/fake_port_allocator.h
@@ -208,11 +208,13 @@
class FakePortAllocator : public cricket::PortAllocator {
public:
+ // TODO(bugs.webrtc.org/13145): Require non-null `factory`.
FakePortAllocator(rtc::Thread* network_thread,
rtc::PacketSocketFactory* factory)
: network_thread_(network_thread), factory_(factory) {
if (factory_ == NULL) {
- owned_factory_.reset(new rtc::BasicPacketSocketFactory(network_thread_));
+ owned_factory_.reset(new rtc::BasicPacketSocketFactory(
+ network_thread_ ? network_thread_->socketserver() : nullptr));
factory_ = owned_factory_.get();
}
diff --git a/p2p/base/port_unittest.cc b/p2p/base/port_unittest.cc
index 7d7bfdb..9c4bc0f 100644
--- a/p2p/base/port_unittest.cc
+++ b/p2p/base/port_unittest.cc
@@ -395,7 +395,7 @@
PortTest()
: ss_(new rtc::VirtualSocketServer()),
main_(ss_.get()),
- socket_factory_(rtc::Thread::Current()),
+ socket_factory_(ss_.get()),
nat_factory1_(ss_.get(), kNatAddr1, SocketAddress()),
nat_factory2_(ss_.get(), kNatAddr2, SocketAddress()),
nat_socket_factory1_(&nat_factory1_),
diff --git a/p2p/base/stun_port_unittest.cc b/p2p/base/stun_port_unittest.cc
index 36733cc..5ee707b 100644
--- a/p2p/base/stun_port_unittest.cc
+++ b/p2p/base/stun_port_unittest.cc
@@ -48,7 +48,7 @@
: ss_(new rtc::VirtualSocketServer()),
thread_(ss_.get()),
network_("unittest", "unittest", kLocalAddr.ipaddr(), 32),
- socket_factory_(rtc::Thread::Current()),
+ socket_factory_(ss_.get()),
stun_server_1_(cricket::TestStunServer::Create(ss_.get(), kStunAddr1)),
stun_server_2_(cricket::TestStunServer::Create(ss_.get(), kStunAddr2)),
done_(false),
diff --git a/p2p/base/tcp_port_unittest.cc b/p2p/base/tcp_port_unittest.cc
index 2c9fbce..79f1314 100644
--- a/p2p/base/tcp_port_unittest.cc
+++ b/p2p/base/tcp_port_unittest.cc
@@ -61,7 +61,7 @@
TCPPortTest()
: ss_(new rtc::VirtualSocketServer()),
main_(ss_.get()),
- socket_factory_(rtc::Thread::Current()),
+ socket_factory_(ss_.get()),
username_(rtc::CreateRandomString(ICE_UFRAG_LENGTH)),
password_(rtc::CreateRandomString(ICE_PWD_LENGTH)) {}
diff --git a/p2p/base/test_turn_server.h b/p2p/base/test_turn_server.h
index 479ca8b..e1deb59 100644
--- a/p2p/base/test_turn_server.h
+++ b/p2p/base/test_turn_server.h
@@ -58,8 +58,11 @@
const std::string& common_name = "test turn server")
: server_(thread), thread_(thread) {
AddInternalSocket(int_addr, int_protocol, ignore_bad_cert, common_name);
- server_.SetExternalSocketFactory(new rtc::BasicPacketSocketFactory(thread),
- udp_ext_addr);
+ // TODO(bugs.webrtc.org/13145): Take a SocketFactory as argument, so we
+ // don't need thread_->socketserver().
+ server_.SetExternalSocketFactory(
+ new rtc::BasicPacketSocketFactory(thread_->socketserver()),
+ udp_ext_addr);
server_.set_realm(kTestRealm);
server_.set_software(kTestSoftware);
server_.set_auth_hook(this);
diff --git a/p2p/base/turn_port_unittest.cc b/p2p/base/turn_port_unittest.cc
index 7a7092d..7854fdb 100644
--- a/p2p/base/turn_port_unittest.cc
+++ b/p2p/base/turn_port_unittest.cc
@@ -172,7 +172,7 @@
TurnPortTest()
: ss_(new TurnPortTestVirtualSocketServer()),
main_(ss_.get()),
- socket_factory_(rtc::Thread::Current()),
+ socket_factory_(ss_.get()),
turn_server_(&main_, kTurnUdpIntAddr, kTurnUdpExtAddr),
turn_ready_(false),
turn_error_(false),
diff --git a/p2p/client/basic_port_allocator.cc b/p2p/client/basic_port_allocator.cc
index 6284625..2a601d5 100644
--- a/p2p/client/basic_port_allocator.cc
+++ b/p2p/client/basic_port_allocator.cc
@@ -378,7 +378,7 @@
state_ = SessionState::GATHERING;
if (!socket_factory_) {
owned_socket_factory_.reset(
- new rtc::BasicPacketSocketFactory(network_thread_));
+ new rtc::BasicPacketSocketFactory(network_thread_->socketserver()));
socket_factory_ = owned_socket_factory_.get();
}
diff --git a/pc/connection_context.cc b/pc/connection_context.cc
index 6fdcac3..691dd90 100644
--- a/pc/connection_context.cc
+++ b/pc/connection_context.cc
@@ -121,8 +121,12 @@
default_network_manager_ = std::make_unique<rtc::BasicNetworkManager>(
network_monitor_factory_.get());
- default_socket_factory_ =
- std::make_unique<rtc::BasicPacketSocketFactory>(network_thread());
+ // TODO(bugs.webrtc.org/13145): Either require that a PacketSocketFactory
+ // always is injected (with no need to construct this default factory), or get
+ // the appropriate underlying SocketFactory without going through the
+ // rtc::Thread::socketserver() accessor.
+ default_socket_factory_ = std::make_unique<rtc::BasicPacketSocketFactory>(
+ network_thread()->socketserver());
worker_thread_->Invoke<void>(RTC_FROM_HERE, [&]() {
channel_manager_ = cricket::ChannelManager::Create(
diff --git a/rtc_tools/network_tester/test_controller.cc b/rtc_tools/network_tester/test_controller.cc
index 85a5a57..9c0d324 100644
--- a/rtc_tools/network_tester/test_controller.cc
+++ b/rtc_tools/network_tester/test_controller.cc
@@ -23,7 +23,9 @@
int max_port,
const std::string& config_file_path,
const std::string& log_file_path)
- : socket_factory_(rtc::ThreadManager::Instance()->WrapCurrentThread()),
+ // TODO(bugs.webrtc.org/13145): Add a SocketFactory argument.
+ : socket_factory_(
+ rtc::ThreadManager::Instance()->WrapCurrentThread()->socketserver()),
config_file_path_(config_file_path),
packet_logger_(log_file_path),
local_test_done_(false),