@@ -84,15 +84,15 @@ static void do_write(const char* data, int len) {
8484bool done = false ;
8585 req.data = &done;
8686uv_buf_t buf[1 ];
87- buf[0 ].base = const_cast <char *>(data);
87+ buf[0 ].base = const_cast <char *>(data);
8888 buf[0 ].len = len;
8989uv_write (&req, reinterpret_cast <uv_stream_t *>(&client_socket), buf, 1 ,
9090 write_done);
9191SPIN_WHILE (req.data );
9292}
9393
9494static void buffer_alloc_cb (uv_handle_t * stream, size_t len, uv_buf_t * buf) {
95- buf->base = static_cast <char *>(malloc (len));
95+ buf->base = static_cast <char *>(malloc (len));
9696 buf->len = len;
9797}
9898
@@ -369,7 +369,7 @@ class InspectorSocketTest : public ::testing::Test {
369369TEST_F (InspectorSocketTest, ReadsAndWritesInspectorMessage) {
370370ASSERT_TRUE (connected);
371371ASSERT_FALSE (inspector_ready);
372- do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
372+ do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
373373SPIN_WHILE (!inspector_ready);
374374expect_handshake ();
375375
@@ -397,7 +397,7 @@ TEST_F(InspectorSocketTest, ReadsAndWritesInspectorMessage) {
397397
398398TEST_F (InspectorSocketTest, BufferEdgeCases) {
399399
400- do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
400+ do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
401401expect_handshake ();
402402
403403const char MULTIPLE_REQUESTS [] = {
@@ -466,11 +466,11 @@ TEST_F(InspectorSocketTest, AcceptsRequestInSeveralWrites) {
466466const int write1 = 95 ;
467467const int write2 = 5 ;
468468const int write3 = sizeof (HANDSHAKE_REQ ) - write1 - write2 - 1 ;
469- do_write (const_cast <char *>(HANDSHAKE_REQ ), write1);
469+ do_write (const_cast <char *>(HANDSHAKE_REQ ), write1);
470470ASSERT_FALSE (inspector_ready);
471- do_write (const_cast <char *>(HANDSHAKE_REQ ) + write1, write2);
471+ do_write (const_cast <char *>(HANDSHAKE_REQ ) + write1, write2);
472472ASSERT_FALSE (inspector_ready);
473- do_write (const_cast <char *>(HANDSHAKE_REQ ) + write1 + write2, write3);
473+ do_write (const_cast <char *>(HANDSHAKE_REQ ) + write1 + write2, write3);
474474SPIN_WHILE (!inspector_ready);
475475expect_handshake ();
476476inspector_read_stop (&inspector);
@@ -481,10 +481,10 @@ TEST_F(InspectorSocketTest, AcceptsRequestInSeveralWrites) {
481481TEST_F (InspectorSocketTest, ExtraTextBeforeRequest) {
482482 last_event = kInspectorHandshakeUpgraded ;
483483char UNCOOL_BRO [] = " Uncool, bro: Text before the first req\r\n " ;
484- do_write (const_cast <char *>(UNCOOL_BRO ), sizeof (UNCOOL_BRO ) - 1 );
484+ do_write (const_cast <char *>(UNCOOL_BRO ), sizeof (UNCOOL_BRO ) - 1 );
485485
486486ASSERT_FALSE (inspector_ready);
487- do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
487+ do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
488488SPIN_WHILE (last_event != kInspectorHandshakeFailed );
489489expect_handshake_failure ();
490490EXPECT_EQ (uv_is_active (reinterpret_cast <uv_handle_t *>(&client_socket)), 0 );
@@ -493,10 +493,10 @@ TEST_F(InspectorSocketTest, ExtraTextBeforeRequest) {
493493
494494TEST_F (InspectorSocketTest, ExtraLettersBeforeRequest) {
495495char UNCOOL_BRO [] = " Uncool!!" ;
496- do_write (const_cast <char *>(UNCOOL_BRO ), sizeof (UNCOOL_BRO ) - 1 );
496+ do_write (const_cast <char *>(UNCOOL_BRO ), sizeof (UNCOOL_BRO ) - 1 );
497497
498498ASSERT_FALSE (inspector_ready);
499- do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
499+ do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
500500SPIN_WHILE (last_event != kInspectorHandshakeFailed );
501501expect_handshake_failure ();
502502EXPECT_EQ (uv_is_active (reinterpret_cast <uv_handle_t *>(&client_socket)), 0 );
@@ -511,7 +511,7 @@ TEST_F(InspectorSocketTest, RequestWithoutKey) {
511511" Sec-WebSocket-Version: 13\r\n\r\n " ;
512512 ;
513513
514- do_write (const_cast <char *>(BROKEN_REQUEST ), sizeof (BROKEN_REQUEST ) - 1 );
514+ do_write (const_cast <char *>(BROKEN_REQUEST ), sizeof (BROKEN_REQUEST ) - 1 );
515515SPIN_WHILE (last_event != kInspectorHandshakeFailed );
516516expect_handshake_failure ();
517517EXPECT_EQ (uv_is_active (reinterpret_cast <uv_handle_t *>(&client_socket)), 0 );
@@ -521,7 +521,7 @@ TEST_F(InspectorSocketTest, RequestWithoutKey) {
521521TEST_F (InspectorSocketTest, KillsConnectionOnProtocolViolation) {
522522ASSERT_TRUE (connected);
523523ASSERT_FALSE (inspector_ready);
524- do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
524+ do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
525525SPIN_WHILE (!inspector_ready);
526526ASSERT_TRUE (inspector_ready);
527527expect_handshake ();
@@ -534,7 +534,7 @@ TEST_F(InspectorSocketTest, KillsConnectionOnProtocolViolation) {
534534TEST_F (InspectorSocketTest, CanStopReadingFromInspector) {
535535ASSERT_TRUE (connected);
536536ASSERT_FALSE (inspector_ready);
537- do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
537+ do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
538538expect_handshake ();
539539ASSERT_TRUE (inspector_ready);
540540
@@ -552,15 +552,15 @@ TEST_F(InspectorSocketTest, CanStopReadingFromInspector) {
552552manual_inspector_socket_cleanup ();
553553}
554554
555- static bool inspector_closed;
555+ static int inspector_closed = 0 ;
556556
557557void inspector_closed_cb (inspector_socket_t *inspector, int code) {
558- inspector_closed = true ;
558+ inspector_closed++ ;
559559}
560560
561561TEST_F (InspectorSocketTest, CloseDoesNotNotifyReadCallback) {
562- inspector_closed = false ;
563- do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
562+ inspector_closed = 0 ;
563+ do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
564564expect_handshake ();
565565
566566int error_code = 0 ;
@@ -570,27 +570,29 @@ TEST_F(InspectorSocketTest, CloseDoesNotNotifyReadCallback) {
570570inspector_close (&inspector, inspector_closed_cb);
571571char CLOSE_FRAME [] = {' \x88 ' , ' \x00 ' };
572572expect_on_client (CLOSE_FRAME , sizeof (CLOSE_FRAME ));
573- ASSERT_FALSE ( inspector_closed);
573+ EXPECT_EQ ( 0 , inspector_closed);
574574const char CLIENT_CLOSE_FRAME [] = {' \x88 ' , ' \x80 ' , ' \x2D ' ,
575575' \x0E ' , ' \x1E ' , ' \xFA ' };
576576do_write (CLIENT_CLOSE_FRAME , sizeof (CLIENT_CLOSE_FRAME ));
577577EXPECT_NE (UV_EOF , error_code);
578- SPIN_WHILE (!inspector_closed);
578+ SPIN_WHILE (inspector_closed == 0 );
579+ EXPECT_EQ (1 , inspector_closed);
579580 inspector.data = nullptr ;
580581}
581582
582583TEST_F (InspectorSocketTest, CloseWorksWithoutReadEnabled) {
583- inspector_closed = false ;
584- do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
584+ inspector_closed = 0 ;
585+ do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
585586expect_handshake ();
586587inspector_close (&inspector, inspector_closed_cb);
587588char CLOSE_FRAME [] = {' \x88 ' , ' \x00 ' };
588589expect_on_client (CLOSE_FRAME , sizeof (CLOSE_FRAME ));
589- ASSERT_FALSE ( inspector_closed);
590+ EXPECT_EQ ( 0 , inspector_closed);
590591const char CLIENT_CLOSE_FRAME [] = {' \x88 ' , ' \x80 ' , ' \x2D ' ,
591592' \x0E ' , ' \x1E ' , ' \xFA ' };
592593do_write (CLIENT_CLOSE_FRAME , sizeof (CLIENT_CLOSE_FRAME ));
593- SPIN_WHILE (!inspector_closed);
594+ SPIN_WHILE (inspector_closed == 0 );
595+ EXPECT_EQ (1 , inspector_closed);
594596}
595597
596598// Make sure buffering works
@@ -690,7 +692,7 @@ HandshakeCanBeCanceled_handshake(enum inspector_handshake_event state,
690692TEST_F (InspectorSocketTest, HandshakeCanBeCanceled) {
691693 handshake_delegate = HandshakeCanBeCanceled_handshake;
692694
693- do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
695+ do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
694696
695697expect_handshake_failure ();
696698EXPECT_EQ (2 , handshake_events);
@@ -727,7 +729,7 @@ TEST_F(InspectorSocketTest, GetThenHandshake) {
727729
728730expect_on_client (TEST_SUCCESS , sizeof (TEST_SUCCESS ) - 1 );
729731
730- do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
732+ do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
731733expect_handshake ();
732734EXPECT_EQ (3 , handshake_events);
733735manual_inspector_socket_cleanup ();
@@ -766,7 +768,7 @@ static void CleanupSocketAfterEOF_read_cb(uv_stream_t* stream, ssize_t nread,
766768}
767769
768770TEST_F (InspectorSocketTest, CleanupSocketAfterEOF) {
769- do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
771+ do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
770772expect_handshake ();
771773
772774inspector_read_start (&inspector, buffer_alloc_cb,
@@ -810,7 +812,7 @@ static void mask_message(const char* message,
810812TEST_F (InspectorSocketTest, Send1Mb) {
811813ASSERT_TRUE (connected);
812814ASSERT_FALSE (inspector_ready);
813- do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
815+ do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
814816SPIN_WHILE (!inspector_ready);
815817expect_handshake ();
816818
@@ -862,3 +864,23 @@ TEST_F(InspectorSocketTest, Send1Mb) {
862864free (expected);
863865free (message);
864866}
867+
868+ static ssize_t err;
869+
870+ void ErrorCleansUpTheSocket_cb (uv_stream_t * stream, ssize_t read,
871+ const uv_buf_t * buf) {
872+ err = read;
873+ }
874+
875+ TEST_F (InspectorSocketTest, ErrorCleansUpTheSocket) {
876+ inspector_closed = 0 ;
877+ do_write (const_cast <char *>(HANDSHAKE_REQ ), sizeof (HANDSHAKE_REQ ) - 1 );
878+ expect_handshake ();
879+ const char NOT_A_GOOD_FRAME [] = {' H' , ' e' , ' l' , ' l' , ' o' };
880+ err = 42 ;
881+ inspector_read_start (&inspector, buffer_alloc_cb,
882+ ErrorCleansUpTheSocket_cb);
883+ do_write (NOT_A_GOOD_FRAME , sizeof (NOT_A_GOOD_FRAME ));
884+ SPIN_WHILE (err > 0 );
885+ EXPECT_EQ (UV_EPROTO , err);
886+ }
0 commit comments