summaryrefslogtreecommitdiff
path: root/src/microhttpd/mhd_itc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/microhttpd/mhd_itc.c')
-rw-r--r--src/microhttpd/mhd_itc.c81
1 files changed, 0 insertions, 81 deletions
diff --git a/src/microhttpd/mhd_itc.c b/src/microhttpd/mhd_itc.c
index 71e54a0d..553bfcf5 100644
--- a/src/microhttpd/mhd_itc.c
+++ b/src/microhttpd/mhd_itc.c
@@ -31,87 +31,6 @@
#endif /* HAVE_UNISTD_H */
#include <fcntl.h>
-#if defined(_WIN32) && !defined(__CYGWIN__)
-/**
- * Create pair of mutually connected TCP/IP sockets on loopback address
- * @param sockets_pair array to receive resulted sockets
- * @return zero on success, -1 otherwise
- */
-int MHD_W32_pair_of_sockets_(SOCKET sockets_pair[2])
-{
- int i;
- if (!sockets_pair)
- {
- errno = EINVAL;
- return -1;
- }
-
-#define PAIRMAXTRYIES 800
- for (i = 0; i < PAIRMAXTRYIES; i++)
- {
- struct sockaddr_in listen_addr;
- SOCKET listen_s;
- static const int c_addinlen = sizeof(struct sockaddr_in); /* help compiler to optimize */
- int addr_len = c_addinlen;
- int opt = 1;
-
- listen_s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- if (INVALID_SOCKET == listen_s)
- break; /* can't create even single socket */
-
- listen_addr.sin_family = AF_INET;
- listen_addr.sin_port = htons(0);
- listen_addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
- if (0 == bind(listen_s, (struct sockaddr*) &listen_addr, c_addinlen)
- && 0 == listen(listen_s, 1)
- && 0 == getsockname(listen_s, (struct sockaddr*) &listen_addr,
- &addr_len))
- {
- SOCKET client_s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- if (INVALID_SOCKET != client_s)
- {
- if (0 == ioctlsocket(client_s, FIONBIO, (u_long*) &opt)
- && (0 == connect(client_s, (struct sockaddr*) &listen_addr, c_addinlen)
- || WSAGetLastError() == WSAEWOULDBLOCK))
- {
- struct sockaddr_in accepted_from_addr;
- SOCKET server_s;
- addr_len = c_addinlen;
- server_s = accept(listen_s,
- (struct sockaddr*) &accepted_from_addr, &addr_len);
- if (INVALID_SOCKET != server_s)
- {
- struct sockaddr_in client_addr;
- addr_len = c_addinlen;
- opt = 0;
- if (0 == getsockname(client_s, (struct sockaddr*) &client_addr, &addr_len)
- && accepted_from_addr.sin_family == client_addr.sin_family
- && accepted_from_addr.sin_port == client_addr.sin_port
- && accepted_from_addr.sin_addr.s_addr == client_addr.sin_addr.s_addr
- && 0 == ioctlsocket(client_s, FIONBIO, (u_long*) &opt)
- && 0 == ioctlsocket(server_s, FIONBIO, (u_long*) &opt))
- {
- closesocket(listen_s);
- sockets_pair[0] = client_s;
- sockets_pair[1] = server_s;
- return 0;
- }
- closesocket(server_s);
- }
- }
- closesocket(client_s);
- }
- }
- closesocket(listen_s);
- }
-
- sockets_pair[0] = INVALID_SOCKET;
- sockets_pair[1] = INVALID_SOCKET;
- return -1;
-}
-
-#endif /* _WIN32 && ! __CYGWIN__ */
-
#ifndef MHD_DONT_USE_PIPES
#if !defined(_WIN32) || defined(__CYGWIN__)