BUG #1467: fe_connect doesn't handle EINTR right

From: "Florian Hars" <hars(at)bik-gmbh(dot)de>
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #1467: fe_connect doesn't handle EINTR right
Date: 2005-02-07 12:06:13
Message-ID: 20050207120613.4DDB0F0B01@svr2.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-hackers


The following bug has been logged online:

Bug reference: 1467
Logged by: Florian Hars
Email address: hars(at)bik-gmbh(dot)de
PostgreSQL version: 8.0.1
Operating system: All
Description: fe_connect doesn't handle EINTR right
Details:

The file pgsql/src/interfaces/libpq/fe-connect.c contains the code fragment

retry_connect:
if (connect(conn->sock, addr_cur->ai_addr,
addr_cur->ai_addrlen) < 0)
{
if (SOCK_ERRNO == EINTR)
/* Interrupted system call - just try again */
goto retry_connect;
}

This is not in accordance with a strict legalistic reading of the POSIX
spec, according to which connect is not restartable so that you have to use
select or poll after connect returned with EINTR.

See
http://www.eleves.ens.fr:8080/home/madore/computers/connect-intr.html
for the ugly details, your code should work on Linux, but not on Solaris or
(Free|Open)BSD.

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Tobias Brox 2005-02-07 14:34:57 BUG #1468: psql_dump is not backward compatible
Previous Message Kris Jurka 2005-02-07 09:30:20 Re: timezone offsets and documentation

Browse pgsql-hackers by date

  From Date Subject
Next Message Kenneth Marshall 2005-02-07 14:14:28 Re: Thinking about breaking up the BufMgrLock
Previous Message Simon Riggs 2005-02-07 08:28:09 Re: Inline MemoryContextSwitchTo?