diff --git a/src/core/iomgr/udp_server.c b/src/core/iomgr/udp_server.c index 6429c38b289..0508853b2e6 100644 --- a/src/core/iomgr/udp_server.c +++ b/src/core/iomgr/udp_server.c @@ -370,7 +370,8 @@ int grpc_udp_server_add_port(grpc_udp_server *s, const void *addr, int addr_len, /* Try listening on IPv6 first. */ addr = (struct sockaddr *)&wild6; addr_len = sizeof(wild6); - fd = grpc_create_dualstack_socket(addr, SOCK_DGRAM, IPPROTO_UDP, &dsmode); + fd = grpc_create_dualstack_socket(addr, SOCK_DGRAM | SOCK_NONBLOCK, + IPPROTO_UDP, &dsmode); allocated_port1 = add_socket_to_server(s, fd, addr, addr_len, read_cb); if (fd >= 0 && dsmode == GRPC_DSMODE_DUALSTACK) { goto done; @@ -384,7 +385,8 @@ int grpc_udp_server_add_port(grpc_udp_server *s, const void *addr, int addr_len, addr_len = sizeof(wild4); } - fd = grpc_create_dualstack_socket(addr, SOCK_DGRAM, IPPROTO_UDP, &dsmode); + fd = grpc_create_dualstack_socket(addr, SOCK_DGRAM | SOCK_NONBLOCK, + IPPROTO_UDP, &dsmode); if (fd < 0) { gpr_log(GPR_ERROR, "Unable to create socket: %s", strerror(errno)); }