/ go-winio Public
HvsockConn shutdown bugfix, added .IsClosed() functions #231
Add this suggestion to a batch that can be applied as a single commit. This suggestion is invalid because no changes were made to the code. Suggestions cannot be applied while the pull request is closed. Suggestions cannot be applied while viewing a subset of changes. Only one suggestion per line can be applied in a batch. Add this suggestion to a batch that can be applied as a single commit. Applying suggestions on deleted lines is not supported. You must change the existing code in this line in order to create a valid suggestion. Outdated suggestions cannot be applied. This suggestion has been applied or marked resolved. Suggestions cannot be applied from pending reviews. Suggestions cannot be applied on multi-line comments. Suggestions cannot be applied while the pull request is queued to merge.
The PR fixes bugs with
Writewhere shutdown is attempted on closed sockets, which returns a cryptic error:
close hvsock [...]: shutdown: An operation was attempted on something that is not a socket, and where the
(*HvsockConn).shutdownfunction was not respecting whether to close a socket for reading or writing, and only shutting down the pipe for reading.
(*Process).CloseStdinruns into two issues:
syscall.Shutdownon a null socket handle. This PR preemptively returns
ErrFileClosedto prevent that, and allow upstream callers to check for the situation where the socket is already closed.
(*HvsockConn).CloseWritedoes not actually close the connection for writing, since
(*HvsockConn).shutdownignores its parameter and closes the socket only for reading. This prevents hcsshim from using
(*Process).CloseStdin) to stop the copy operation from upstream pipes into the processes
This PR fixes those issues.
Additionally, two functions have been added:
(*HvsockConn).CloseReadWriteto expose shutting down both ends of the socket.
(*HvsockConn).IsClosedand to check if the socket/pipe has already been closed, since the structs already track internally if they have been closed or not.
Signed-off-by: Hamza El-Saawy firstname.lastname@example.org