| 14 | using namespace srt; |
| 15 | |
| 16 | TEST(SocketData, PeerName) |
| 17 | { |
| 18 | srt::TestInit srtinit; |
| 19 | |
| 20 | // Single-threaded one-app connect/accept action |
| 21 | |
| 22 | int csock = srt_create_socket(); |
| 23 | int lsock = srt_create_socket(); |
| 24 | |
| 25 | bool rd_nonblocking = false; |
| 26 | |
| 27 | srt_setsockflag(csock, SRTO_RCVSYN, &rd_nonblocking, sizeof (rd_nonblocking)); |
| 28 | //srt_setsockflag(lsock, SRTO_RCVSYN, &rd_nonblocking, sizeof (rd_nonblocking)); |
| 29 | |
| 30 | sockaddr_any addr = srt::CreateAddr("127.0.0.1", 5000, AF_INET); |
| 31 | |
| 32 | ASSERT_NE(srt_bind(lsock, addr.get(), addr.size()), -1); |
| 33 | |
| 34 | ASSERT_NE(srt_listen(lsock, 5), -1); |
| 35 | |
| 36 | ASSERT_NE(srt_connect(csock, addr.get(), addr.size()), -1); |
| 37 | |
| 38 | sockaddr_any rev_addr; |
| 39 | int accepted_sock = srt_accept(lsock, rev_addr.get(), &rev_addr.len); |
| 40 | |
| 41 | // Wait to make sure that the socket is connected. |
| 42 | |
| 43 | int retry = 10; |
| 44 | while (srt_getsockstate(csock) != SRTS_CONNECTED && retry) |
| 45 | { |
| 46 | this_thread::sleep_for(milliseconds(500)); |
| 47 | --retry; |
| 48 | } |
| 49 | |
| 50 | ASSERT_NE(retry, 0); |
| 51 | |
| 52 | // Now checkups |
| 53 | sockaddr_any peer_addr; |
| 54 | ASSERT_NE(srt_getpeername(csock, peer_addr.get(), &peer_addr.len), -1); |
| 55 | sockaddr_any my_addr; |
| 56 | ASSERT_NE(srt_getsockname(csock, my_addr.get(), &my_addr.len), -1); |
| 57 | |
| 58 | cout << "Connect address: " << addr.str() << endl; |
| 59 | cout << "Peer address: " << peer_addr.str() << endl; |
| 60 | cout << "Accept address: " << rev_addr.str() << endl; |
| 61 | cout << "Caller address: " << my_addr.str() << endl; |
| 62 | |
| 63 | EXPECT_EQ(peer_addr, addr); |
| 64 | EXPECT_EQ(my_addr, rev_addr); |
| 65 | |
| 66 | srt_close(csock); |
| 67 | srt_close(accepted_sock); |
| 68 | srt_close(lsock); |
| 69 | } |
nothing calls this directly
no test coverage detected