diff --git a/src/runtime/virtcontainers/kata_agent.go b/src/runtime/virtcontainers/kata_agent.go index ed31e089ed..f2d3255e3e 100644 --- a/src/runtime/virtcontainers/kata_agent.go +++ b/src/runtime/virtcontainers/kata_agent.go @@ -11,6 +11,7 @@ import ( "encoding/json" "errors" "fmt" + "io" "math" "os" "path" @@ -2485,11 +2486,16 @@ func (k *kataAgent) readProcessStream(containerID, processID string, data []byte ContainerId: containerID, ExecId: processID, Len: uint32(len(data))}) - if err == nil { - copy(data, resp.Data) - return len(resp.Data), nil + if err != nil { + return 0, err } - return 0, err + + if len(resp.Data) == 0 { + return 0, io.EOF + } + + copy(data, resp.Data) + return len(resp.Data), nil } func (k *kataAgent) getGuestDetails(ctx context.Context, req *grpc.GuestDetailsRequest) (*grpc.GuestDetailsResponse, error) { diff --git a/src/runtime/virtcontainers/kata_agent_test.go b/src/runtime/virtcontainers/kata_agent_test.go index 28c4070b1f..876c9f703b 100644 --- a/src/runtime/virtcontainers/kata_agent_test.go +++ b/src/runtime/virtcontainers/kata_agent_test.go @@ -9,6 +9,7 @@ import ( "bufio" "context" "fmt" + "io" "os" "path" "path/filepath" @@ -176,10 +177,14 @@ func TestKataAgentSendReq(t *testing.T) { assert.Nil(err) _, err = k.readProcessStdout(ctx, container, execid, []byte{}) - assert.Nil(err) + if err != nil { + assert.ErrorIs(err, io.EOF) + } _, err = k.readProcessStderr(ctx, container, execid, []byte{}) - assert.Nil(err) + if err != nil { + assert.ErrorIs(err, io.EOF) + } _, err = k.getOOMEvent(ctx) assert.Nil(err)