From db7e46a76dc5ea8f15ed0ca67cc232b5ea38938d Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Fri, 25 Apr 2003 01:24:00 +0000 Subject: [PATCH] Use closesocket() for all socket/pipe closing, because Win32 requires it, and map that to close() on Unix. --- src/backend/libpq/hba.c | 4 ++-- src/backend/libpq/pqcomm.c | 8 ++++---- src/backend/postmaster/pgstat.c | 16 ++++++++-------- src/include/c.h | 9 ++++++++- src/interfaces/libpq/fe-connect.c | 26 ++++---------------------- src/interfaces/libpq/fe-exec.c | 6 +----- src/interfaces/libpq/fe-misc.c | 6 +----- src/interfaces/python/pgmodule.c | 10 +++++----- 8 files changed, 33 insertions(+), 52 deletions(-) diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c index f607167b6e..f722bb5271 100644 --- a/src/backend/libpq/hba.c +++ b/src/backend/libpq/hba.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/libpq/hba.c,v 1.99 2003/04/17 22:26:01 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/libpq/hba.c,v 1.100 2003/04/25 01:24:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -1212,7 +1212,7 @@ ident_inet(const struct in_addr remote_ip_addr, ident_user); } } - close(sock_fd); + closesocket(sock_fd); } } return ident_return; diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c index 2cf2a36b7b..bebff36537 100644 --- a/src/backend/libpq/pqcomm.c +++ b/src/backend/libpq/pqcomm.c @@ -30,7 +30,7 @@ * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.151 2003/04/22 00:08:06 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.152 2003/04/25 01:24:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -150,7 +150,7 @@ pq_close(void) if (MyProcPort != NULL) { secure_close(MyProcPort); - close(MyProcPort->sock); + closesocket(MyProcPort->sock); /* make sure any subsequent attempts to do I/O fail cleanly */ MyProcPort->sock = -1; } @@ -228,7 +228,7 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber, snprintf(portNumberStr, sizeof(portNumberStr), "%d", portNumber); service = portNumberStr; } - + ret = getaddrinfo2(hostName, service, &hint, &addrs); if (ret || addrs == NULL) { @@ -470,7 +470,7 @@ StreamConnection(int server_fd, Port *port) void StreamClose(int sock) { - close(sock); + closesocket(sock); } /* diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c index 86d47db9ef..c5835226e6 100644 --- a/src/backend/postmaster/pgstat.c +++ b/src/backend/postmaster/pgstat.c @@ -16,7 +16,7 @@ * * Copyright (c) 2001, PostgreSQL Global Development Group * - * $Header: /cvsroot/pgsql/src/backend/postmaster/pgstat.c,v 1.32 2003/03/20 03:34:56 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/postmaster/pgstat.c,v 1.33 2003/04/25 01:24:00 momjian Exp $ * ---------- */ #include "postgres.h" @@ -235,7 +235,7 @@ pgstat_init(void) startup_failed: if (pgStatSock >= 0) - close(pgStatSock); + closesocket(pgStatSock); pgStatSock = -1; /* Adjust GUC variables to suppress useless activity */ @@ -359,10 +359,10 @@ void pgstat_close_sockets(void) { if (pgStatPmPipe[0] >= 0) - close(pgStatPmPipe[0]); + closesocket(pgStatPmPipe[0]); pgStatPmPipe[0] = -1; if (pgStatPmPipe[1] >= 0) - close(pgStatPmPipe[1]); + closesocket(pgStatPmPipe[1]); pgStatPmPipe[1] = -1; } @@ -1120,7 +1120,7 @@ pgstat_main(void) * Close the writing end of the postmaster pipe, so we'll see it * closing when the postmaster terminates and can terminate as well. */ - close(pgStatPmPipe[1]); + closesocket(pgStatPmPipe[1]); pgStatPmPipe[1] = -1; /* @@ -1167,13 +1167,13 @@ pgstat_main(void) case 0: /* child becomes collector process */ - close(pgStatPipe[1]); - close(pgStatSock); + closesocket(pgStatPipe[1]); + closesocket(pgStatSock); break; default: /* parent becomes buffer process */ - close(pgStatPipe[0]); + closesocket(pgStatPipe[0]); pgstat_recvbuffer(); exit(0); } diff --git a/src/include/c.h b/src/include/c.h index 833312b9d6..8352ebac2a 100644 --- a/src/include/c.h +++ b/src/include/c.h @@ -12,7 +12,7 @@ * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: c.h,v 1.139 2003/04/22 02:18:09 momjian Exp $ + * $Id: c.h,v 1.140 2003/04/25 01:24:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -721,6 +721,13 @@ int pgunlink(const char *path); #define unlink(from, to) pgunlink(from, to) #endif +/* + * Win32 requires a special close for sockets and pipes, while on Unix + * close() does them all. + */ +#ifndef WIN32 +#define closesocket close +#endif /* These are for things that are one way on Unix and another on NT */ #define NULL_DEV "/dev/null" diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index 6ee2716ec0..a31f34d7a9 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.235 2003/04/24 21:16:44 tgl Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.236 2003/04/25 01:24:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -956,7 +956,7 @@ retry1: /* ignore connect() failure if we have more addrs to try */ if (addr_cur->ai_next != NULL) { - close(conn->sock); + closesocket(conn->sock); conn->sock = -1; continue; } @@ -1015,11 +1015,7 @@ retry2: if (conn->Pfdebug) fprintf(conn->Pfdebug, "Postmaster reports error, attempting fallback to pre-7.0.\n"); pqsecure_close(conn); -#ifdef WIN32 closesocket(conn->sock); -#else - close(conn->sock); -#endif conn->sock = -1; conn->allow_ssl_try = FALSE; return connectDBStart(conn); @@ -1056,11 +1052,7 @@ connect_errReturn: if (conn->sock >= 0) { pqsecure_close(conn); -#ifdef WIN32 closesocket(conn->sock); -#else - close(conn->sock); -#endif conn->sock = -1; } conn->status = CONNECTION_BAD; @@ -1928,11 +1920,7 @@ freePGconn(PGconn *conn) if (conn->sock >= 0) { pqsecure_close(conn); -#ifdef WIN32 closesocket(conn->sock); -#else - close(conn->sock); -#endif } if (conn->pghost) free(conn->pghost); @@ -2003,11 +1991,7 @@ closePGconn(PGconn *conn) if (conn->sock >= 0) { pqsecure_close(conn); -#ifdef WIN32 closesocket(conn->sock); -#else - close(conn->sock); -#endif } conn->sock = -1; conn->status = CONNECTION_BAD; /* Well, not really _bad_ - just @@ -2187,11 +2171,10 @@ retry4: } /* Sent it, done */ -#ifdef WIN32 closesocket(tmpsock); +#ifdef WIN32 WSASetLastError(save_errno); #else - close(tmpsock); errno = save_errno; #endif @@ -2203,11 +2186,10 @@ cancel_errReturn: conn->errorMessage.len = strlen(conn->errorMessage.data); if (tmpsock >= 0) { -#ifdef WIN32 closesocket(tmpsock); +#ifdef WIN32 WSASetLastError(save_errno); #else - close(tmpsock); errno = save_errno; #endif } diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c index 3fe0ddc492..8452098781 100644 --- a/src/interfaces/libpq/fe-exec.c +++ b/src/interfaces/libpq/fe-exec.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.131 2003/04/24 21:16:44 tgl Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.132 2003/04/25 01:24:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -1161,11 +1161,7 @@ handleSyncLoss(PGconn *conn, char id, int msgLength) id, msgLength); conn->status = CONNECTION_BAD; /* No more connection to backend */ pqsecure_close(conn); -#ifdef WIN32 closesocket(conn->sock); -#else - close(conn->sock); -#endif conn->sock = -1; } diff --git a/src/interfaces/libpq/fe-misc.c b/src/interfaces/libpq/fe-misc.c index 76de4a8708..042ef204ab 100644 --- a/src/interfaces/libpq/fe-misc.c +++ b/src/interfaces/libpq/fe-misc.c @@ -23,7 +23,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-misc.c,v 1.90 2003/04/22 00:08:07 tgl Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-misc.c,v 1.91 2003/04/25 01:24:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -681,11 +681,7 @@ definitelyFailed: "\tbefore or while processing the request.\n")); conn->status = CONNECTION_BAD; /* No more connection to backend */ pqsecure_close(conn); -#ifdef WIN32 closesocket(conn->sock); -#else - close(conn->sock); -#endif conn->sock = -1; return -1; diff --git a/src/interfaces/python/pgmodule.c b/src/interfaces/python/pgmodule.c index b659c99759..2e81e1c51a 100644 --- a/src/interfaces/python/pgmodule.c +++ b/src/interfaces/python/pgmodule.c @@ -2405,10 +2405,10 @@ pg_inserttable(pgobject * self, PyObject * args) n = j; /* never used before this assignment */ } if (n) - { + { /* allocate buffer */ if (!(buffer = malloc(MAX_BUFFER_SIZE))) - { + { PyErr_SetString(PyExc_MemoryError, "can't allocate insert buffer."); return NULL; @@ -2438,7 +2438,7 @@ pg_inserttable(pgobject * self, PyObject * args) getsubitem = PyTuple_GetItem; else getsubitem = PyList_GetItem; - + /* builds insert line */ bufpt=buffer; bufsiz = MAX_BUFFER_SIZE - 1; @@ -2527,7 +2527,7 @@ pg_inserttable(pgobject * self, PyObject * args) { *bufpt++ = '\t'; --bufsiz; } - + if (bufsiz <= 0) { free(buffer); @@ -2543,7 +2543,7 @@ pg_inserttable(pgobject * self, PyObject * args) /* sends data */ PQputline(self->cnx, buffer); } - + /* ends query */ PQputline(self->cnx, "\\.\n"); PQendcopy(self->cnx); -- 2.11.0