fix tcp half-closed connection unreliability in WSL

Signed-off-by: Seongbin Hong <vertex@g.cnu.ac.kr>
This commit is contained in:
Seongbin Hong 2023-08-31 14:33:44 +09:00 committed by Sebastiaan van Stijn
parent 5777c1bd53
commit 2e01d90774
No known key found for this signature in database
GPG Key ID: 76698F39D527CE8C
1 changed files with 7 additions and 5 deletions

View File

@ -48,6 +48,13 @@ func (h *hijackedIOStreamer) stream(ctx context.Context) error {
outputDone := h.beginOutputStream(restoreInput)
inputDone, detached := h.beginInputStream(restoreInput)
defer func() {
// Close the pipe after the outputStream had done.
if err := h.resp.CloseWrite(); err != nil {
logrus.Debugf("Couldn't send EOF: %s", err)
}
}()
select {
case err := <-outputDone:
return err
@ -167,11 +174,6 @@ func (h *hijackedIOStreamer) beginInputStream(restoreInput func()) (doneC <-chan
logrus.Debugf("Error sendStdin: %s", err)
}
}
if err := h.resp.CloseWrite(); err != nil {
logrus.Debugf("Couldn't send EOF: %s", err)
}
close(inputDone)
}()