diff --git a/src/core/lib/iomgr/tcp_server_posix.c b/src/core/lib/iomgr/tcp_server_posix.c
index 7cc44fabe7e807299257ff219c89ffd664629e1c..61ffb02a716f73ae14db960e1701d0550dd0d7f7 100644
--- a/src/core/lib/iomgr/tcp_server_posix.c
+++ b/src/core/lib/iomgr/tcp_server_posix.c
@@ -601,7 +601,9 @@ static grpc_error *add_all_local_addrs_to_server(grpc_tcp_server *s,
                                                  unsigned port_index,
                                                  int requested_port,
                                                  int *out_port) {
-#ifdef GRPC_HAVE_IFADDRS
+#ifndef GRPC_HAVE_IFADDRS
+  return GRPC_ERROR_CREATE("no ifaddrs available");
+#else  /* ifndef GRPC_HAVE_IFADDRS */
   struct ifaddrs *ifa = NULL;
   struct ifaddrs *ifa_it;
   unsigned fd_index = 0;
@@ -689,9 +691,7 @@ static grpc_error *add_all_local_addrs_to_server(grpc_tcp_server *s,
     *out_port = sp->port;
     return GRPC_ERROR_NONE;
   }
-#else  /* GRPC_HAVE_IFADDRS */
-  return GRPC_ERROR_NONE;
-#endif /* GRPC_HAVE_IFADDRS */
+#endif /* ifndef GRPC_HAVE_IFADDRS */
 }
 
 /* Treat :: or 0.0.0.0 as a family-agnostic wildcard. */
@@ -708,10 +708,14 @@ static grpc_error *add_wildcard_addrs_to_server(grpc_tcp_server *s,
   grpc_error *v6_err = GRPC_ERROR_NONE;
   grpc_error *v4_err = GRPC_ERROR_NONE;
   *out_port = -1;
+
+#ifdef GRPC_HAVE_IFADDRS
   if (s->expand_wildcard_addrs) {
     return add_all_local_addrs_to_server(s, port_index, requested_port,
                                          out_port);
   }
+#endif /* GRPC_HAVE_IFADDRS */
+
   grpc_sockaddr_make_wildcards(requested_port, &wild4, &wild6);
   /* Try listening on IPv6 first. */
   if ((v6_err = add_addr_to_server(s, &wild6, port_index, fd_index, &dsmode,