Skip to content

Commit 4a8c716

Browse files
Proper type for variables and function arguments
The actual optval argument type is DWORD (boolean) for the SOL_SOCKET socket option SO_REUSEADDR: https://docs.microsoft.com/windows/win32/winsock/sol-socket-socket-options The type of the optlen argument of setsockopt() is "int": https://docs.microsoft.com/windows/win32/api/winsock/nf-winsock-setsockopt#syntax The type of the namelen argument of getsockname() is "int *": https://docs.microsoft.com/windows/win32/api/winsock/nf-winsock-getsockname#syntax After these changes, socklen_t is not used anymore. Therefore we can revert from <w2stcpip.h> to <winsock2.h>.
1 parent 54c8776 commit 4a8c716

File tree

3 files changed

+6
-7
lines changed

3 files changed

+6
-7
lines changed

dummy_headers/windows.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,12 @@ struct sockaddr_in {
1616
unsigned short sin_port;
1717
};
1818
struct sockaddr { int dummy; };
19-
typedef unsigned socklen_t;
2019
#define SOL_SOCKET 66
2120
#define SO_REUSEADDR 77
2221
#define INADDR_LOOPBACK 88
2322
extern int setsockopt(SOCKET, int, int, char*, unsigned);
2423
extern int bind(SOCKET, struct sockaddr*, unsigned);
25-
extern int getsockname(SOCKET, struct sockaddr*, socklen_t*);
24+
extern int getsockname(SOCKET, struct sockaddr*, int*);
2625
extern int listen(SOCKET, int);
2726
extern SOCKET WSASocket(int, int, int, void*, int, int);
2827
extern int connect(SOCKET, struct sockaddr*, unsigned);
File renamed without changes.

socketpair.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
5151
#include <string.h>
5252

5353
#ifdef WIN32
54-
# include <ws2tcpip.h> /* socklen_t, et al (MSVC20xx) */
54+
# include <winsock2.h>
5555
# include <windows.h>
5656
# include <io.h>
5757
#else
@@ -77,10 +77,10 @@ int dumb_socketpair(SOCKET socks[2], int make_overlapped)
7777
struct sockaddr addr;
7878
} a;
7979
SOCKET listener;
80-
int e;
81-
socklen_t addrlen = sizeof(a.inaddr);
80+
int addrlen = (int) sizeof(a.inaddr);
8281
DWORD flags = (make_overlapped ? WSA_FLAG_OVERLAPPED : 0);
83-
int reuse = 1;
82+
DWORD reuse = 1;
83+
int e;
8484

8585
if (socks == 0) {
8686
WSASetLastError(WSAEINVAL);
@@ -99,7 +99,7 @@ int dumb_socketpair(SOCKET socks[2], int make_overlapped)
9999

100100
for (;;) {
101101
if (setsockopt(listener, SOL_SOCKET, SO_REUSEADDR,
102-
(char*) &reuse, (socklen_t) sizeof(reuse)) == SOCKET_ERROR)
102+
(const char*) &reuse, (int) sizeof(reuse)) == SOCKET_ERROR)
103103
break;
104104
if (bind(listener, &a.addr, sizeof(a.inaddr)) == SOCKET_ERROR)
105105
break;

0 commit comments

Comments
 (0)