Seems this is applied.
> > > What about adding KEEPALIVE option to the socket?
> >
> > Of course, since whatever OS he's using on the client side is too broken
> > to notice that the socket is orphaned and close it, it might be so
> > broken as to respond to the keepalive pings :-(. Still, it'd be an easy
> > thing to try...
> >
> > Even though the stated case sounds more like an OS bug than anything
> > else, setting KEEPALIVE on our TCP connections is probably still a good
> > idea. If the client machine were to crash completely then it wouldn't
> > be reasonable to expect it to close the connection, and we'd want to
> > have some method of ensuring that the connected backend shuts down
> > eventually. KEEPALIVE seems sufficiently low-overhead (and easy to
> > implement) to be the right answer for this scenario.
>
> Ok. Here are patches against 7.0. BTW, does this break some platforms
> such as Windows NT or QUNX4?
>
> *** postgresql-7.0/src/backend/libpq/pqcomm.c.orig Tue May 16 18:06:42 2000
> --- postgresql-7.0/src/backend/libpq/pqcomm.c Wed May 17 08:23:09 2000
> ***************
> *** 375,381 ****
> if (setsockopt(port->sock, pe->p_proto, TCP_NODELAY,
> &on, sizeof(on)) < 0)
> {
> ! perror("postmaster: StreamConnection: setsockopt");
> return STATUS_ERROR;
> }
> }
> --- 375,387 ----
> if (setsockopt(port->sock, pe->p_proto, TCP_NODELAY,
> &on, sizeof(on)) < 0)
> {
> ! perror("postmaster: StreamConnection: setsockopt(TCP_NODELAY)");
> ! return STATUS_ERROR;
> ! }
> ! if (setsockopt(port->sock, SOL_SOCKET, SO_KEEPALIVE,
> ! &on, sizeof(on)) < 0)
> ! {
> ! perror("postmaster: StreamConnection: setsockopt(SO_KEEPALIVE)");
> return STATUS_ERROR;
> }
> }
>
-- Bruce Momjian | http://www.op.net/~candle pgman@candle.pha.pa.us | (610)
853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill,
Pennsylvania19026