1919typedef SOCKET socket_t ;
2020static const socket_t socket_invalid = INVALID_SOCKET ;
2121
22- static inline int
23- none_blocking_ (socket_t fd ) {
24- unsigned long on = 1 ;
25- return ioctlsocket (fd , FIONBIO , & on );
26- }
27-
2822static inline void
2923sockevent_initsocket () {
3024 WSADATA wsaData ;
@@ -43,11 +37,6 @@ static const socket_t socket_invalid = -1;
4337
4438#define closesocket close
4539
46- static inline int
47- none_blocking_ (socket_t fd ) {
48- return fcntl (fd , F_SETFL , fcntl (fd , F_GETFL , 0 ) | O_NONBLOCK );
49- }
50-
5140static inline void sockevent_initsocket () {}
5241
5342#endif
@@ -96,28 +85,27 @@ sockevent_open(struct sockevent *e) {
9685 if (e -> pipe [0 ] != socket_invalid )
9786 return 0 ;
9887#if defined(_WIN32 )
99- socket_t fd = socket (AF_INET6 , SOCK_STREAM , 0 );
88+ // ipv6 loopback may be disabled, so use ipv4
89+ socket_t fd = socket (AF_INET , SOCK_STREAM , 0 );
10090 if (fd == socket_invalid )
10191 goto _error ;
10292 e -> pipe [0 ] = socket_invalid ;
10393 e -> pipe [1 ] = socket_invalid ;
104- struct sockaddr_in6 loopback ;
94+ struct sockaddr_in loopback ;
10595 memset (& loopback , 0 , sizeof (loopback ));
106- loopback .sin6_family = AF_INET6 ;
107- loopback .sin6_addr = in6addr_loopback ;
108- loopback .sin6_port = 0 ;
96+ loopback .sin_family = AF_INET ;
97+ loopback .sin_addr . s_addr = htonl ( INADDR_LOOPBACK ) ;
98+ loopback .sin_port = htons ( 0 ) ;
10999 if (bind (fd , (const struct sockaddr * )& loopback , sizeof (loopback )) < 0 )
110100 goto _error ;
111101 socklen_t addrlen = sizeof (loopback );
112102 if (getsockname (fd , (struct sockaddr * )& loopback , & addrlen ) < 0 )
113103 goto _error ;
114104 if (listen (fd , 32 ) < 0 )
115105 goto _error ;
116- e -> pipe [1 ] = socket (AF_INET6 , SOCK_STREAM , 0 );
106+ e -> pipe [1 ] = socket (AF_INET , SOCK_STREAM , 0 );
117107 if (e -> pipe [1 ] < 0 )
118108 goto _error ;
119- if (none_blocking_ (e -> pipe [1 ]) < 0 )
120- goto _error ;
121109
122110 connect (e -> pipe [1 ], (const struct sockaddr * )& loopback , sizeof (loopback ));
123111
0 commit comments