1 /* 2 * PROJECT: ws2_32.dll API tests 3 * LICENSE: GPLv2 or any later version 4 * FILE: apitests/ws2_32/helpers.c 5 * PURPOSE: Helper functions for the socket tests 6 * COPYRIGHT: Copyright 2008 Colin Finck <mail@colinfinck.de> 7 */ 8 9 #include "ws2_32.h" 10 11 int CreateSocket(SOCKET* psck) 12 { 13 /* Create the socket */ 14 *psck = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); 15 ok(*psck != INVALID_SOCKET, "*psck = %d\n", *psck); 16 17 if(*psck == INVALID_SOCKET) 18 { 19 printf("Winsock error code is %u\n", WSAGetLastError()); 20 WSACleanup(); 21 return 0; 22 } 23 24 return 1; 25 } 26 27 int ConnectToReactOSWebsite(SOCKET sck) 28 { 29 int iResult; 30 struct hostent* host; 31 struct sockaddr_in sa; 32 33 /* Connect to "www.reactos.org" */ 34 host = gethostbyname("test.winehq.org"); 35 36 sa.sin_family = AF_INET; 37 sa.sin_addr.s_addr = *(u_long*)host->h_addr_list[0]; 38 sa.sin_port = htons(80); 39 40 SCKTEST(connect(sck, (struct sockaddr *)&sa, sizeof(sa))); 41 42 return 1; 43 } 44 45 int GetRequestAndWait(SOCKET sck) 46 { 47 const char szGetRequest[] = "GET / HTTP/1.0\r\n\r\n"; 48 int iResult; 49 struct fd_set readable; 50 51 /* Send the GET request */ 52 SCKTEST(send(sck, szGetRequest, lstrlenA(szGetRequest), 0)); 53 ok(iResult == strlen(szGetRequest), "iResult = %d\n", iResult); 54 #if 0 /* breaks windows too */ 55 /* Shutdown the SEND connection */ 56 SCKTEST(shutdown(sck, SD_SEND)); 57 #endif 58 /* Wait until we're ready to read */ 59 FD_ZERO(&readable); 60 FD_SET(sck, &readable); 61 62 SCKTEST(select(0, &readable, NULL, NULL, NULL)); 63 64 return 1; 65 } 66