diff --git a/p2p/base/async_stun_tcp_socket.cc b/p2p/base/async_stun_tcp_socket.cc
index f4ead66..64c19c4 100644
--- a/p2p/base/async_stun_tcp_socket.cc
+++ b/p2p/base/async_stun_tcp_socket.cc
@@ -45,12 +45,11 @@
     const rtc::SocketAddress& bind_address,
     const rtc::SocketAddress& remote_address) {
   return new AsyncStunTCPSocket(
-      AsyncTCPSocketBase::ConnectSocket(socket, bind_address, remote_address),
-      false);
+      AsyncTCPSocketBase::ConnectSocket(socket, bind_address, remote_address));
 }
 
-AsyncStunTCPSocket::AsyncStunTCPSocket(rtc::Socket* socket, bool listen)
-    : rtc::AsyncTCPSocketBase(socket, listen, kBufSize) {}
+AsyncStunTCPSocket::AsyncStunTCPSocket(rtc::Socket* socket)
+    : rtc::AsyncTCPSocketBase(socket, /*listen=*/false, kBufSize) {}
 
 int AsyncStunTCPSocket::Send(const void* pv,
                              size_t cb,
@@ -127,7 +126,7 @@
 }
 
 void AsyncStunTCPSocket::HandleIncomingConnection(rtc::Socket* socket) {
-  SignalNewConnection(this, new AsyncStunTCPSocket(socket, false));
+  SignalNewConnection(this, new AsyncStunTCPSocket(socket));
 }
 
 size_t AsyncStunTCPSocket::GetExpectedLength(const void* data,
diff --git a/p2p/base/async_stun_tcp_socket.h b/p2p/base/async_stun_tcp_socket.h
index 2b7bc95..2dc9613 100644
--- a/p2p/base/async_stun_tcp_socket.h
+++ b/p2p/base/async_stun_tcp_socket.h
@@ -30,7 +30,7 @@
                                     const rtc::SocketAddress& bind_address,
                                     const rtc::SocketAddress& remote_address);
 
-  AsyncStunTCPSocket(rtc::Socket* socket, bool listen);
+  explicit AsyncStunTCPSocket(rtc::Socket* socket);
 
   int Send(const void* pv,
            size_t cb,
diff --git a/p2p/base/async_stun_tcp_socket_unittest.cc b/p2p/base/async_stun_tcp_socket_unittest.cc
index 40b5405..64c9a34 100644
--- a/p2p/base/async_stun_tcp_socket_unittest.cc
+++ b/p2p/base/async_stun_tcp_socket_unittest.cc
@@ -58,6 +58,15 @@
 static const rtc::SocketAddress kClientAddr("11.11.11.11", 0);
 static const rtc::SocketAddress kServerAddr("22.22.22.22", 0);
 
+class AsyncStunServerTCPSocket : public rtc::AsyncTCPSocket {
+ public:
+  explicit AsyncStunServerTCPSocket(rtc::Socket* socket)
+      : AsyncTCPSocket(socket, true) {}
+  void HandleIncomingConnection(rtc::Socket* socket) override {
+    SignalNewConnection(this, new AsyncStunTCPSocket(socket));
+  }
+};
+
 class AsyncStunTCPSocketTest : public ::testing::Test,
                                public sigslot::has_slots<> {
  protected:
@@ -69,7 +78,7 @@
   void CreateSockets() {
     rtc::Socket* server = vss_->CreateSocket(kServerAddr.family(), SOCK_STREAM);
     server->Bind(kServerAddr);
-    recv_socket_.reset(new AsyncStunTCPSocket(server, true));
+    recv_socket_.reset(new AsyncStunServerTCPSocket(server));
     recv_socket_->SignalNewConnection.connect(
         this, &AsyncStunTCPSocketTest::OnNewConnection);
 
@@ -95,7 +104,7 @@
     ++sent_packets_;
   }
 
-  void OnNewConnection(rtc::AsyncPacketSocket* server,
+  void OnNewConnection(rtc::AsyncPacketSocket* /*server*/,
                        rtc::AsyncPacketSocket* new_socket) {
     listen_socket_.reset(new_socket);
     new_socket->SignalReadPacket.connect(this,
@@ -123,7 +132,7 @@
   std::unique_ptr<rtc::VirtualSocketServer> vss_;
   rtc::AutoSocketServerThread thread_;
   std::unique_ptr<AsyncStunTCPSocket> send_socket_;
-  std::unique_ptr<AsyncStunTCPSocket> recv_socket_;
+  std::unique_ptr<rtc::AsyncPacketSocket> recv_socket_;
   std::unique_ptr<rtc::AsyncPacketSocket> listen_socket_;
   std::list<std::string> recv_packets_;
   int sent_packets_ = 0;
diff --git a/p2p/base/basic_packet_socket_factory.cc b/p2p/base/basic_packet_socket_factory.cc
index 4cba270..d206497 100644
--- a/p2p/base/basic_packet_socket_factory.cc
+++ b/p2p/base/basic_packet_socket_factory.cc
@@ -92,8 +92,7 @@
     socket = new AsyncSSLSocket(socket);
   }
 
-  if (opts & PacketSocketFactory::OPT_STUN)
-    return new cricket::AsyncStunTCPSocket(socket, true);
+  RTC_CHECK(!(opts & PacketSocketFactory::OPT_STUN));
 
   return new AsyncTCPSocket(socket, true);
 }
@@ -187,7 +186,7 @@
   // Finally, wrap that socket in a TCP or STUN TCP packet socket.
   AsyncPacketSocket* tcp_socket;
   if (tcp_options.opts & PacketSocketFactory::OPT_STUN) {
-    tcp_socket = new cricket::AsyncStunTCPSocket(socket, false);
+    tcp_socket = new cricket::AsyncStunTCPSocket(socket);
   } else {
     tcp_socket = new AsyncTCPSocket(socket, false);
   }
diff --git a/p2p/base/turn_server.cc b/p2p/base/turn_server.cc
index 01856f4..fd9cd16 100644
--- a/p2p/base/turn_server.cc
+++ b/p2p/base/turn_server.cc
@@ -183,7 +183,7 @@
   if (accepted_socket != NULL) {
     ProtocolType proto = server_listen_sockets_[server_socket];
     cricket::AsyncStunTCPSocket* tcp_socket =
-        new cricket::AsyncStunTCPSocket(accepted_socket, false);
+        new cricket::AsyncStunTCPSocket(accepted_socket);
 
     tcp_socket->SignalClose.connect(this, &TurnServer::OnInternalSocketClose);
     // Finally add the socket so it can start communicating with the client.
