I decided to change the interaction between setblocking() and
settimeout().   Already, settimeout() canceled non-blocking mode; now,
setblocking() also cancels the timeout.  This is easier to document.

(XXX should settimeout(0) be an alias for setblocking(0)?  They seem
to have roughly the same effect.  Also, I'm not sure that the code in
connect() and accept() is correct in all cases.  We'll sort this out
soon enough.)
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index 65187c5..49dd332 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -1086,11 +1086,8 @@
 		return NULL;
 
 	s->sock_blocking = block;
-
-	/* If we're not using timeouts, actually set the blocking to give
-	   old python behavior. */
-	if (s->sock_timeout < 0.0)
-		internal_setblocking(s, block);
+	s->sock_timeout = -1.0; /* Always clear the timeout */
+	internal_setblocking(s, block);
 
 	Py_INCREF(Py_None);
 	return Py_None;