From 0f7e8cdb8c78eacb31f8da7a7a3b7ac621a7df7e Mon Sep 17 00:00:00 2001 From: styan Date: Fri, 1 May 2020 09:43:04 +0000 Subject: [PATCH] Fix the redirect counter --- libgeminiclient.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libgeminiclient.c b/libgeminiclient.c index 3b03360..05be4c9 100644 --- a/libgeminiclient.c +++ b/libgeminiclient.c @@ -97,7 +97,6 @@ gemini_reset(struct gemini *g) g->reqlen = 0; g->index = 0; g->state = GEMINI_STATE_INIT; - g->redirects = 0; g->status = 0; if (g->port == 0) g->port = GEMINI_DEFAULT_PORT; @@ -341,6 +340,8 @@ gemini_read(struct gemini *g, void *b, size_t bs) } i = j + 2; } + if (g->status / 10 != 3) + g->redirects = 0; switch (g->status / 10) { case 0: goto errinval; @@ -355,7 +356,8 @@ gemini_read(struct gemini *g, void *b, size_t bs) if (g->redirects >= g->maxredirects) goto errredir; g->redirects++; - if (gemini_connect_query(g, g->meta, NULL) != 0) + if (gemini_connect_query(g, g->meta, + NULL) != 0) goto err; return (gemini_read(g, b, bs)); case 4: