spiegel_podman/pkg
Matthew Heon 2ea9dac5e1 Send HTTP Hijack headers after successful attach
Our previous flow was to perform a hijack before passing a
connection into Libpod, and then Libpod would attach to the
container's attach socket and begin forwarding traffic.

A problem emerges: we write the attach header as soon as the
attach complete. As soon as we write the header, the client
assumes that all is ready, and sends a Start request. This Start
may be processed *before* we successfully finish attaching,
causing us to lose output.

The solution is to handle hijacking inside Libpod. Unfortunately,
this requires a downright extensive refactor of the Attach and
HTTP Exec StartAndAttach code. I think the result is an
improvement in some places (a lot more errors will be handled
with a proper HTTP error code, before the hijack occurs) but
other parts, like the relocation of printing container logs, are
just *bad*. Still, we need this fixed now to get CI back into
good shape...

Fixes #7195

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2020-08-27 12:50:22 -04:00
..
annotations Add ContainerManager annotation to created containers 2019-09-10 09:37:14 +02:00
api Send HTTP Hijack headers after successful attach 2020-08-27 12:50:22 -04:00
auth compat handlers: add X-Registry-Auth header support 2020-05-29 15:39:37 +02:00
autoupdate Switch all references to github.com/containers/libpod -> podman 2020-07-28 08:23:45 -04:00
bindings Send HTTP Hijack headers after successful attach 2020-08-27 12:50:22 -04:00
cgroups Switch all references to github.com/containers/libpod -> podman 2020-07-28 08:23:45 -04:00
channelwriter account for varlink calls that dont use more 2019-07-10 08:50:05 -05:00
checkpoint Switch all references to github.com/containers/libpod -> podman 2020-07-28 08:23:45 -04:00
criu Add helper function to read out CRIU version 2018-10-23 12:52:03 +02:00
ctime Re-add int64 casts for ctime 2019-07-23 15:43:40 -04:00
domain abi: fix detection for systemd 2020-08-18 18:05:38 +02:00
env Ensure DefaultEnvVariables is used in Specgen 2020-08-18 15:17:46 -04:00
errorhandling image removal: refactor part 2 2020-05-04 16:01:45 +02:00
hooks Switch all references to github.com/containers/libpod -> podman 2020-07-28 08:23:45 -04:00
inspect Switch all references to github.com/containers/libpod -> podman 2020-07-28 08:23:45 -04:00
kubeutils Remove dependency on kubernetes 2018-03-27 21:55:33 +00:00
lookup Turn on More linters 2020-06-15 07:05:56 -04:00
namespaces [CI:DOCS] BZ1860126 - Fix userns defaults in run man page 2020-08-07 15:42:13 -04:00
netns Switch all references to github.com/containers/libpod -> podman 2020-07-28 08:23:45 -04:00
network podman support for IPv6 networks 2020-08-15 12:11:01 +02:00
parallel Switch all references to github.com/containers/libpod -> podman 2020-07-28 08:23:45 -04:00
ps Unconditionally retrieve pod names via API 2020-08-10 10:15:51 -04:00
registrar Switch all references to github.com/containers/libpod -> podman 2020-07-28 08:23:45 -04:00
registries Switch all references to github.com/containers/libpod -> podman 2020-07-28 08:23:45 -04:00
resolvconf Switch all references to github.com/containers/libpod -> podman 2020-07-28 08:23:45 -04:00
rootless Wait for reexec to finish when fileOutput is nil 2020-08-15 16:34:58 +01:00
rootlessport rootlessport: use two different channels 2020-04-29 12:35:23 +02:00
seccomp apiv2 container create using specgen 2020-02-19 15:20:15 -06:00
selinux Fix SELinux functions names to not be repetitive 2020-04-23 15:57:34 -04:00
signal Turn on More linters 2020-06-15 07:05:56 -04:00
spec Ensure DefaultEnvVariables is used in Specgen 2020-08-18 15:17:46 -04:00
specgen fix podman create/run UTS NS docs 2020-08-18 18:00:49 +02:00
systemd generate systemd: quote arguments with whitespace 2020-08-19 08:32:51 +02:00
terminal Set console mode for windows 2020-06-29 09:17:55 -05:00
timetype make lint: enable gocritic 2020-01-13 14:27:02 +01:00
tracing make lint: include pkg/tracing 2020-01-14 09:54:48 +01:00
trust fix bug podman sign storage path 2020-08-04 15:10:47 -04:00
util Switch all references to github.com/containers/libpod -> podman 2020-07-28 08:23:45 -04:00
varlink Switch all references to github.com/containers/libpod -> podman 2020-07-28 08:23:45 -04:00
varlinkapi Use set for systemd commands 2020-08-11 13:29:17 +02:00