diff options
author | Valentin Rothberg <rothberg@redhat.com> | 2022-01-18 16:27:33 +0100 |
---|---|---|
committer | Valentin Rothberg <rothberg@redhat.com> | 2022-01-18 16:32:38 +0100 |
commit | 7e30531f20b8c367aad81454abda8505a0d9962a (patch) | |
tree | dce3216d71c03f5291e17b56f5eb4a5c2427d742 /libpod | |
parent | 0bbf8fa14035371cdc5bb04f5db51da8a8f94d48 (diff) | |
download | podman-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.go | 6 |
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 |