diff --git a/quic/core/http/end_to_end_test.cc b/quic/core/http/end_to_end_test.cc
index 6eb6ac6..89cf9ca 100644
--- a/quic/core/http/end_to_end_test.cc
+++ b/quic/core/http/end_to_end_test.cc
@@ -225,8 +225,8 @@
   EndToEndTest()
       : initialized_(false),
         connect_to_server_on_initialize_(true),
-        server_address_(
-            QuicSocketAddress(TestLoopback(), QuicPickUnusedPortOrDie())),
+        server_address_(QuicSocketAddress(TestLoopback(),
+                                          QuicPickServerPortForTestsOrDie())),
         server_hostname_("test.example.com"),
         client_writer_(nullptr),
         server_writer_(nullptr),
@@ -416,6 +416,8 @@
       server_thread_->server()->SetPreSharedKey(pre_shared_key_server_);
     }
     server_thread_->Initialize();
+    server_address_ =
+        QuicSocketAddress(server_address_.host(), server_thread_->GetPort());
     QuicDispatcher* dispatcher =
         QuicServerPeer::GetDispatcher(server_thread_->server());
     QuicDispatcherPeer::UseWriter(dispatcher, server_writer_);
diff --git a/quic/platform/api/quic_port_utils.h b/quic/platform/api/quic_port_utils.h
index aa85fc5..685be0a 100644
--- a/quic/platform/api/quic_port_utils.h
+++ b/quic/platform/api/quic_port_utils.h
@@ -10,13 +10,14 @@
 namespace quic {
 
 // Returns a UDP port that is currently unused.  Check-fails if none are
-// available.
-inline int QuicPickUnusedPortOrDie() {
-  return QuicPickUnusedPortOrDieImpl();
+// available. May return 0 in which case the bind() call will cause the OS
+// to use an unused port.
+inline int QuicPickServerPortForTestsOrDie() {
+  return QuicPickServerPortForTestsOrDieImpl();
 }
 
 // Indicates that a specified port previously returned by
-// QuicPickUnusedPortOrDie is no longer used.
+// QuicPickServerPortForTestsOrDie is no longer used.
 inline void QuicRecyclePort(int port) {
   return QuicRecyclePortImpl(port);
 }
diff --git a/quic/qbone/qbone_client_test.cc b/quic/qbone/qbone_client_test.cc
index 78e533c..2902b19 100644
--- a/quic/qbone/qbone_client_test.cc
+++ b/quic/qbone/qbone_client_test.cc
@@ -208,7 +208,8 @@
 TEST(QboneClientTest, SendDataFromClient) {
   SetQuicReloadableFlag(quic_use_parse_public_header, true);
   auto server = new QboneTestServer(crypto_test_utils::ProofSourceForTesting());
-  QuicSocketAddress server_address(TestLoopback(), QuicPickUnusedPortOrDie());
+  QuicSocketAddress server_address(TestLoopback(),
+                                   QuicPickServerPortForTestsOrDie());
   ServerThread server_thread(server, server_address);
   server_thread.Initialize();
   server_thread.Start();
diff --git a/quic/qbone/qbone_session_test.cc b/quic/qbone/qbone_session_test.cc
index 80bf08f..be598a9 100644
--- a/quic/qbone/qbone_session_test.cc
+++ b/quic/qbone/qbone_session_test.cc
@@ -251,7 +251,8 @@
         QuicMakeUnique<DataSavingQboneControlHandler<QboneClientRequest>>();
     server_handler_ =
         QuicMakeUnique<DataSavingQboneControlHandler<QboneServerRequest>>();
-    QuicSocketAddress server_address(TestLoopback(), QuicPickUnusedPortOrDie());
+    QuicSocketAddress server_address(TestLoopback(),
+                                     QuicPickServerPortForTestsOrDie());
     QuicSocketAddress client_address;
     if (server_address.host().address_family() == IpAddressFamily::IP_V4) {
       client_address = QuicSocketAddress(QuicIpAddress::Any4(), 0);
diff --git a/quic/tools/quic_client_test.cc b/quic/tools/quic_client_test.cc
index 134119b..e2d7f14 100644
--- a/quic/tools/quic_client_test.cc
+++ b/quic/tools/quic_client_test.cc
@@ -65,7 +65,7 @@
   // Creates a new QuicClient and Initializes it on an unused port.
   // Caller is responsible for deletion.
   std::unique_ptr<QuicClient> CreateAndInitializeQuicClient() {
-    uint16_t port = QuicPickUnusedPortOrDie();
+    uint16_t port = QuicPickServerPortForTestsOrDie();
     QuicSocketAddress server_address(QuicSocketAddress(TestLoopback(), port));
     QuicServerId server_id("hostname", server_address.port(), false);
     ParsedQuicVersionVector versions = AllSupportedVersions();
@@ -85,7 +85,6 @@
   // port exhaustion in long running processes which repeatedly create clients.
 
   // Record the initial number of FDs.
-
   size_t number_of_open_fds = NumOpenSocketFDs();
 
   // Create a number of clients, initialize them, and verify this has resulted
diff --git a/quic/tools/quic_server_test.cc b/quic/tools/quic_server_test.cc
index 3a2d520..8c89443 100644
--- a/quic/tools/quic_server_test.cc
+++ b/quic/tools/quic_server_test.cc
@@ -86,11 +86,13 @@
 class QuicServerEpollInTest : public QuicTest {
  public:
   QuicServerEpollInTest()
-      : port_(QuicPickUnusedPortOrDie()),
+      : port_(QuicPickServerPortForTestsOrDie()),
         server_address_(TestLoopback(), port_) {}
 
   void StartListening() {
     server_.CreateUDPSocketAndListen(server_address_);
+    server_address_ = QuicSocketAddress(server_address_.host(), server_.port());
+
     ASSERT_TRUE(QuicServerPeer::SetSmallSocket(&server_));
 
     if (!server_.overflow_supported()) {
