tests: net: sockets: tls: Add test verifying send() after close
Add test case verifying that send() returns an error when called after
TLS session has been closed.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
(cherry picked from commit b920793e9bfe35909d71beb84d62a87537f15d75)
diff --git a/tests/net/socket/tls/src/main.c b/tests/net/socket/tls/src/main.c
index d5e9d67..baeebe2 100644
--- a/tests/net/socket/tls/src/main.c
+++ b/tests/net/socket/tls/src/main.c
@@ -1174,6 +1174,55 @@
k_sleep(TCP_TEARDOWN_TIMEOUT);
}
+ZTEST(net_socket_tls, test_send_on_close)
+{
+ uint8_t rx_buf[sizeof(TEST_STR_SMALL) - 1] = { 0 };
+ int ret;
+
+ test_prepare_tls_connection(AF_INET6);
+
+ test_close(new_sock);
+ new_sock = -1;
+
+ /* Small delay for packets to propagate. */
+ k_msleep(10);
+
+ /* Verify send() reports an error after connection is closed. */
+ ret = send(c_sock, TEST_STR_SMALL, strlen(TEST_STR_SMALL), 0);
+ zassert_equal(ret, -1, "send() should've failed");
+ zassert_equal(errno, ECONNABORTED, "Unexpected errno value: %d", errno);
+
+ /* send() on closed connection marked error on a socket. */
+ ret = recv(c_sock, rx_buf, sizeof(rx_buf), 0);
+ zassert_equal(ret, -1, "send() should've failed");
+ zassert_equal(errno, ECONNABORTED, "Unexpected errno value: %d", errno);
+
+ test_sockets_close();
+
+ /* And in reverse order */
+
+ test_prepare_tls_connection(AF_INET6);
+
+ test_close(new_sock);
+ new_sock = -1;
+
+ /* Small delay for packets to propagate. */
+ k_msleep(10);
+
+ /* Graceful connection close should be reported first. */
+ ret = recv(c_sock, rx_buf, sizeof(rx_buf), 0);
+ zassert_equal(ret, 0, "recv() should've reported connection close");
+
+ /* And consecutive send() should fail. */
+ ret = send(c_sock, TEST_STR_SMALL, strlen(TEST_STR_SMALL), 0);
+ zassert_equal(ret, -1, "send() should've failed");
+ zassert_equal(errno, ECONNABORTED, "Unexpected errno value: %d", errno);
+
+ test_sockets_close();
+
+ k_sleep(TCP_TEARDOWN_TIMEOUT);
+}
+
ZTEST(net_socket_tls, test_so_rcvtimeo)
{
uint8_t rx_buf[sizeof(TEST_STR_SMALL) - 1];