<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <filename>configure</filename>
    </modified>
    <modified>
      <diff>@@ -25,19 +25,39 @@ static int waitForConnect(int s)
 {
 	int selected=0;
 	fd_set rset;
+	fd_set wset;
+	fd_set eset;
 	struct timeval tv;
+	int success=0;
 
 	FD_ZERO(&amp;rset);
+	FD_ZERO(&amp;wset);
+	FD_ZERO(&amp;eset);
 	FD_SET(s, &amp;rset);
+	FD_SET(s, &amp;wset);
+	FD_SET(s, &amp;eset);
 
 	/* Wait up to five seconds */
 	tv.tv_sec=5;
 	tv.tv_usec=0;
 
-	selected=select(s+1, &amp;rset, NULL, NULL, &amp;tv);
+	selected=select(s+1, &amp;rset, &amp;wset, &amp;eset, &amp;tv);
+	if(selected &gt; 0) {
+		if(FD_ISSET(s, &amp;rset)) {
+			char buf[1];
+			/* Make sure we can read a byte */
+			if(read(s, &amp;buf, 1) == 1) {
+				success=1;
+			}
+		} else if(FD_ISSET(s, &amp;wset)) {
+			success=1;
+		} else {
+			success=0;
+		}
+	}
 	
 	/* True if there was at least one thing that hinted as being available */
-	return(selected == 1);
+	return(success == 1);
 }
 
 int</diff>
      <filename>sockets.c</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>64178ceb2ff500840b29da410bc9db3a8ccadb0a</id>
    </parent>
  </parents>
  <author>
    <name>Dustin Sallings</name>
    <email>dustin@spy.net</email>
  </author>
  <url>http://github.com/dustin/waitforsocket/commit/d2ac26c3da65dccc300c8860a5dd8ff862f6927c</url>
  <id>d2ac26c3da65dccc300c8860a5dd8ff862f6927c</id>
  <committed-date>2003-12-12T06:49:24-08:00</committed-date>
  <authored-date>2003-12-12T06:49:24-08:00</authored-date>
  <message>Fixed waitforsocket (based on ocaml port)


imported from: dustin@spy.net--projects/snippets--c--1.0--patch-427</message>
  <tree>aaedd7da4fade51d864abeb02ac4eda6dcc2f94f</tree>
  <committer>
    <name>Dustin Sallings</name>
    <email>dustin@spy.net</email>
  </committer>
</commit>
