diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c new file mode 100644 index 31ade0b..f674372 *** a/src/backend/libpq/auth.c --- b/src/backend/libpq/auth.c *************** ident_inet(hbaPort *port) *** 1453,1459 **** sock_fd = socket(ident_serv->ai_family, ident_serv->ai_socktype, ident_serv->ai_protocol); ! if (sock_fd < 0) { ereport(LOG, (errcode_for_socket_access(), --- 1453,1459 ---- sock_fd = socket(ident_serv->ai_family, ident_serv->ai_socktype, ident_serv->ai_protocol); ! if (sock_fd == PGINVALID_SOCKET) { ereport(LOG, (errcode_for_socket_access(), *************** ident_inet(hbaPort *port) *** 1533,1539 **** ident_response))); ident_inet_done: ! if (sock_fd >= 0) closesocket(sock_fd); pg_freeaddrinfo_all(remote_addr.addr.ss_family, ident_serv); pg_freeaddrinfo_all(local_addr.addr.ss_family, la); --- 1533,1539 ---- ident_response))); ident_inet_done: ! if (sock_fd != PGINVALID_SOCKET) closesocket(sock_fd); pg_freeaddrinfo_all(remote_addr.addr.ss_family, ident_serv); pg_freeaddrinfo_all(local_addr.addr.ss_family, la); *************** CheckRADIUSAuth(Port *port) *** 2351,2357 **** packet->length = htons(packet->length); sock = socket(serveraddrs[0].ai_family, SOCK_DGRAM, 0); ! if (sock < 0) { ereport(LOG, (errmsg("could not create RADIUS socket: %m"))); --- 2351,2357 ---- packet->length = htons(packet->length); sock = socket(serveraddrs[0].ai_family, SOCK_DGRAM, 0); ! if (sock == PGINVALID_SOCKET) { ereport(LOG, (errmsg("could not create RADIUS socket: %m"))); diff --git a/src/backend/libpq/ip.c b/src/backend/libpq/ip.c new file mode 100644 index 7e8fc78..4db64fb *** a/src/backend/libpq/ip.c --- b/src/backend/libpq/ip.c *************** pg_foreach_ifaddr(PgIfAddrCallback callb *** 670,676 **** total; sock = socket(AF_INET, SOCK_DGRAM, 0); ! if (sock == -1) return -1; while (n_buffer < 1024 * 100) --- 670,676 ---- total; sock = socket(AF_INET, SOCK_DGRAM, 0); ! if (sock == PGINVALID_SOCKET) return -1; while (n_buffer < 1024 * 100) *************** pg_foreach_ifaddr(PgIfAddrCallback callb *** 711,717 **** #ifdef HAVE_IPV6 /* We'll need an IPv6 socket too for the SIOCGLIFNETMASK ioctls */ sock6 = socket(AF_INET6, SOCK_DGRAM, 0); ! if (sock6 == -1) { free(buffer); close(sock); --- 711,717 ---- #ifdef HAVE_IPV6 /* We'll need an IPv6 socket too for the SIOCGLIFNETMASK ioctls */ sock6 = socket(AF_INET6, SOCK_DGRAM, 0); ! if (sock6 == PGINVALID_SOCKET) { free(buffer); close(sock); *************** pg_foreach_ifaddr(PgIfAddrCallback callb *** 788,797 **** char *ptr, *buffer = NULL; size_t n_buffer = 1024; ! int sock; sock = socket(AF_INET, SOCK_DGRAM, 0); ! if (sock == -1) return -1; while (n_buffer < 1024 * 100) --- 788,797 ---- char *ptr, *buffer = NULL; size_t n_buffer = 1024; ! pgsocket sock; sock = socket(AF_INET, SOCK_DGRAM, 0); ! if (sock == PGINVALID_SOCKET) return -1; while (n_buffer < 1024 * 100) diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c new file mode 100644 index 1eae183..0179451 *** a/src/backend/libpq/pqcomm.c --- b/src/backend/libpq/pqcomm.c *************** StreamServerPort(int family, char *hostN *** 392,398 **** break; } ! if ((fd = socket(addr->ai_family, SOCK_STREAM, 0)) < 0) { ereport(LOG, (errcode_for_socket_access(), --- 392,398 ---- break; } ! if ((fd = socket(addr->ai_family, SOCK_STREAM, 0)) == PGINVALID_SOCKET) { ereport(LOG, (errcode_for_socket_access(), *************** StreamConnection(pgsocket server_fd, Por *** 632,638 **** port->raddr.salen = sizeof(port->raddr.addr); if ((port->sock = accept(server_fd, (struct sockaddr *) & port->raddr.addr, ! &port->raddr.salen)) < 0) { ereport(LOG, (errcode_for_socket_access(), --- 632,638 ---- port->raddr.salen = sizeof(port->raddr.addr); if ((port->sock = accept(server_fd, (struct sockaddr *) & port->raddr.addr, ! &port->raddr.salen)) == PGINVALID_SOCKET) { ereport(LOG, (errcode_for_socket_access(), diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c new file mode 100644 index e9072b7..cc844b9 *** a/src/backend/postmaster/postmaster.c --- b/src/backend/postmaster/postmaster.c *************** ConnCreate(int serverFd) *** 2169,2175 **** if (StreamConnection(serverFd, port) != STATUS_OK) { ! if (port->sock >= 0) StreamClose(port->sock); ConnFree(port); return NULL; --- 2169,2175 ---- if (StreamConnection(serverFd, port) != STATUS_OK) { ! if (port->sock != PGINVALID_SOCKET) StreamClose(port->sock); ConnFree(port); return NULL; diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c new file mode 100644 index d53c41f..ec68be6 *** a/src/interfaces/libpq/fe-connect.c --- b/src/interfaces/libpq/fe-connect.c *************** keep_going: /* We will come back to *** 1632,1639 **** conn->raddr.salen = addr_cur->ai_addrlen; /* Open a socket */ ! conn->sock = socket(addr_cur->ai_family, SOCK_STREAM, 0); ! if (conn->sock < 0) { /* * ignore socket() failure if we have more addresses --- 1632,1654 ---- conn->raddr.salen = addr_cur->ai_addrlen; /* Open a socket */ ! { ! /* ! * While we use 'pgsocket' as the socket type in the ! * backend, we use 'int' for libpq socket values. ! * This requires us to map PGINVALID_SOCKET to -1 ! * on Windows. ! * See http://msdn.microsoft.com/en-us/library/windows/desktop/ms740516%28v=vs.85%29.aspx ! */ ! pgsocket sock = socket(addr_cur->ai_family, SOCK_STREAM, 0); ! #ifdef WIN32 ! if (sock == PGINVALID_SOCKET) ! conn->sock = -1; ! else ! #endif ! conn->sock = sock; ! } ! if (conn->sock == -1) { /* * ignore socket() failure if we have more addresses *************** internal_cancel(SockAddr *raddr, int be_ *** 3136,3142 **** char *errbuf, int errbufsize) { int save_errno = SOCK_ERRNO; ! int tmpsock = -1; char sebuf[256]; int maxlen; struct --- 3151,3157 ---- char *errbuf, int errbufsize) { int save_errno = SOCK_ERRNO; ! pgsocket tmpsock = PGINVALID_SOCKET; char sebuf[256]; int maxlen; struct *************** internal_cancel(SockAddr *raddr, int be_ *** 3149,3155 **** * We need to open a temporary connection to the postmaster. Do this with * only kernel calls. */ ! if ((tmpsock = socket(raddr->addr.ss_family, SOCK_STREAM, 0)) < 0) { strlcpy(errbuf, "PQcancel() -- socket() failed: ", errbufsize); goto cancel_errReturn; --- 3164,3170 ---- * We need to open a temporary connection to the postmaster. Do this with * only kernel calls. */ ! if ((tmpsock = socket(raddr->addr.ss_family, SOCK_STREAM, 0)) == PGINVALID_SOCKET) { strlcpy(errbuf, "PQcancel() -- socket() failed: ", errbufsize); goto cancel_errReturn; *************** cancel_errReturn: *** 3220,3226 **** maxlen); strcat(errbuf, "\n"); } ! if (tmpsock >= 0) closesocket(tmpsock); SOCK_ERRNO_SET(save_errno); return FALSE; --- 3235,3241 ---- maxlen); strcat(errbuf, "\n"); } ! if (tmpsock != PGINVALID_SOCKET) closesocket(tmpsock); SOCK_ERRNO_SET(save_errno); return FALSE; diff --git a/src/interfaces/libpq/libpq-int.h b/src/interfaces/libpq/libpq-int.h new file mode 100644 index 22bbe4a..ee975d4 *** a/src/interfaces/libpq/libpq-int.h --- b/src/interfaces/libpq/libpq-int.h *************** struct pg_conn *** 364,369 **** --- 364,370 ---- PGnotify *notifyTail; /* newest unreported Notify msg */ /* Connection data */ + /* See PQconnectPoll() for how we use 'int' and not 'pgsocket'. */ int sock; /* Unix FD for socket, -1 if not connected */ SockAddr laddr; /* Local address */ SockAddr raddr; /* Remote address */