--- unix/tclUnixChan.c.orig	Tue Mar 30 13:53:08 2004
+++ unix/tclUnixChan.c	Tue Mar 30 14:08:20 2004
@@ -2098,11 +2098,10 @@
     int *errorCodePtr;			/* Where to store error code. */
 {
     TcpState *statePtr = (TcpState *) instanceData;
-    int bytesRead, state;
+    int bytesRead;
 
     *errorCodePtr = 0;
-    state = WaitForConnect(statePtr, errorCodePtr);
-    if (state != 0) {
+    if ((statePtr->flags & TCP_ASYNC_CONNECT) && (WaitForConnect(statePtr, errorCodePtr) != 0)) {
 	return -1;
     }
     bytesRead = recv(statePtr->fd, buf, (size_t) bufSize, 0);
@@ -2150,11 +2149,9 @@
 {
     TcpState *statePtr = (TcpState *) instanceData;
     int written;
-    int state;				/* Of waiting for connection. */
 
     *errorCodePtr = 0;
-    state = WaitForConnect(statePtr, errorCodePtr);
-    if (state != 0) {
+    if ((statePtr->flags & TCP_ASYNC_CONNECT) && (WaitForConnect(statePtr, errorCodePtr) != 0)) {
 	return -1;
     }
     written = send(statePtr->fd, buf, (size_t) toWrite, 0);
