int SpiceController::Connect(const int nRetries) { int rc = -1; int sleep_time = 0; // try to connect for specified count for (int i = 0; rc != 0 && i < nRetries; ++i) { rc = Connect(); g_usleep(sleep_time * G_USEC_PER_SEC); ++sleep_time; } if (rc != 0) { g_warning("error connecting"); g_assert(m_pipe == NULL); } if (!CheckPipe()) { g_warning("Pipe validation failure"); g_warn_if_fail(m_pipe == NULL); } if (m_pipe == NULL) { g_warning("failed to create pipe"); #ifdef XP_WIN rc = MAKE_HRESULT(1, FACILITY_CREATE_RED_PIPE, GetLastError()); #endif this->StopClient(); } return rc; }
int main(int argc, char **argv) { int server_sock, session_sock; if (argc > 1) TestInit(0); server_sock = OpenUDPSocket( 1701 ); session_sock = OpenPPPoL2TPSocket(); /* Try sending packets first to see if that helps */ // SendRawPacket( server_sock, 1701, control_packet, sizeof( control_packet ) ); // SendRawPacket( server_sock, 1701, data_packet, sizeof( data_packet ) ); fcntl( server_sock, F_SETFL, O_NONBLOCK ); fcntl( session_sock, F_SETFL, O_NONBLOCK ); CheckPipe( server_sock ); ConnectSock( session_sock, server_sock, 1701, 1, 2, 3, 4 ); system( "./subtest-proc" ); SendRawPacket( server_sock, 1701, control_packet, sizeof( control_packet ) ); SendRawPacket( server_sock, 1701, data_packet, sizeof( data_packet ) ); system( "./subtest-proc" ); CheckPipe( server_sock ); CheckPipe( session_sock ); system( "./subtest-proc" ); /* Close session socket first, because other way round breaks right now */ TestPrintf( "Closing session socket\n" ); close( session_sock ); TestPrintf( "Closing server socket\n" ); close( server_sock ); return 0; }
int main(int argc, char **argv) { int server_sock1, session_sock1; int server_sock2, session_sock2; if (argc > 1) TestInit(0); server_sock1 = OpenUDPSocket( 1701 ); session_sock1 = OpenPPPoL2TPSocket(); server_sock2 = OpenUDPSocket( 1702 ); session_sock2 = OpenPPPoL2TPSocket(); #if 0 /* Try sending packets first to see if that helps */ SendTestPacket( server_sock1, 1702 ); SendTestPacket( server_sock2, 1701 ); #endif fcntl( server_sock1, F_SETFL, O_NONBLOCK ); fcntl( session_sock1, F_SETFL, O_NONBLOCK ); fcntl( server_sock2, F_SETFL, O_NONBLOCK ); fcntl( session_sock2, F_SETFL, O_NONBLOCK ); fcntl( server_sock1, F_SETFD, FD_CLOEXEC ); fcntl( session_sock1, F_SETFD, FD_CLOEXEC ); fcntl( server_sock2, F_SETFD, FD_CLOEXEC ); fcntl( session_sock2, F_SETFD, FD_CLOEXEC ); CheckPipe( server_sock1 ); CheckPipe( server_sock2 ); ConnectSock( session_sock1, server_sock1, 1702, 1, 2, 3, 4 ); ConnectSock( session_sock2, server_sock2, 1701, 3, 4, 1, 2 ); system( "./subtest-proc" ); SendTestPacket( session_sock1, 1702 ); SendTestPacket( session_sock2, 1701 ); system( "./subtest-proc" ); CheckPipe( server_sock1 ); CheckPipe( session_sock1 ); CheckPipe( server_sock2 ); CheckPipe( session_sock2 ); if (argc == 0) { StartLoopingFunction( session_sock1, 0, 0 ); StartLoopingFunction( session_sock2, 0, 0 ); StartLoopingFunction( server_sock1, 1702, 0 ); StartLoopingFunction( server_sock2, 1701, 0 ); } else { StartLoopingFunction( session_sock1, 0, 1000 ); StartLoopingFunction( session_sock2, 0, 2000 ); StartLoopingFunction( server_sock1, 1702, 3000 ); StartLoopingFunction( server_sock2, 1701, 4000 ); } if (argc == 0) { char buf[16]; fprintf( stdout, "Press any key to continue\n" ); fgets( buf, 10, stdin ); } else { fprintf(stdout, "Waiting 60 seconds...\n"); sleep(60); } system( "./subtest-proc" ); TestPrintf( "Closing server2 socket\n" ); close( server_sock2 ); TestPrintf( "Closing session2 socket\n" ); close( session_sock2 ); TestPrintf( "Closing session1 socket\n" ); close( session_sock1 ); TestPrintf( "Closing server1 socket\n" ); close( server_sock1 ); return 0; }