From a86da9f74b0bc78676ac29ae96c5375cd5a1324f Mon Sep 17 00:00:00 2001 From: Lucas Manuel Rodriguez Date: Tue, 16 Apr 2024 08:39:34 -0300 Subject: [PATCH] Fix enroll request retry in osquery-perf (#18227) This was discovered by @xpkoala while performing a load test for the calendar backoff feature. Some enroll requests were failing due to enrolling hosts too fast (`-var loadtest_containers` from `0` to `40` at once), and osquery-perf had a bug in the enroll request where the `bytes.Buffer` was being incorrectly reused thus sending an empty body on the enroll retries, getting 400s from Fleet due to `Expected JSON Body`: ``` 2024/04/11 18:57:49 request failed: 400 ``` --- cmd/osquery-perf/agent.go | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/cmd/osquery-perf/agent.go b/cmd/osquery-perf/agent.go index 6a7af0964c..24227b84b0 100644 --- a/cmd/osquery-perf/agent.go +++ b/cmd/osquery-perf/agent.go @@ -1275,13 +1275,11 @@ func (a *agent) enroll(i int, onlyAlreadyEnrolled bool) error { return errors.New("not enrolled") } - var body bytes.Buffer - if err := a.templates.ExecuteTemplate(&body, "enroll", a); err != nil { - log.Println("execute template:", err) - return err - } - response := a.waitingDo(func() *http.Request { + var body bytes.Buffer + if err := a.templates.ExecuteTemplate(&body, "enroll", a); err != nil { + panic(err) + } request, err := http.NewRequest("POST", a.serverAddress+"/api/osquery/enroll", &body) if err != nil { panic(err)