diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2020-01-30 13:52:58 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2020-01-30 13:52:58 (GMT) |
commit | f58b90fb022b744619f4a7af445bac8a561bde7a (patch) | |
tree | 38cb1824e11c8346597a8004c9edf05c4805e4c4 /unix | |
parent | ee66478056af217424f2052723fbd89ee0d0f933 (diff) | |
download | tcl-f58b90fb022b744619f4a7af445bac8a561bde7a.zip tcl-f58b90fb022b744619f4a7af445bac8a561bde7a.tar.gz tcl-f58b90fb022b744619f4a7af445bac8a561bde7a.tar.bz2 |
Reset WSAGetLastError()/errno always, even when this error is not reported due to the earlier error.
Diffstat (limited to 'unix')
-rw-r--r-- | unix/tclUnixSock.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/unix/tclUnixSock.c b/unix/tclUnixSock.c index ba36d7b..a00559a 100644 --- a/unix/tclUnixSock.c +++ b/unix/tclUnixSock.c @@ -658,7 +658,8 @@ TcpClose2Proc( int flags) /* Flags that indicate which side to close. */ { TcpState *statePtr = instanceData; - int errorCode = 0; + int readError = 0; + int writeError = 0; /* * Shutdown the OS socket handle. @@ -667,12 +668,12 @@ TcpClose2Proc( return TcpCloseProc(instanceData, interp); } if ((flags & TCL_CLOSE_READ) && (shutdown(statePtr->fds.fd, SHUT_RD) < 0)) { - errorCode = errno; + readError = errno; } - if ((flags & TCL_CLOSE_WRITE) && (shutdown(statePtr->fds.fd, SHUT_WR) < 0) && (errorCode != 0)) { - errorCode = errno; + if ((flags & TCL_CLOSE_WRITE) && (shutdown(statePtr->fds.fd, SHUT_WR) < 0)) { + writeError = errno; } - return errorCode; + return (readError != 0) ? readError : writeError; } /* |