BUG #1467: fe_connect doesn't handle EINTR right
От | Florian Hars |
---|---|
Тема | BUG #1467: fe_connect doesn't handle EINTR right |
Дата | |
Msg-id | 20050207120613.4DDB0F0B01@svr2.postgresql.org обсуждение исходный текст |
Ответы |
Re: BUG #1467: fe_connect doesn't handle EINTR right
|
Список | pgsql-bugs |
The following bug has been logged online: Bug reference: 1467 Logged by: Florian Hars Email address: hars@bik-gmbh.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.
В списке pgsql-bugs по дате отправления: