diff --git a/internal/transport/middleware/proofer/proofer.go b/internal/transport/middleware/proofer/proofer.go index f76b0b6..e541e2a 100644 --- a/internal/transport/middleware/proofer/proofer.go +++ b/internal/transport/middleware/proofer/proofer.go @@ -106,7 +106,9 @@ func (mw *Proofer) handleSolutionCheck(c *gin.Context, solution string) error { // Handle error if err != nil { mw.logger.Error("failed to check solution", zap.Error(err)) - return err + + // not retuning error here, because in any case we want to try to send a new challenge + // regardless if the client sent an invalid solution, tried to reuse a solution or there simply was an error } // If solution is not valid, return error and a new challenge, abort request diff --git a/internal/transport/middleware/proofer/proofer_test.go b/internal/transport/middleware/proofer/proofer_test.go index 232e4ff..6d83999 100644 --- a/internal/transport/middleware/proofer/proofer_test.go +++ b/internal/transport/middleware/proofer/proofer_test.go @@ -101,7 +101,7 @@ func TestProofer_Use(t *testing.T) { // Assertions assert.Equal(t, http.StatusInternalServerError, w.Code, "status code should be 500") - assert.Equal(t, "{\"error\":\"failed to check solution\"}", w.Body.String()) + assert.Equal(t, "{\"error\":\"failed to get new challenge\"}{\"error\":\"failed to check solution\"}", w.Body.String()) }) t.Run("Incorrect solution, get back with a new one", func(t *testing.T) {