Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(973)

Side by Side Diff: native_client_sdk/src/tests/nacl_io_socket_test/socket_test.cc

Issue 290953002: Use ki_* socket methods in socket_test to fix linux trusted mode. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <arpa/inet.h> 5 #include <arpa/inet.h>
6 #include <errno.h> 6 #include <errno.h>
7 #include <fcntl.h> 7 #include <fcntl.h>
8 #include <netinet/in.h> 8 #include <netinet/in.h>
9 #include <pthread.h> 9 #include <pthread.h>
10 #include <sys/types.h> 10 #include <sys/types.h>
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 // at the time of the first send. 263 // at the time of the first send.
264 EXPECT_EQ(0, Bind(sock2_, LOCAL_HOST, PORT2)); 264 EXPECT_EQ(0, Bind(sock2_, LOCAL_HOST, PORT2));
265 265
266 sockaddr_in addr; 266 sockaddr_in addr;
267 sockaddr_in addr2; 267 sockaddr_in addr2;
268 socklen_t addrlen = sizeof(addr2); 268 socklen_t addrlen = sizeof(addr2);
269 IP4ToSockAddr(LOCAL_HOST, PORT2, &addr2); 269 IP4ToSockAddr(LOCAL_HOST, PORT2, &addr2);
270 270
271 // The first send hasn't occurred, so the socket is not yet bound. 271 // The first send hasn't occurred, so the socket is not yet bound.
272 socklen_t out_addrlen = sizeof(addr); 272 socklen_t out_addrlen = sizeof(addr);
273 ASSERT_EQ(0, getsockname(sock1_, (sockaddr*)&addr, &out_addrlen)); 273 ASSERT_EQ(0, ki_getsockname(sock1_, (sockaddr*)&addr, &out_addrlen));
274 EXPECT_EQ(addrlen, out_addrlen); 274 EXPECT_EQ(addrlen, out_addrlen);
275 EXPECT_EQ(0, htonl(addr.sin_addr.s_addr)); 275 EXPECT_EQ(0, htonl(addr.sin_addr.s_addr));
276 EXPECT_EQ(0, htons(addr.sin_port)); 276 EXPECT_EQ(0, htons(addr.sin_port));
277 277
278 int len1 = 278 int len1 =
279 sendto(sock1_, outbuf, sizeof(outbuf), 0, (sockaddr*) &addr2, addrlen); 279 ki_sendto(sock1_, outbuf, sizeof(outbuf), 0, (sockaddr*) &addr2, addrlen);
280 EXPECT_EQ(sizeof(outbuf), len1); 280 EXPECT_EQ(sizeof(outbuf), len1);
281 281
282 // After the first send, the socket should be bound; the port is set, but 282 // After the first send, the socket should be bound; the port is set, but
283 // the address is still 0. 283 // the address is still 0.
284 ASSERT_EQ(0, getsockname(sock1_, (sockaddr*)&addr, &out_addrlen)); 284 ASSERT_EQ(0, ki_getsockname(sock1_, (sockaddr*)&addr, &out_addrlen));
285 EXPECT_EQ(addrlen, out_addrlen); 285 EXPECT_EQ(addrlen, out_addrlen);
286 EXPECT_EQ(0, htonl(addr.sin_addr.s_addr)); 286 EXPECT_EQ(0, htonl(addr.sin_addr.s_addr));
287 EXPECT_NE(0, htons(addr.sin_port)); 287 EXPECT_NE(0, htons(addr.sin_port));
288 288
289 // Ensure the buffers are different 289 // Ensure the buffers are different
290 EXPECT_NE(0, memcmp(outbuf, inbuf, sizeof(outbuf))); 290 EXPECT_NE(0, memcmp(outbuf, inbuf, sizeof(outbuf)));
291 291
292 // Try to receive the previously sent packet 292 // Try to receive the previously sent packet
293 int len2 = 293 int len2 =
294 recvfrom(sock2_, inbuf, sizeof(inbuf), 0, (sockaddr*) &addr, &addrlen); 294 ki_recvfrom(sock2_, inbuf, sizeof(inbuf), 0, (sockaddr*) &addr, &addrlen);
295 EXPECT_EQ(sizeof(outbuf), len2); 295 EXPECT_EQ(sizeof(outbuf), len2);
296 EXPECT_EQ(sizeof(sockaddr_in), addrlen); 296 EXPECT_EQ(sizeof(sockaddr_in), addrlen);
297 EXPECT_EQ(LOCAL_HOST, htonl(addr.sin_addr.s_addr)); 297 EXPECT_EQ(LOCAL_HOST, htonl(addr.sin_addr.s_addr));
298 EXPECT_NE(0, htons(addr.sin_port)); 298 EXPECT_NE(0, htons(addr.sin_port));
299 299
300 // Now they should be the same 300 // Now they should be the same
301 EXPECT_EQ(0, memcmp(outbuf, inbuf, sizeof(outbuf))); 301 EXPECT_EQ(0, memcmp(outbuf, inbuf, sizeof(outbuf)));
302 } 302 }
303 303
304 const size_t kQueueSize = 65536 * 8; 304 const size_t kQueueSize = 65536 * 8;
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 socklen_t len = sizeof(socket_error); 419 socklen_t len = sizeof(socket_error);
420 ASSERT_EQ(-1, ki_setsockopt(sock1_, SOL_SOCKET, SO_ERROR, 420 ASSERT_EQ(-1, ki_setsockopt(sock1_, SOL_SOCKET, SO_ERROR,
421 &socket_error, len)); 421 &socket_error, len));
422 ASSERT_EQ(ENOPROTOOPT, errno); 422 ASSERT_EQ(ENOPROTOOPT, errno);
423 } 423 }
424 424
425 TEST_F(SocketTest, Sockopt_TCP_NODELAY) { 425 TEST_F(SocketTest, Sockopt_TCP_NODELAY) {
426 int option = 0; 426 int option = 0;
427 socklen_t len = sizeof(option); 427 socklen_t len = sizeof(option);
428 // Getting and setting TCP_NODELAY on UDP socket should fail 428 // Getting and setting TCP_NODELAY on UDP socket should fail
429 sock1_ = socket(AF_INET, SOCK_DGRAM, 0); 429 sock1_ = ki_socket(AF_INET, SOCK_DGRAM, 0);
430 ASSERT_EQ(-1, ki_setsockopt(sock1_, IPPROTO_TCP, TCP_NODELAY, &option, len)); 430 ASSERT_EQ(-1, ki_setsockopt(sock1_, IPPROTO_TCP, TCP_NODELAY, &option, len));
431 ASSERT_EQ(ENOPROTOOPT, errno); 431 ASSERT_EQ(ENOPROTOOPT, errno);
432 ASSERT_EQ(-1, ki_getsockopt(sock1_, IPPROTO_TCP, TCP_NODELAY, &option, &len)); 432 ASSERT_EQ(-1, ki_getsockopt(sock1_, IPPROTO_TCP, TCP_NODELAY, &option, &len));
433 ASSERT_EQ(ENOPROTOOPT, errno); 433 ASSERT_EQ(ENOPROTOOPT, errno);
434 434
435 // Getting and setting TCP_NODELAY on TCP socket should preserve value 435 // Getting and setting TCP_NODELAY on TCP socket should preserve value
436 sock2_ = socket(AF_INET, SOCK_STREAM, 0); 436 sock2_ = ki_socket(AF_INET, SOCK_STREAM, 0);
437 ASSERT_EQ(0, ki_getsockopt(sock2_, IPPROTO_TCP, TCP_NODELAY, &option, &len)); 437 ASSERT_EQ(0, ki_getsockopt(sock2_, IPPROTO_TCP, TCP_NODELAY, &option, &len));
438 ASSERT_EQ(0, option); 438 ASSERT_EQ(0, option);
439 ASSERT_EQ(sizeof(option), len); 439 ASSERT_EQ(sizeof(option), len);
440 440
441 option = 1; 441 option = 1;
442 len = sizeof(option); 442 len = sizeof(option);
443 ASSERT_EQ(0, ki_setsockopt(sock2_, IPPROTO_TCP, TCP_NODELAY, &option, len)) 443 ASSERT_EQ(0, ki_setsockopt(sock2_, IPPROTO_TCP, TCP_NODELAY, &option, len))
444 << "Failed with " << errno << ": " << strerror(errno); 444 << "Failed with " << errno << ": " << strerror(errno);
445 ASSERT_EQ(1, option); 445 ASSERT_EQ(1, option);
446 } 446 }
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
588 sockaddr_in addr; 588 sockaddr_in addr;
589 socklen_t addrlen = sizeof(addr); 589 socklen_t addrlen = sizeof(addr);
590 const char* client_greeting = "hello"; 590 const char* client_greeting = "hello";
591 const char* server_reply = "reply"; 591 const char* server_reply = "reply";
592 const int greeting_len = strlen(client_greeting); 592 const int greeting_len = strlen(client_greeting);
593 const int reply_len = strlen(server_reply); 593 const int reply_len = strlen(server_reply);
594 594
595 int server_sock = sock1_; 595 int server_sock = sock1_;
596 596
597 // Accept before listen should fail 597 // Accept before listen should fail
598 ASSERT_EQ(-1, accept(server_sock, (sockaddr*)&addr, &addrlen)); 598 ASSERT_EQ(-1, ki_accept(server_sock, (sockaddr*)&addr, &addrlen));
599 599
600 // Listen should fail on unbound socket 600 // Listen should fail on unbound socket
601 ASSERT_EQ(-1, ki_listen(server_sock, 10)); 601 ASSERT_EQ(-1, ki_listen(server_sock, 10));
602 602
603 // Bind and Listen 603 // Bind and Listen
604 ASSERT_EQ(0, Bind(server_sock, LOCAL_HOST, PORT1)); 604 ASSERT_EQ(0, Bind(server_sock, LOCAL_HOST, PORT1));
605 ASSERT_EQ(0, ki_listen(server_sock, 10)) 605 ASSERT_EQ(0, ki_listen(server_sock, 10))
606 << "listen failed with: " << strerror(errno); 606 << "listen failed with: " << strerror(errno);
607 607
608 // Connect to listening socket, and send greeting 608 // Connect to listening socket, and send greeting
609 int client_sock = sock2_; 609 int client_sock = sock2_;
610 IP4ToSockAddr(LOCAL_HOST, PORT1, &addr); 610 IP4ToSockAddr(LOCAL_HOST, PORT1, &addr);
611 addrlen = sizeof(addr); 611 addrlen = sizeof(addr);
612 ASSERT_EQ(0, ki_connect(client_sock, (sockaddr*)&addr, addrlen)) 612 ASSERT_EQ(0, ki_connect(client_sock, (sockaddr*)&addr, addrlen))
613 << "Failed with " << errno << ": " << strerror(errno); 613 << "Failed with " << errno << ": " << strerror(errno);
614 614
615 ASSERT_EQ(greeting_len, ki_send(client_sock, client_greeting, 615 ASSERT_EQ(greeting_len, ki_send(client_sock, client_greeting,
616 greeting_len, 0)); 616 greeting_len, 0));
617 617
618 // Pass in addrlen that is larger than our actual address to make 618 // Pass in addrlen that is larger than our actual address to make
619 // sure that it is correctly set back to sizeof(sockaddr_in) 619 // sure that it is correctly set back to sizeof(sockaddr_in)
620 addrlen = sizeof(addr) + 10; 620 addrlen = sizeof(addr) + 10;
621 int new_socket = accept(server_sock, (sockaddr*)&addr, &addrlen); 621 int new_socket = ki_accept(server_sock, (sockaddr*)&addr, &addrlen);
622 ASSERT_GT(new_socket, -1) 622 ASSERT_GT(new_socket, -1)
623 << "accept failed with " << errno << ": " << strerror(errno); 623 << "accept failed with " << errno << ": " << strerror(errno);
624 624
625 // Verify addr and addrlen were set correctly 625 // Verify addr and addrlen were set correctly
626 ASSERT_EQ(addrlen, sizeof(sockaddr_in)); 626 ASSERT_EQ(addrlen, sizeof(sockaddr_in));
627 sockaddr_in client_addr; 627 sockaddr_in client_addr;
628 ASSERT_EQ(0, ki_getsockname(client_sock, (sockaddr*)&client_addr, &addrlen)); 628 ASSERT_EQ(0, ki_getsockname(client_sock, (sockaddr*)&client_addr, &addrlen));
629 ASSERT_EQ(client_addr.sin_family, addr.sin_family); 629 ASSERT_EQ(client_addr.sin_family, addr.sin_family);
630 ASSERT_EQ(client_addr.sin_port, addr.sin_port); 630 ASSERT_EQ(client_addr.sin_port, addr.sin_port);
631 ASSERT_EQ(client_addr.sin_addr.s_addr, addr.sin_addr.s_addr); 631 ASSERT_EQ(client_addr.sin_addr.s_addr, addr.sin_addr.s_addr);
(...skipping 21 matching lines...) Expand all
653 653
654 // bind and listen 654 // bind and listen
655 ASSERT_EQ(0, Bind(server_sock, LOCAL_HOST, PORT1)); 655 ASSERT_EQ(0, Bind(server_sock, LOCAL_HOST, PORT1));
656 ASSERT_EQ(0, ki_listen(server_sock, 10)) 656 ASSERT_EQ(0, ki_listen(server_sock, 10))
657 << "listen failed with: " << strerror(errno); 657 << "listen failed with: " << strerror(errno);
658 658
659 // Accept should fail with EAGAIN since there is no incomming 659 // Accept should fail with EAGAIN since there is no incomming
660 // connection. 660 // connection.
661 sockaddr_in addr; 661 sockaddr_in addr;
662 socklen_t addrlen = sizeof(addr); 662 socklen_t addrlen = sizeof(addr);
663 ASSERT_EQ(-1, accept(server_sock, (sockaddr*)&addr, &addrlen)); 663 ASSERT_EQ(-1, ki_accept(server_sock, (sockaddr*)&addr, &addrlen));
664 ASSERT_EQ(EAGAIN, errno); 664 ASSERT_EQ(EAGAIN, errno);
665 665
666 // If we poll the listening socket it should also return 666 // If we poll the listening socket it should also return
667 // not readable to indicate that no connections are available 667 // not readable to indicate that no connections are available
668 // to accept. 668 // to accept.
669 struct pollfd pollfd = { server_sock, POLLIN|POLLOUT, 0 }; 669 struct pollfd pollfd = { server_sock, POLLIN|POLLOUT, 0 };
670 ASSERT_EQ(0, ki_poll(&pollfd, 1, 0)); 670 ASSERT_EQ(0, ki_poll(&pollfd, 1, 0));
671 671
672 // Connect to listening socket 672 // Connect to listening socket
673 int client_sock = sock2_; 673 int client_sock = sock2_;
674 IP4ToSockAddr(LOCAL_HOST, PORT1, &addr); 674 IP4ToSockAddr(LOCAL_HOST, PORT1, &addr);
675 addrlen = sizeof(addr); 675 addrlen = sizeof(addr);
676 ASSERT_EQ(0, ki_connect(client_sock, (sockaddr*)&addr, addrlen)) 676 ASSERT_EQ(0, ki_connect(client_sock, (sockaddr*)&addr, addrlen))
677 << "Failed with " << errno << ": " << strerror(errno); 677 << "Failed with " << errno << ": " << strerror(errno);
678 678
679 // Not poll again but with an infintie timeout. 679 // Not poll again but with an infintie timeout.
680 pollfd.fd = server_sock; 680 pollfd.fd = server_sock;
681 pollfd.events = POLLIN | POLLOUT; 681 pollfd.events = POLLIN | POLLOUT;
682 ASSERT_EQ(1, ki_poll(&pollfd, 1, -1)); 682 ASSERT_EQ(1, ki_poll(&pollfd, 1, -1));
683 683
684 // Now non-blocking accept should return the new socket 684 // Now non-blocking accept should return the new socket
685 int new_socket = accept(server_sock, (sockaddr*)&addr, &addrlen); 685 int new_socket = ki_accept(server_sock, (sockaddr*)&addr, &addrlen);
686 ASSERT_NE(-1, new_socket) 686 ASSERT_NE(-1, new_socket)
687 << "accept failed with: " << strerror(errno); 687 << "accept failed with: " << strerror(errno);
688 ASSERT_EQ(0, ki_close(new_socket)); 688 ASSERT_EQ(0, ki_close(new_socket));
689 689
690 // Accept calls should once again fail with EAGAIN 690 // Accept calls should once again fail with EAGAIN
691 ASSERT_EQ(-1, accept(server_sock, (sockaddr*)&addr, &addrlen)); 691 ASSERT_EQ(-1, ki_accept(server_sock, (sockaddr*)&addr, &addrlen));
692 ASSERT_EQ(EAGAIN, errno); 692 ASSERT_EQ(EAGAIN, errno);
693 693
694 // As should polling the listening socket 694 // As should polling the listening socket
695 pollfd.fd = server_sock; 695 pollfd.fd = server_sock;
696 pollfd.events = POLLIN | POLLOUT; 696 pollfd.events = POLLIN | POLLOUT;
697 ASSERT_EQ(0, ki_poll(&pollfd, 1, 0)); 697 ASSERT_EQ(0, ki_poll(&pollfd, 1, 0));
698 } 698 }
699 699
700 TEST_F(SocketTestTCP, SendRecvAfterRemoteShutdown) { 700 TEST_F(SocketTestTCP, SendRecvAfterRemoteShutdown) {
701 sockaddr_in addr; 701 sockaddr_in addr;
702 socklen_t addrlen = sizeof(addr); 702 socklen_t addrlen = sizeof(addr);
703 703
704 int server_sock = sock1_; 704 int server_sock = sock1_;
705 int client_sock = sock2_; 705 int client_sock = sock2_;
706 706
707 // bind and listen 707 // bind and listen
708 ASSERT_EQ(0, Bind(server_sock, LOCAL_HOST, PORT1)); 708 ASSERT_EQ(0, Bind(server_sock, LOCAL_HOST, PORT1));
709 ASSERT_EQ(0, ki_listen(server_sock, 10)) 709 ASSERT_EQ(0, ki_listen(server_sock, 10))
710 << "listen failed with: " << strerror(errno); 710 << "listen failed with: " << strerror(errno);
711 711
712 // connect to listening socket 712 // connect to listening socket
713 IP4ToSockAddr(LOCAL_HOST, PORT1, &addr); 713 IP4ToSockAddr(LOCAL_HOST, PORT1, &addr);
714 ASSERT_EQ(0, ki_connect(client_sock, (sockaddr*)&addr, addrlen)) 714 ASSERT_EQ(0, ki_connect(client_sock, (sockaddr*)&addr, addrlen))
715 << "Failed with " << errno << ": " << strerror(errno); 715 << "Failed with " << errno << ": " << strerror(errno);
716 716
717 addrlen = sizeof(addr); 717 addrlen = sizeof(addr);
718 int new_sock = accept(server_sock, (sockaddr*)&addr, &addrlen); 718 int new_sock = ki_accept(server_sock, (sockaddr*)&addr, &addrlen);
719 ASSERT_NE(-1, new_sock); 719 ASSERT_NE(-1, new_sock);
720 720
721 const char* send_buf = "hello world"; 721 const char* send_buf = "hello world";
722 ASSERT_EQ(strlen(send_buf), ki_send(new_sock, send_buf, strlen(send_buf), 0)); 722 ASSERT_EQ(strlen(send_buf), ki_send(new_sock, send_buf, strlen(send_buf), 0));
723 723
724 // Recv first 10 bytes 724 // Recv first 10 bytes
725 char buf[256]; 725 char buf[256];
726 ASSERT_EQ(10, ki_recv(client_sock, buf, 10, 0)); 726 ASSERT_EQ(10, ki_recv(client_sock, buf, 10, 0));
727 727
728 // Close the new socket 728 // Close the new socket
(...skipping 21 matching lines...) Expand all
750 ASSERT_EQ(0, Bind(server_sock, LOCAL_HOST, PORT1)); 750 ASSERT_EQ(0, Bind(server_sock, LOCAL_HOST, PORT1));
751 ASSERT_EQ(0, ki_listen(server_sock, 10)) 751 ASSERT_EQ(0, ki_listen(server_sock, 10))
752 << "listen failed with: " << strerror(errno); 752 << "listen failed with: " << strerror(errno);
753 753
754 // connect to listening socket 754 // connect to listening socket
755 IP4ToSockAddr(LOCAL_HOST, PORT1, &addr); 755 IP4ToSockAddr(LOCAL_HOST, PORT1, &addr);
756 ASSERT_EQ(0, ki_connect(client_sock, (sockaddr*)&addr, addrlen)) 756 ASSERT_EQ(0, ki_connect(client_sock, (sockaddr*)&addr, addrlen))
757 << "Failed with " << errno << ": " << strerror(errno); 757 << "Failed with " << errno << ": " << strerror(errno);
758 758
759 addrlen = sizeof(addr); 759 addrlen = sizeof(addr);
760 int new_sock = accept(server_sock, (sockaddr*)&addr, &addrlen); 760 int new_sock = ki_accept(server_sock, (sockaddr*)&addr, &addrlen);
761 ASSERT_NE(-1, new_sock); 761 ASSERT_NE(-1, new_sock);
762 762
763 // Close the new socket 763 // Close the new socket
764 ASSERT_EQ(0, ki_shutdown(client_sock, SHUT_RDWR)); 764 ASSERT_EQ(0, ki_shutdown(client_sock, SHUT_RDWR));
765 765
766 // Attempt to read/write after shutdown 766 // Attempt to read/write after shutdown
767 char buffer[10]; 767 char buffer[10];
768 ASSERT_EQ(0, ki_recv(client_sock, buffer, sizeof(buffer), 0)); 768 ASSERT_EQ(0, ki_recv(client_sock, buffer, sizeof(buffer), 0));
769 ASSERT_EQ(-1, ki_send(client_sock, buffer, sizeof(buffer), 0)); 769 ASSERT_EQ(-1, ki_send(client_sock, buffer, sizeof(buffer), 0));
770 ASSERT_EQ(errno, EPIPE); 770 ASSERT_EQ(errno, EPIPE);
(...skipping 11 matching lines...) Expand all
782 ASSERT_EQ(0, Bind(server_sock, LOCAL_HOST, PORT1)); 782 ASSERT_EQ(0, Bind(server_sock, LOCAL_HOST, PORT1));
783 ASSERT_EQ(0, ki_listen(server_sock, 10)) 783 ASSERT_EQ(0, ki_listen(server_sock, 10))
784 << "listen failed with: " << strerror(errno); 784 << "listen failed with: " << strerror(errno);
785 785
786 // connect to listening socket 786 // connect to listening socket
787 IP4ToSockAddr(LOCAL_HOST, PORT1, &addr); 787 IP4ToSockAddr(LOCAL_HOST, PORT1, &addr);
788 ASSERT_EQ(0, ki_connect(client_sock, (sockaddr*)&addr, addrlen)) 788 ASSERT_EQ(0, ki_connect(client_sock, (sockaddr*)&addr, addrlen))
789 << "Failed with " << errno << ": " << strerror(errno); 789 << "Failed with " << errno << ": " << strerror(errno);
790 790
791 addrlen = sizeof(addr); 791 addrlen = sizeof(addr);
792 int new_sock = accept(server_sock, (sockaddr*)&addr, &addrlen); 792 int new_sock = ki_accept(server_sock, (sockaddr*)&addr, &addrlen);
793 ASSERT_NE(-1, new_sock); 793 ASSERT_NE(-1, new_sock);
794 794
795 // send a fairly large amount of data and immediately close 795 // send a fairly large amount of data and immediately close
796 // the socket. 796 // the socket.
797 void* buffer = alloca(SEND_BYTES); 797 void* buffer = alloca(SEND_BYTES);
798 ASSERT_EQ(SEND_BYTES, ki_send(client_sock, buffer, SEND_BYTES, 0)); 798 ASSERT_EQ(SEND_BYTES, ki_send(client_sock, buffer, SEND_BYTES, 0));
799 ASSERT_EQ(0, ki_close(client_sock)); 799 ASSERT_EQ(0, ki_close(client_sock));
800 800
801 // avoid double close of sock2_ 801 // avoid double close of sock2_
802 sock2_ = -1; 802 sock2_ = -1;
803 803
804 // Attempt to recv() all the sent data. None should be lost. 804 // Attempt to recv() all the sent data. None should be lost.
805 int remainder = SEND_BYTES; 805 int remainder = SEND_BYTES;
806 while (remainder > 0) { 806 while (remainder > 0) {
807 int rtn = ki_recv(new_sock, buffer, remainder, 0); 807 int rtn = ki_recv(new_sock, buffer, remainder, 0);
808 ASSERT_GT(rtn, 0); 808 ASSERT_GT(rtn, 0);
809 remainder -= rtn; 809 remainder -= rtn;
810 } 810 }
811 811
812 ASSERT_EQ(0, ki_close(new_sock)); 812 ASSERT_EQ(0, ki_close(new_sock));
813 } 813 }
814 814
815 #endif // PROVIDES_SOCKET_API 815 #endif // PROVIDES_SOCKET_API
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698