diff --git a/Overlord-Client/cmd/agent/capture/win_duplication.go b/Overlord-Client/cmd/agent/capture/win_duplication.go index f56d671..af1729a 100644 --- a/Overlord-Client/cmd/agent/capture/win_duplication.go +++ b/Overlord-Client/cmd/agent/capture/win_duplication.go @@ -717,7 +717,7 @@ func (s *duplicationState) capture(display int) (*image.RGBA, error) { return nil, fmt.Errorf("dxgi: acquire frame failed 0x%x", hr) } if resource != nil { - resource.Release() + defer resource.Release() } width := int(s.desc.ModeDesc.Width) diff --git a/Overlord-Client/cmd/agent/session.go b/Overlord-Client/cmd/agent/session.go index fd95676..fad2b3e 100644 --- a/Overlord-Client/cmd/agent/session.go +++ b/Overlord-Client/cmd/agent/session.go @@ -679,14 +679,16 @@ func runSession(ctx context.Context, cancel context.CancelFunc, conn *websocket. } }() - if err := readLoop(ctx, conn, env, dispatcher); err != nil { - log.Printf("readLoop ended: %v", err) - select { - case readErr <- err: - default: - } - cancel() + err := readLoop(ctx, conn, env, dispatcher) + if err == nil { + err = fmt.Errorf("readLoop exited unexpectedly") } + log.Printf("readLoop ended: %v", err) + select { + case readErr <- err: + default: + } + cancel() }() shotCtx, cancelShots := context.WithCancel(ctx)