mirror of
https://github.com/containerd/containerd.git
synced 2026-06-24 08:48:48 +00:00
awaitPipeReady retried only when DialPipe returned os.IsNotExist or context.DeadlineExceeded, but winio.DialPipe converts the per-attempt deadline into winio.ErrTimeout before returning. A pipe in state 1 (ListenPipe called, Accept not yet called) causes DialPipe to block for the full per-attempt timeout and return winio.ErrTimeout, which the old check treated as a fatal error instead of retrying. Also guard windows.ERROR_PIPE_BUSY explicitly to match the error checks in containerd/nerdbox#218. Adds a regression test that forces the state-1 to state-2 transition race by delaying Accept past the 1-second per-attempt timeout. Signed-off-by: Esteban Ginez <esteban.ginez@docker.com>