diff --git a/test/core/util/port.h b/test/core/util/port.h
index 4b70fdc..faeabba 100644
--- a/test/core/util/port.h
+++ b/test/core/util/port.h
@@ -40,16 +40,16 @@
 
 /* pick a port number that is currently unused by either tcp or udp. return
    0 on failure. */
-int grpc_pick_unused_port();
+int grpc_pick_unused_port(void);
 /* pick a port number that is currently unused by either tcp or udp. abort
    on failure. */
-int grpc_pick_unused_port_or_die();
+int grpc_pick_unused_port_or_die(void);
 
 /* Return a port which was previously returned by grpc_pick_unused_port().
  * Implementations of grpc_pick_unused_port() backed by a portserver may limit
  * the total number of ports available; this lets a binary return its allocated
  * ports back to the server if it is going to allocate a large number. */
-void grpc_recycle_unused_port();
+void grpc_recycle_unused_port(int port);
 
 #ifdef __cplusplus
 }
diff --git a/test/core/util/port_posix.c b/test/core/util/port_posix.c
index 32b1849..7e270ff 100644
--- a/test/core/util/port_posix.c
+++ b/test/core/util/port_posix.c
@@ -73,21 +73,20 @@
   int found = 0;
   size_t found_at = 0;
   char *env = gpr_getenv("GRPC_TEST_PORT_SERVER");
-  if (env != NULL) {
-    /* Find the port and erase it from the list, then tell the server it can be
-       freed. */
-    for (i = 0; i < num_chosen_ports; i++) {
-      if (chosen_ports[i] == port) {
-        GPR_ASSERT(found == 0);
-        found = 1;
-        found_at = i;
-      }
+  /* Find the port and erase it from the list, then tell the server it can be
+     freed. */
+  for (i = 0; i < num_chosen_ports; i++) {
+    if (chosen_ports[i] == port) {
+      GPR_ASSERT(found == 0);
+      found = 1;
+      found_at = i;
     }
-    if (found) {
-      chosen_ports[found_at] = chosen_ports[num_chosen_ports - 1];
+  }
+  if (found) {
+    chosen_ports[found_at] = chosen_ports[num_chosen_ports - 1];
+    num_chosen_ports--;
+    if (env) {
       grpc_free_port_using_server(env, port);
-      num_chosen_ports--;
-      chosen_ports = gpr_realloc(chosen_ports, sizeof(int) * num_chosen_ports);
     }
   }
   return found;
diff --git a/test/core/util/port_windows.c b/test/core/util/port_windows.c
index 29f3404..36c8d28 100644
--- a/test/core/util/port_windows.c
+++ b/test/core/util/port_windows.c
@@ -90,7 +90,6 @@
       chosen_ports[found_at] = chosen_ports[num_chosen_ports - 1];
       grpc_free_port_using_server(env, port);
       num_chosen_ports--;
-      chosen_ports = gpr_realloc(chosen_ports, sizeof(int) * num_chosen_ports);
     }
   }
   return found;
