netbsd-tests: Fix the libc stat_socket test

The test tries to connect a socket to a closed port at 127.0.0.1.  It
sets O_NONBLOCK on the socket first and expects to get EINPROGRESS from
connect(2), but this is not guaranteed, ECONNREFUSED is possible.
Handle both cases, and re-enable the test.

PR:		240621
MFC after:	1 week
Sponsored by:	The FreeBSD Foundation
This commit is contained in:
Mark Johnston 2022-01-14 15:00:01 -05:00
parent 7bd2df8c82
commit 95c75073d3

View file

@ -332,9 +332,6 @@ ATF_TC_BODY(stat_socket, tc)
uint32_t iaddr;
int fd, flags;
if (atf_tc_get_config_var_as_bool_wd(tc, "ci", false))
atf_tc_skip("https://bugs.freebsd.org/240621");
(void)memset(&st, 0, sizeof(struct stat));
(void)memset(&addr, 0, sizeof(struct sockaddr_in));
@ -353,14 +350,14 @@ ATF_TC_BODY(stat_socket, tc)
errno = 0;
ATF_REQUIRE_ERRNO(EINPROGRESS,
connect(fd, (struct sockaddr *)&addr,
sizeof(struct sockaddr_in)) == -1);
ATF_REQUIRE(connect(fd, (struct sockaddr *)&addr,
sizeof(struct sockaddr_in)) == -1);
ATF_REQUIRE(errno == EINPROGRESS || errno == ECONNREFUSED);
errno = 0;
if (fstat(fd, &st) != 0 || errno != 0)
atf_tc_fail("fstat(2) failed for a EINPROGRESS socket");
atf_tc_fail("fstat(2) failed for a socket");
(void)close(fd);
}