pqlib suggestion

Started by Dann Corbitover 18 years ago1 messages
#1Dann Corbit
DCorbit@connx.com

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;

}