Commit 7b2a4c2a authored by Sabrina Dubroca's avatar Sabrina Dubroca Committed by Jakub Kicinski
Browse files

selftests: tls: add test for merging of same-type control messages



Two consecutive control messages of the same type should never be
merged into one large received blob of data.

Signed-off-by: default avatarSabrina Dubroca <sd@queasysnail.net>
Link: https://lore.kernel.org/r/018f1633d5471684c65def5fe390de3b15c3d683.1708007371.git.sd@queasysnail.net


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent ec823bf3
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -1485,6 +1485,32 @@ TEST_F(tls, control_msg)
	EXPECT_EQ(memcmp(buf, test_str, send_len), 0);
}

TEST_F(tls, control_msg_nomerge)
{
	char *rec1 = "1111";
	char *rec2 = "2222";
	int send_len = 5;
	char buf[15];

	if (self->notls)
		SKIP(return, "no TLS support");

	EXPECT_EQ(tls_send_cmsg(self->fd, 100, rec1, send_len, 0), send_len);
	EXPECT_EQ(tls_send_cmsg(self->fd, 100, rec2, send_len, 0), send_len);

	EXPECT_EQ(tls_recv_cmsg(_metadata, self->cfd, 100, buf, sizeof(buf), MSG_PEEK), send_len);
	EXPECT_EQ(memcmp(buf, rec1, send_len), 0);

	EXPECT_EQ(tls_recv_cmsg(_metadata, self->cfd, 100, buf, sizeof(buf), MSG_PEEK), send_len);
	EXPECT_EQ(memcmp(buf, rec1, send_len), 0);

	EXPECT_EQ(tls_recv_cmsg(_metadata, self->cfd, 100, buf, sizeof(buf), 0), send_len);
	EXPECT_EQ(memcmp(buf, rec1, send_len), 0);

	EXPECT_EQ(tls_recv_cmsg(_metadata, self->cfd, 100, buf, sizeof(buf), 0), send_len);
	EXPECT_EQ(memcmp(buf, rec2, send_len), 0);
}

TEST_F(tls, shutdown)
{
	char const *test_str = "test_read";