@@ -639,6 +639,46 @@ TEST_F(tls, splice_to_pipe)
639
639
EXPECT_EQ (memcmp (mem_send , mem_recv , send_len ), 0 );
640
640
}
641
641
642
+ TEST_F (tls , splice_cmsg_to_pipe )
643
+ {
644
+ char * test_str = "test_read" ;
645
+ char record_type = 100 ;
646
+ int send_len = 10 ;
647
+ char buf [10 ];
648
+ int p [2 ];
649
+
650
+ ASSERT_GE (pipe (p ), 0 );
651
+ EXPECT_EQ (tls_send_cmsg (self -> fd , 100 , test_str , send_len , 0 ), 10 );
652
+ EXPECT_EQ (splice (self -> cfd , NULL , p [1 ], NULL , send_len , 0 ), -1 );
653
+ EXPECT_EQ (errno , EINVAL );
654
+ EXPECT_EQ (recv (self -> cfd , buf , send_len , 0 ), -1 );
655
+ EXPECT_EQ (errno , EIO );
656
+ EXPECT_EQ (tls_recv_cmsg (_metadata , self -> cfd , record_type ,
657
+ buf , sizeof (buf ), MSG_WAITALL ),
658
+ send_len );
659
+ EXPECT_EQ (memcmp (test_str , buf , send_len ), 0 );
660
+ }
661
+
662
+ TEST_F (tls , splice_dec_cmsg_to_pipe )
663
+ {
664
+ char * test_str = "test_read" ;
665
+ char record_type = 100 ;
666
+ int send_len = 10 ;
667
+ char buf [10 ];
668
+ int p [2 ];
669
+
670
+ ASSERT_GE (pipe (p ), 0 );
671
+ EXPECT_EQ (tls_send_cmsg (self -> fd , 100 , test_str , send_len , 0 ), 10 );
672
+ EXPECT_EQ (recv (self -> cfd , buf , send_len , 0 ), -1 );
673
+ EXPECT_EQ (errno , EIO );
674
+ EXPECT_EQ (splice (self -> cfd , NULL , p [1 ], NULL , send_len , 0 ), -1 );
675
+ EXPECT_EQ (errno , EINVAL );
676
+ EXPECT_EQ (tls_recv_cmsg (_metadata , self -> cfd , record_type ,
677
+ buf , sizeof (buf ), MSG_WAITALL ),
678
+ send_len );
679
+ EXPECT_EQ (memcmp (test_str , buf , send_len ), 0 );
680
+ }
681
+
642
682
TEST_F (tls , recvmsg_single )
643
683
{
644
684
char const * test_str = "test_recvmsg_single" ;
0 commit comments