From 415d0130ce6d0c55e9b6934475984e90e94b641d Mon Sep 17 00:00:00 2001 From: Aykhan Shahsuvarov Date: Tue, 1 Apr 2025 21:10:02 +0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A8=20Move=20duration=20cancel=20logic?= =?UTF-8?q?=20to=20requests=20package?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.go | 5 ----- requests/run.go | 7 +++++++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/main.go b/main.go index 36a0b2d..5e99a86 100644 --- a/main.go +++ b/main.go @@ -7,7 +7,6 @@ import ( "os" "os/signal" "syscall" - "time" "github.com/aykhans/dodo/config" "github.com/aykhans/dodo/requests" @@ -50,10 +49,6 @@ func main() { ctx, cancel := context.WithCancel(context.Background()) go listenForTermination(func() { cancel() }) - if requestConf.Duration > 0 { - time.AfterFunc(requestConf.Duration, func() { cancel() }) - } - responses, err := requests.Run(ctx, requestConf) if err != nil { if err == types.ErrInterrupt { diff --git a/requests/run.go b/requests/run.go index a076671..d3937dd 100644 --- a/requests/run.go +++ b/requests/run.go @@ -20,6 +20,9 @@ import ( // - ctx: The context for managing request lifecycle and cancellation. // - requestConfig: The configuration for the request, including timeout, proxies, and other settings. func Run(ctx context.Context, requestConfig *config.RequestConfig) (Responses, error) { + ctx, cancel := context.WithCancel(ctx) + defer cancel() + clients := getClients( ctx, requestConfig.Timeout, @@ -31,6 +34,10 @@ func Run(ctx context.Context, requestConfig *config.RequestConfig) (Responses, e return nil, types.ErrInterrupt } + if requestConfig.Duration > 0 { + time.AfterFunc(requestConfig.Duration, func() { cancel() }) + } + responses := releaseDodos(ctx, requestConfig, clients) if ctx.Err() != nil && len(responses) == 0 { return nil, types.ErrInterrupt