summaryrefslogtreecommitdiff
path: root/libpod
diff options
context:
space:
mode:
authorValentin Rothberg <rothberg@redhat.com>2022-01-18 16:27:33 +0100
committerValentin Rothberg <rothberg@redhat.com>2022-01-18 16:32:38 +0100
commit7e30531f20b8c367aad81454abda8505a0d9962a (patch)
treedce3216d71c03f5291e17b56f5eb4a5c2427d742 /libpod
parent0bbf8fa14035371cdc5bb04f5db51da8a8f94d48 (diff)
downloadpodman-7e30531f20b8c367aad81454abda8505a0d9962a.tar.gz
podman-7e30531f20b8c367aad81454abda8505a0d9962a.tar.bz2
podman-7e30531f20b8c367aad81454abda8505a0d9962a.zip
compat attach: fix write on closed channel
Waiting on an initialized sync.WaitGroup returns immediately. Hence, move the goroutine to wait and close *after* reading the logs. Fixes: #12904 Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
Diffstat (limited to 'libpod')
-rw-r--r--libpod/oci_conmon_linux.go6
1 files changed, 3 insertions, 3 deletions
diff --git a/libpod/oci_conmon_linux.go b/libpod/oci_conmon_linux.go
index 3fa43aed9..268a301fb 100644
--- a/libpod/oci_conmon_linux.go
+++ b/libpod/oci_conmon_linux.go
@@ -660,13 +660,13 @@ func (r *ConmonOCIRuntime) HTTPAttach(ctr *Container, req *http.Request, w http.
}
errChan <- err
}()
+ if err := ctr.ReadLog(context.Background(), logOpts, logChan); err != nil {
+ return err
+ }
go func() {
logOpts.WaitGroup.Wait()
close(logChan)
}()
- if err := ctr.ReadLog(context.Background(), logOpts, logChan); err != nil {
- return err
- }
logrus.Debugf("Done reading logs for container %s, %d bytes", ctr.ID(), logSize)
if err := <-errChan; err != nil {
return err