pqlib suggestion - Mailing list pgsql-hackers

From Dann Corbit
Subject pqlib suggestion
Date
Msg-id D425483C2C5C9F49B5B7A41F89441547010006EB@postal.corporate.connx.com
Whole thread Raw
List pgsql-hackers

Clients using pqlib can get some boost by increasing tcp/ip window size.  It might be good to make it a settable parameter.

Anyway, maybe something like this:

 

/* ----------

 * connectNoDelay -

 * Sets the TCP_NODELAY socket option.

 * Returns 1 if successful, 0 if not.

 * ----------

 */

static int

connectNoDelay(PGconn *conn)

{

            int                                 on = 1;

 

#ifdef     TCP_NODELAY

            if (setsockopt(conn->sock, IPPROTO_TCP, TCP_NODELAY,

                                                   (char *) &on,

                                                   sizeof(on)) < 0)

            {

                        char                  sebuf[256];

 

                        printfPQExpBuffer(&conn->errorMessage,

                                    libpq_gettext("could not set socket to TCP no delay mode: %s\n"),

                                                                          SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));

                        return 0;

            }

#endif

 

            on = 65535;

            if (setsockopt(conn->sock, SOL_SOCKET, SO_RCVBUF,

                                                   (char *) &on,

                                                   sizeof(on)) < 0)

            {

                        printfPQExpBuffer(&conn->errorMessage,

                                                 "connectNoDelay() -- setsockopt SO_RCVBUF failed: errno=%d\n%s\n",

                                                                          errno, strerror(errno));

#ifdef WIN32

                        printf("Winsock error: %i\n", WSAGetLastError());

#endif

                        return 0;

            }

            on = 65535;

            if (setsockopt(conn->sock, SOL_SOCKET, SO_SNDBUF,

                                                   (char *) &on,

                                                   sizeof(on)) < 0)

            {

                        printfPQExpBuffer(&conn->errorMessage,

                                                 "connectNoDelay() -- setsockopt SO_SNDBUF failed: errno=%d\n%s\n",

                                                                          errno, strerror(errno));

#ifdef WIN32

                        printf("Winsock error: %i\n", WSAGetLastError());

#endif

                        return 0;

            }

            return 1;

}

 

pgsql-hackers by date:

Previous
From: "Andrew Hammond"
Date:
Subject: Re: Autovacuum launcher doesn't notice death of postmaster immediately
Next
From: Tom Lane
Date:
Subject: Re: Autovacuum launcher doesn't notice death of postmaster immediately