- priority: 5 --> 2
- status: open --> closed-fixed
OriginalBugID: 4388 Bug
Version: 8.3
SubmitDate: '2000-03-16'
LastModified: '2000-04-18'
Severity: MED
Status: Released
Submitter: techsupp
ChangedBy: hobbs
OS: HP-UX
FixedDate: '2000-04-18'
FixedInVersion: 8.3.1
ClosedDate: '2000-10-25'
Name:
Ulrich Schöbel
Extensions:
BLT, Oratcl
ReproducibleScript:
Creation of a channel with socket -async makes a non-blocking channel, though it is reported
to be blocking.
I reported this behaviour a few days ago, but the report appears to be lost in outer space.
Presumably we had another knot in our net. Sorry, if it's reported twice.
Patch:
*** tclUnixChan.c.orig Thu Mar 16 21:51:20 2000
--- tclUnixChan.c Fri Mar 17 01:32:06 2000
***************
*** 2041,2046 ****
--- 2041,2064 ----
asyncConnect = 1;
status = 0;
}
+ } else {
+ /* Here we are if the connect succeeds. In case of an asynchronous
+ * connect we have to reset the channel to blocking mode.
+ * This appears to happen not very often, but e.g. on a
+ * HP 9000/800 under HP-UX B.11.00 we enter this stage.
+ */
+ if (async) {
+ #ifndef USE_FIONBIO
+ origState = fcntl(sock, F_GETFL);
+ curState = origState & ~(O_NONBLOCK);
+ status = fcntl(sock, F_SETFL, curState);
+ #endif
+
+ #ifdef USE_FIONBIO
+ curState = 0;
+ status = ioctl(sock, FIONBIO, &curState);
+ #endif
+ }
}
}
}
PatchFiles:
tclUnixChan.c
patched as noted for 8.3.1.
-- 04/18/2000 hobbs