--- 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;
}
}