diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2020-01-30 13:21:38 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2020-01-30 13:21:38 (GMT) |
commit | 64fdac4aec06a54d95bb8916c7a8e3cebf2cde20 (patch) | |
tree | 4facd544ce40b633d4c88f9300cbeae31fb012f9 /unix/tclUnixSock.c | |
parent | 667676a5510ccdd2fa569d14ebaccada0090393b (diff) | |
parent | ee66478056af217424f2052723fbd89ee0d0f933 (diff) | |
download | tcl-64fdac4aec06a54d95bb8916c7a8e3cebf2cde20.zip tcl-64fdac4aec06a54d95bb8916c7a8e3cebf2cde20.tar.gz tcl-64fdac4aec06a54d95bb8916c7a8e3cebf2cde20.tar.bz2 |
Merge 8.6
Diffstat (limited to 'unix/tclUnixSock.c')
-rw-r--r-- | unix/tclUnixSock.c | 23 |
1 files changed, 6 insertions, 17 deletions
diff --git a/unix/tclUnixSock.c b/unix/tclUnixSock.c index 62e4756..5f80435 100644 --- a/unix/tclUnixSock.c +++ b/unix/tclUnixSock.c @@ -687,30 +687,19 @@ TcpClose2Proc( { TcpState *statePtr = instanceData; int errorCode = 0; - int sd; /* * Shutdown the OS socket handle. */ - - switch(flags) { - case TCL_CLOSE_READ: - sd = SHUT_RD; - break; - case TCL_CLOSE_WRITE: - sd = SHUT_WR; - break; - default: - if (interp) { - Tcl_SetObjResult(interp, Tcl_NewStringObj( - "socket close2proc called bidirectionally", -1)); - } - return TCL_ERROR; + if ((flags & (TCL_CLOSE_READ|TCL_CLOSE_WRITE)) == 0) { + return TcpCloseProc(instanceData, interp); } - if (shutdown(statePtr->fds.fd,sd) < 0) { + if ((flags & TCL_CLOSE_READ) && (shutdown(statePtr->fds.fd, SHUT_RD) < 0)) { + errorCode = errno; + } + if ((flags & TCL_CLOSE_WRITE) && (shutdown(statePtr->fds.fd, SHUT_WR) < 0) && (errorCode != 0)) { errorCode = errno; } - return errorCode; } |