selftests/tls: Fix recv(MSG_PEEK) & splice() test cases
TLS test cases splice_from_pipe, send_and_splice & recv_peek_multiple_records expect to receive a given nummber of bytes and then compare them against the number of bytes which were sent. Therefore, system call recv() must not return before receiving the requested number of bytes, otherwise the subsequent memcmp() fails. This patch passes MSG_WAITALL flag to recv() so that it does not return prematurely before requested number of bytes are copied to receive buffer. Signed-off-by: Vakul Garg <vakul.garg@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e3a9667a5b
commit
0ed3015c99
@ -288,7 +288,7 @@ TEST_F(tls, splice_from_pipe)
|
||||
ASSERT_GE(pipe(p), 0);
|
||||
EXPECT_GE(write(p[1], mem_send, send_len), 0);
|
||||
EXPECT_GE(splice(p[0], NULL, self->fd, NULL, send_len, 0), 0);
|
||||
EXPECT_GE(recv(self->cfd, mem_recv, send_len, 0), 0);
|
||||
EXPECT_EQ(recv(self->cfd, mem_recv, send_len, MSG_WAITALL), send_len);
|
||||
EXPECT_EQ(memcmp(mem_send, mem_recv, send_len), 0);
|
||||
}
|
||||
|
||||
@ -322,13 +322,13 @@ TEST_F(tls, send_and_splice)
|
||||
|
||||
ASSERT_GE(pipe(p), 0);
|
||||
EXPECT_EQ(send(self->fd, test_str, send_len2, 0), send_len2);
|
||||
EXPECT_NE(recv(self->cfd, buf, send_len2, 0), -1);
|
||||
EXPECT_EQ(recv(self->cfd, buf, send_len2, MSG_WAITALL), send_len2);
|
||||
EXPECT_EQ(memcmp(test_str, buf, send_len2), 0);
|
||||
|
||||
EXPECT_GE(write(p[1], mem_send, send_len), send_len);
|
||||
EXPECT_GE(splice(p[0], NULL, self->fd, NULL, send_len, 0), send_len);
|
||||
|
||||
EXPECT_GE(recv(self->cfd, mem_recv, send_len, 0), 0);
|
||||
EXPECT_EQ(recv(self->cfd, mem_recv, send_len, MSG_WAITALL), send_len);
|
||||
EXPECT_EQ(memcmp(mem_send, mem_recv, send_len), 0);
|
||||
}
|
||||
|
||||
@ -516,17 +516,17 @@ TEST_F(tls, recv_peek_multiple_records)
|
||||
len = strlen(test_str_second) + 1;
|
||||
EXPECT_EQ(send(self->fd, test_str_second, len, 0), len);
|
||||
|
||||
len = sizeof(buf);
|
||||
len = strlen(test_str_first);
|
||||
memset(buf, 0, len);
|
||||
EXPECT_NE(recv(self->cfd, buf, len, MSG_PEEK), -1);
|
||||
EXPECT_EQ(recv(self->cfd, buf, len, MSG_PEEK | MSG_WAITALL), len);
|
||||
|
||||
/* MSG_PEEK can only peek into the current record. */
|
||||
len = strlen(test_str_first) + 1;
|
||||
len = strlen(test_str_first);
|
||||
EXPECT_EQ(memcmp(test_str_first, buf, len), 0);
|
||||
|
||||
len = sizeof(buf);
|
||||
len = strlen(test_str) + 1;
|
||||
memset(buf, 0, len);
|
||||
EXPECT_NE(recv(self->cfd, buf, len, 0), -1);
|
||||
EXPECT_EQ(recv(self->cfd, buf, len, MSG_WAITALL), len);
|
||||
|
||||
/* Non-MSG_PEEK will advance strparser (and therefore record)
|
||||
* however.
|
||||
@ -543,9 +543,9 @@ TEST_F(tls, recv_peek_multiple_records)
|
||||
len = strlen(test_str_second) + 1;
|
||||
EXPECT_EQ(send(self->fd, test_str_second, len, 0), len);
|
||||
|
||||
len = sizeof(buf);
|
||||
len = strlen(test_str) + 1;
|
||||
memset(buf, 0, len);
|
||||
EXPECT_NE(recv(self->cfd, buf, len, MSG_PEEK), -1);
|
||||
EXPECT_EQ(recv(self->cfd, buf, len, MSG_PEEK | MSG_WAITALL), len);
|
||||
|
||||
len = strlen(test_str) + 1;
|
||||
EXPECT_EQ(memcmp(test_str, buf, len), 0);
|
||||
|
Loading…
Reference in New Issue
Block a user