diff --git a/cerberus_test.go b/cerberus_test.go index 8fad15c..677ea0d 100644 --- a/cerberus_test.go +++ b/cerberus_test.go @@ -42,7 +42,7 @@ func solveTest(ctx context.Context, hc http.Client, host string) error { if err != nil { return err } - log.Printf("Solution hash: %x, nonce: %d, remaining steps: %d\n", s.Hash, s.Nonce, s.Steps) + log.Printf("Solution hash: %x, nonce: %d\n", s.Hash, s.Nonce) resp, err := Submit(ctx, hc, s, "") if err != nil { diff --git a/http.go b/http.go index 546cf43..c9a1b4b 100644 --- a/http.go +++ b/http.go @@ -85,21 +85,23 @@ func Submit(ctx context.Context, hc http.Client, s Solution, redirect string) (* return nil, err } - if s.Steps > 0 { + // This feels gross, but it works. + for s.Steps > 0 { + resp.Body.Close() + c, err := NewChallenge(ctx, hc, s.host.String()) if err != nil { return nil, err } - // maybe useful later. idk. - // c.Steps = s.Steps - - s, err := Solve(ctx, c) + s, err = Solve(ctx, c) + if err != nil { + return nil, err + } + resp, err = Submit(ctx, hc, s, redirect) if err != nil { return nil, err } - - return Submit(ctx, hc, s, redirect) } return resp, nil