* unfix.org.
*/
+#include <winsock2.h> /* need to put this first, for winelib builds */
+
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define DEFINE_PLUG_METHOD_MACROS
+#define NEED_DECLARATION_OF_SELECT /* in order to initialise it */
+
#include "putty.h"
#include "network.h"
#include "tree234.h"
#include <ws2tcpip.h>
#ifndef NO_IPV6
+#ifdef __clang__
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wmissing-braces"
+#endif
const struct in6_addr in6addr_any = IN6ADDR_ANY_INIT;
const struct in6_addr in6addr_loopback = IN6ADDR_LOOPBACK_INIT;
+#ifdef __clang__
+#pragma clang diagnostic pop
+#endif
#endif
#define ipv4_is_loopback(addr) \
return TRUE;
}
+/* Actually define this function pointer, which won't have been
+ * defined alongside all the others by PUTTY_DO_GLOBALS because of the
+ * annoying winelib header-ordering issue. (See comment in winstuff.h.) */
+DECL_WINDOWS_FUNCTION(/* empty */, int, select,
+ (int, fd_set FAR *, fd_set FAR *,
+ fd_set FAR *, const struct timeval FAR *));
+
void sk_init(void)
{
#ifndef NO_IPV6
SOCKET s = p_socket(AF_INET, SOCK_DGRAM, 0);
DWORD retbytes;
+ SetHandleInformation((HANDLE)s, HANDLE_FLAG_INHERIT, 0);
+
if (p_WSAIoctl &&
p_WSAIoctl(s, SIO_GET_INTERFACE_LIST, NULL, 0,
local_interfaces, sizeof(local_interfaces),
goto ret;
}
+ SetHandleInformation((HANDLE)s, HANDLE_FLAG_INHERIT, 0);
+
if (sock->oobinline) {
BOOL b = TRUE;
p_setsockopt(s, SOL_SOCKET, SO_OOBINLINE, (void *) &b, sizeof(b));
return (Socket) ret;
}
+ SetHandleInformation((HANDLE)s, HANDLE_FLAG_INHERIT, 0);
+
ret->oobinline = 0;
p_setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (const char *)&on, sizeof(on));