Deduplicate error printing

This commit is contained in:
styan 2020-06-20 22:07:15 +00:00
parent 9ff65c7806
commit 0fddfb0dfd
2 changed files with 12 additions and 20 deletions

View File

@ -136,14 +136,14 @@ main(int argc, char *argv[])
continue;
}
if ((r = gemini_read(&gemini, b, bs)) < 0) {
gemini_reset(&gemini);
warn("Gemini read error");
gemini_reset(&gemini);
continue;
}
if (gemini.status / 10 != 2) {
gemini_reset(&gemini);
warnx("Gemini error %02hd: %s",
warnx("Gemini Error %02hd: %s",
gemini.status, gemini.meta);
gemini_reset(&gemini);
continue;
}
for (i = 0; i < gemini.metalen &&

View File

@ -246,9 +246,11 @@ gemini_connect(struct gemini *g, const char *url)
if ((g->keymem != NULL && tls_config_set_key_mem(g->tls_config,
g->keymem, g->keylen) != 0) || (g->certmem != NULL &&
tls_config_set_cert_mem(g->tls_config, g->certmem,
g->certlen) != 0))
g->certlen) != 0)) {
warnx("TLS-Config Error: %s",
tls_config_error(g->tls_config));
goto err;
}
if ((g->tls = tls_client()) == NULL) {
tls_config_free(g->tls_config);
g->tls_config = NULL;
@ -393,15 +395,15 @@ gemini_read(struct gemini *g, void *b, size_t bs)
if (g->maxredirects == 0)
goto done;
if (g->redirects >= g->maxredirects)
goto errredir;
goto err;
g->redirects++;
if (gemini_connect_query(g, g->meta, NULL) != 0)
goto err;
return (gemini_read(g, b, bs));
case '4':
goto errg;
goto done;
case '5':
goto errg;
goto done;
case '6':
goto done;
case '7':
@ -425,10 +427,8 @@ gemini_read(struct gemini *g, void *b, size_t bs)
}
return (tls_read(g->tls, b, bs));
eof:
if (g->state != GEMINI_STATE_READ) {
warnx("Unexpected EOF");
if (g->state != GEMINI_STATE_READ)
goto err;
}
done:
g->state = GEMINI_STATE_DONE;
return (0);
@ -439,17 +439,9 @@ errt:
return (r);
warnx("TLS Error: %s", tls_error(g->tls));
goto err;
errg:
warnx("Gemini Error %02hd: %s", g->status, g->meta);
goto done;
errinval:
warnx("Invalid response");
goto err;
errunsup:
warnx("Unsupported status: %02hd", g->status);
goto err;
errredir:
warnx("Redirect %02hd: %s", g->status, g->meta);
g->status = -1;
g->meta = "Invalid response";
goto err;
err:
g->state = GEMINI_STATE_ERROR;