]> granicus.if.org Git - postgresql/commitdiff
Remove calls to getprotobyname(), which we now know leaks memory on
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 21 May 2000 21:19:53 +0000 (21:19 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 21 May 2000 21:19:53 +0000 (21:19 +0000)
some platforms --- and I also see that it is documented as not thread-
safe on HPUX and possibly other platforms.  No good reason not to just
use IPPROTO_TCP constant from <netinet/in.h> instead.

src/backend/libpq/pqcomm.c
src/interfaces/libpq/fe-connect.c

index 7d2f7eb7d68a287b955023dff112017575bf9f26..aec4f34c7d20d9a333a506ec0e083b7e7dac0916 100644 (file)
@@ -29,7 +29,7 @@
  * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- *     $Id: pqcomm.c,v 1.90 2000/05/20 13:10:54 ishii Exp $
+ *     $Id: pqcomm.c,v 1.91 2000/05/21 21:19:53 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -360,19 +360,12 @@ StreamConnection(int server_fd, Port *port)
                return STATUS_ERROR;
        }
 
-       /* select TCP_NODELAY option if it's a TCP connection */
+       /* select NODELAY and KEEPALIVE options if it's a TCP connection */
        if (port->laddr.sa.sa_family == AF_INET)
        {
-               struct protoent *pe;
                int                     on = 1;
 
-               pe = getprotobyname("TCP");
-               if (pe == NULL)
-               {
-                       perror("postmaster: StreamConnection: getprotobyname");
-                       return STATUS_ERROR;
-               }
-               if (setsockopt(port->sock, pe->p_proto, TCP_NODELAY,
+               if (setsockopt(port->sock, IPPROTO_TCP, TCP_NODELAY,
                                           &on, sizeof(on)) < 0)
                {
                        perror("postmaster: StreamConnection: setsockopt(TCP_NODELAY)");
index c400a7ebb1604c9aa9915975188fc5479fd33510..400bab2f7d5990a174c26a940c949cbf5861a9f0 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.126 2000/04/12 17:17:14 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.127 2000/05/21 21:19:53 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -29,6 +29,7 @@
 #include <sys/socket.h>
 #include <unistd.h>
 #include <netdb.h>
+#include <netinet/in.h>
 #include <netinet/tcp.h>
 #include <arpa/inet.h>
 #endif
@@ -625,19 +626,9 @@ connectMakeNonblocking(PGconn *conn)
 static int
 connectNoDelay(PGconn *conn)
 {
-       struct protoent *pe;
        int                     on = 1;
 
-       pe = getprotobyname("TCP");
-       if (pe == NULL)
-       {
-               printfPQExpBuffer(&conn->errorMessage,
-                                                 "connectNoDelay() -- "
-                                                 "getprotobyname failed: errno=%d\n%s\n",
-                                                 errno, strerror(errno));
-               return 0;
-       }
-       if (setsockopt(conn->sock, pe->p_proto, TCP_NODELAY,
+       if (setsockopt(conn->sock, IPPROTO_TCP, TCP_NODELAY,
 #ifdef WIN32
                                   (char *)
 #endif