diff --git a/api/packet_socket_factory.h b/api/packet_socket_factory.h
index 78b93b5..161c196 100644
--- a/api/packet_socket_factory.h
+++ b/api/packet_socket_factory.h
@@ -64,12 +64,30 @@
       uint16_t max_port,
       int opts) = 0;
 
-  virtual AsyncPacketSocket* CreateClientTcpSocket(
+  // TODO(tommi): Remove once implementations outside of webrtc have been moved
+  // over to the `CreateClientTcpSocket` variant that does not use ProxyInfo.
+  [[deprecated]] virtual AsyncPacketSocket* CreateClientTcpSocket(
       const SocketAddress& local_address,
       const SocketAddress& remote_address,
       const ProxyInfo& proxy_info,
       const std::string& user_agent,
-      const PacketSocketTcpOptions& tcp_options) = 0;
+      const PacketSocketTcpOptions& tcp_options) {
+    return CreateClientTcpSocket(local_address, remote_address, tcp_options);
+  }
+
+  // TODO(tommi): Make pure virtual. This temporary implementation is for
+  // derived classes outside of webrtc that don't override this function but
+  // override the deprecated version instead.
+  virtual AsyncPacketSocket* CreateClientTcpSocket(
+      const SocketAddress& local_address,
+      const SocketAddress& remote_address,
+      const PacketSocketTcpOptions& tcp_options) {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+    return CreateClientTcpSocket(local_address, remote_address, ProxyInfo(),
+                                 std::string(), tcp_options);
+#pragma clang diagnostic pop
+  }
 
   virtual std::unique_ptr<webrtc::AsyncDnsResolverInterface>
   CreateAsyncDnsResolver() = 0;
diff --git a/api/test/mock_packet_socket_factory.h b/api/test/mock_packet_socket_factory.h
index 7e59556..82f7676 100644
--- a/api/test/mock_packet_socket_factory.h
+++ b/api/test/mock_packet_socket_factory.h
@@ -32,8 +32,6 @@
               CreateClientTcpSocket,
               (const SocketAddress& local_address,
                const SocketAddress&,
-               const ProxyInfo&,
-               const std::string&,
                const PacketSocketTcpOptions&),
               (override));
   MOCK_METHOD(std::unique_ptr<webrtc::AsyncDnsResolverInterface>,
diff --git a/p2p/base/basic_packet_socket_factory.cc b/p2p/base/basic_packet_socket_factory.cc
index 2fe00cf..294dbdd 100644
--- a/p2p/base/basic_packet_socket_factory.cc
+++ b/p2p/base/basic_packet_socket_factory.cc
@@ -86,8 +86,6 @@
 AsyncPacketSocket* BasicPacketSocketFactory::CreateClientTcpSocket(
     const SocketAddress& local_address,
     const SocketAddress& remote_address,
-    const ProxyInfo& proxy_info,
-    const std::string& user_agent,
     const PacketSocketTcpOptions& tcp_options) {
   Socket* socket =
       socket_factory_->CreateSocket(local_address.family(), SOCK_STREAM);
diff --git a/p2p/base/basic_packet_socket_factory.h b/p2p/base/basic_packet_socket_factory.h
index f9bdf7b..a4f2b07 100644
--- a/p2p/base/basic_packet_socket_factory.h
+++ b/p2p/base/basic_packet_socket_factory.h
@@ -44,8 +44,6 @@
   AsyncPacketSocket* CreateClientTcpSocket(
       const SocketAddress& local_address,
       const SocketAddress& remote_address,
-      const ProxyInfo& proxy_info,
-      const std::string& user_agent,
       const PacketSocketTcpOptions& tcp_options) override;
 
   std::unique_ptr<webrtc::AsyncDnsResolverInterface> CreateAsyncDnsResolver()
diff --git a/p2p/base/port.h b/p2p/base/port.h
index fade90a..24655aa 100644
--- a/p2p/base/port.h
+++ b/p2p/base/port.h
@@ -322,16 +322,17 @@
       const rtc::SocketAddress& addr,
       const std::vector<uint16_t>& unknown_types);
 
-  void set_proxy(absl::string_view user_agent, const rtc::ProxyInfo& proxy) {
+  [[deprecated]] void set_proxy(absl::string_view user_agent,
+                                const rtc::ProxyInfo& proxy) {
     RTC_DCHECK_NOTREACHED();
     user_agent_ = std::string(user_agent);
     proxy_ = proxy;
   }
-  const std::string& user_agent() override {
+  [[deprecated]] const std::string& user_agent() override {
     RTC_DCHECK_NOTREACHED();
     return user_agent_;
   }
-  const rtc::ProxyInfo& proxy() override {
+  [[deprecated]] const rtc::ProxyInfo& proxy() override {
     RTC_DCHECK_NOTREACHED();
     return proxy_;
   }
diff --git a/p2p/base/port_unittest.cc b/p2p/base/port_unittest.cc
index 8e049b7..8119002 100644
--- a/p2p/base/port_unittest.cc
+++ b/p2p/base/port_unittest.cc
@@ -1062,8 +1062,6 @@
   AsyncPacketSocket* CreateClientTcpSocket(
       const SocketAddress& local_address,
       const SocketAddress& remote_address,
-      const rtc::ProxyInfo& proxy_info,
-      const std::string& user_agent,
       const rtc::PacketSocketTcpOptions& opts) override {
     EXPECT_TRUE(next_client_tcp_socket_.has_value());
     AsyncPacketSocket* result = *next_client_tcp_socket_;
diff --git a/p2p/base/tcp_port.cc b/p2p/base/tcp_port.cc
index e4dd488..4d4373f 100644
--- a/p2p/base/tcp_port.cc
+++ b/p2p/base/tcp_port.cc
@@ -596,7 +596,7 @@
   tcp_opts.opts = opts;
   socket_.reset(port()->socket_factory()->CreateClientTcpSocket(
       rtc::SocketAddress(port()->Network()->GetBestIP(), 0),
-      remote_candidate().address(), rtc::ProxyInfo(), std::string(), tcp_opts));
+      remote_candidate().address(), tcp_opts));
   if (socket_) {
     RTC_LOG(LS_VERBOSE) << ToString() << ": Connecting from "
                         << socket_->GetLocalAddress().ToSensitiveString()
diff --git a/p2p/base/turn_port.cc b/p2p/base/turn_port.cc
index 6c2110a..3e29ded 100644
--- a/p2p/base/turn_port.cc
+++ b/p2p/base/turn_port.cc
@@ -439,7 +439,7 @@
     tcp_options.tls_cert_verifier = tls_cert_verifier_;
     socket_ = socket_factory()->CreateClientTcpSocket(
         rtc::SocketAddress(Network()->GetBestIP(), 0), server_address_.address,
-        rtc::ProxyInfo(), std::string(), tcp_options);
+        tcp_options);
   }
 
   if (!socket_) {
diff --git a/test/network/emulated_turn_server.cc b/test/network/emulated_turn_server.cc
index 93724ca..c82e3bc 100644
--- a/test/network/emulated_turn_server.cc
+++ b/test/network/emulated_turn_server.cc
@@ -49,8 +49,6 @@
   rtc::AsyncPacketSocket* CreateClientTcpSocket(
       const rtc::SocketAddress& local_address,
       const rtc::SocketAddress& remote_address,
-      const rtc::ProxyInfo& proxy_info,
-      const std::string& user_agent,
       const rtc::PacketSocketTcpOptions& tcp_options) override {
     return nullptr;
   }
