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