Implement non-blocking connect

This commit is contained in:
Ruihan Li
2024-01-09 23:42:26 +08:00
committed by Tate, Hongliang Tian
parent 9211061181
commit 27c5c27fd0
6 changed files with 146 additions and 38 deletions

View File

@ -63,7 +63,7 @@ FN_SETUP(connected)
sk_addr.sin_port = S_PORT;
CHECK_WITH(connect(sk_connected, (struct sockaddr *)&sk_addr,
sizeof(sk_addr)),
_ret == 0 || errno == EINPROGRESS);
_ret < 0 && errno == EINPROGRESS);
}
END_SETUP()
@ -253,3 +253,18 @@ FN_TEST(poll)
(pfd.revents & (POLLIN | POLLOUT)) == POLLOUT);
}
END_TEST()
FN_TEST(connect)
{
struct sockaddr *psaddr = (struct sockaddr *)&sk_addr;
socklen_t addrlen = sizeof(sk_addr);
TEST_ERRNO(connect(sk_listen, psaddr, addrlen), EISCONN);
TEST_ERRNO(connect(sk_connected, psaddr, addrlen), 0);
TEST_ERRNO(connect(sk_connected, psaddr, addrlen), EISCONN);
TEST_ERRNO(connect(sk_accepted, psaddr, addrlen), EISCONN);
}
END_TEST()