--- fe-misc.c.orig Fri Mar 30 15:04:13 2001 +++ fe-misc.c Fri Mar 30 15:26:05 2001 @@ -718,6 +718,7 @@ pqWait(int forRead, int forWrite, PGconn { fd_set input_mask; fd_set output_mask; + fd_set except_mask; if (conn->sock < 0) { @@ -731,11 +732,15 @@ pqWait(int forRead, int forWrite, PGconn retry: FD_ZERO(&input_mask); FD_ZERO(&output_mask); + FD_ZERO(&except_mask); if (forRead) FD_SET(conn->sock, &input_mask); if (forWrite) + { FD_SET(conn->sock, &output_mask); - if (select(conn->sock + 1, &input_mask, &output_mask, (fd_set *) NULL, + FD_SET(conn->sock, &except_mask); + } + if (select(conn->sock + 1, &input_mask, &output_mask, &except_mask, (struct timeval *) NULL) < 0) { if (errno == EINTR) @@ -743,6 +748,13 @@ retry: printfPQExpBuffer(&conn->errorMessage, "pqWait() -- select() failed: errno=%d\n%s\n", errno, strerror(errno)); + return EOF; + } + + if (FD_ISSET(conn->sock, &except_mask)) + { + printfPQExpBuffer(&conn->errorMessage, + "pqWait() -- select() exception occurred\n"); return EOF; } }