diff --git a/test/apps/network/tcp_err.c b/test/apps/network/tcp_err.c index d506c042e..6e6738e5e 100644 --- a/test/apps/network/tcp_err.c +++ b/test/apps/network/tcp_err.c @@ -460,3 +460,21 @@ FN_TEST(sendmsg_and_recvmsg) TEST_RES(sendmsg(sk_accepted, &msg, 0), _ret <= sndbuf); } END_TEST() + +FN_TEST(self_connect) +{ + int sk; + char buf[5]; + + sk = TEST_SUCC(socket(PF_INET, SOCK_STREAM, 0)); + + sk_addr.sin_port = htons(8888); + TEST_SUCC(bind(sk, (struct sockaddr *)&sk_addr, sizeof(sk_addr))); + TEST_SUCC(connect(sk, (struct sockaddr *)&sk_addr, sizeof(sk_addr))); + + TEST_RES(write(sk, "hello", 5), _ret == 5); + TEST_RES(read(sk, buf, 5), _ret == 5 && memcmp(buf, "hello", 5) == 0); + + TEST_SUCC(close(sk)); +} +END_TEST() diff --git a/test/apps/network/udp_err.c b/test/apps/network/udp_err.c index cf0597a3a..c5ffe4d11 100644 --- a/test/apps/network/udp_err.c +++ b/test/apps/network/udp_err.c @@ -384,3 +384,21 @@ FN_TEST(sendmsg_and_recvmsg_bad_buffer) TEST_RES(recvmsg(sk_bound, &msg, 0), _ret == strlen(good_buffer)); } END_TEST() + +FN_TEST(self_connect) +{ + int sk; + char buf[5]; + + sk = TEST_SUCC(socket(PF_INET, SOCK_DGRAM, 0)); + + sk_addr.sin_port = htons(7777); + TEST_SUCC(bind(sk, (struct sockaddr *)&sk_addr, sizeof(sk_addr))); + TEST_SUCC(connect(sk, (struct sockaddr *)&sk_addr, sizeof(sk_addr))); + + TEST_RES(write(sk, "hello", 5), _ret == 5); + TEST_RES(read(sk, buf, 5), _ret == 5 && memcmp(buf, "hello", 5) == 0); + + TEST_SUCC(close(sk)); +} +END_TEST()