Skip to content

Commit 0ed3015

Browse files
nxa22042davem330
authored andcommitted
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>
1 parent e3a9667 commit 0ed3015

File tree

1 file changed

+10
-10
lines changed
  • tools/testing/selftests/net

1 file changed

+10
-10
lines changed

tools/testing/selftests/net/tls.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ TEST_F(tls, splice_from_pipe)
288288
ASSERT_GE(pipe(p), 0);
289289
EXPECT_GE(write(p[1], mem_send, send_len), 0);
290290
EXPECT_GE(splice(p[0], NULL, self->fd, NULL, send_len, 0), 0);
291-
EXPECT_GE(recv(self->cfd, mem_recv, send_len, 0), 0);
291+
EXPECT_EQ(recv(self->cfd, mem_recv, send_len, MSG_WAITALL), send_len);
292292
EXPECT_EQ(memcmp(mem_send, mem_recv, send_len), 0);
293293
}
294294

@@ -322,13 +322,13 @@ TEST_F(tls, send_and_splice)
322322

323323
ASSERT_GE(pipe(p), 0);
324324
EXPECT_EQ(send(self->fd, test_str, send_len2, 0), send_len2);
325-
EXPECT_NE(recv(self->cfd, buf, send_len2, 0), -1);
325+
EXPECT_EQ(recv(self->cfd, buf, send_len2, MSG_WAITALL), send_len2);
326326
EXPECT_EQ(memcmp(test_str, buf, send_len2), 0);
327327

328328
EXPECT_GE(write(p[1], mem_send, send_len), send_len);
329329
EXPECT_GE(splice(p[0], NULL, self->fd, NULL, send_len, 0), send_len);
330330

331-
EXPECT_GE(recv(self->cfd, mem_recv, send_len, 0), 0);
331+
EXPECT_EQ(recv(self->cfd, mem_recv, send_len, MSG_WAITALL), send_len);
332332
EXPECT_EQ(memcmp(mem_send, mem_recv, send_len), 0);
333333
}
334334

@@ -516,17 +516,17 @@ TEST_F(tls, recv_peek_multiple_records)
516516
len = strlen(test_str_second) + 1;
517517
EXPECT_EQ(send(self->fd, test_str_second, len, 0), len);
518518

519-
len = sizeof(buf);
519+
len = strlen(test_str_first);
520520
memset(buf, 0, len);
521-
EXPECT_NE(recv(self->cfd, buf, len, MSG_PEEK), -1);
521+
EXPECT_EQ(recv(self->cfd, buf, len, MSG_PEEK | MSG_WAITALL), len);
522522

523523
/* MSG_PEEK can only peek into the current record. */
524-
len = strlen(test_str_first) + 1;
524+
len = strlen(test_str_first);
525525
EXPECT_EQ(memcmp(test_str_first, buf, len), 0);
526526

527-
len = sizeof(buf);
527+
len = strlen(test_str) + 1;
528528
memset(buf, 0, len);
529-
EXPECT_NE(recv(self->cfd, buf, len, 0), -1);
529+
EXPECT_EQ(recv(self->cfd, buf, len, MSG_WAITALL), len);
530530

531531
/* Non-MSG_PEEK will advance strparser (and therefore record)
532532
* however.
@@ -543,9 +543,9 @@ TEST_F(tls, recv_peek_multiple_records)
543543
len = strlen(test_str_second) + 1;
544544
EXPECT_EQ(send(self->fd, test_str_second, len, 0), len);
545545

546-
len = sizeof(buf);
546+
len = strlen(test_str) + 1;
547547
memset(buf, 0, len);
548-
EXPECT_NE(recv(self->cfd, buf, len, MSG_PEEK), -1);
548+
EXPECT_EQ(recv(self->cfd, buf, len, MSG_PEEK | MSG_WAITALL), len);
549549

550550
len = strlen(test_str) + 1;
551551
EXPECT_EQ(memcmp(test_str, buf, len), 0);

0 commit comments

Comments
 (0)