commit - 247917be455490fb432d14a7cca37419333b7d3f
commit + 6e8f426eff55c3ebcd1977185da46975fac2d1ad
blob - a8c5169b40dbf3f38f2ba9b1748785e6e10e7637
blob + ad9bf9566285410e6fa897bcbd8566785c4b230e
--- proxy.c
+++ proxy.c
const char *ctype;
char *hdr;
size_t len;
- int code;
if (clt->clt_headersdone) {
copy:
return;
}
- code = (hdr[0] - '0') * 10 + (hdr[1] - '0');
- if (code != 20) {
- log_warnx("un-handled gemini reply status %d", code);
- free(hdr);
- proxy_error(bev, EV_READ, clt);
+ switch (hdr[0]) {
+ case '2':
+ /* handled below */
+ break;
+ default:
+ if (clt_puts(clt, "Status: 501\r\n") == -1)
+ return;
+ if (clt_puts(clt,
+ "Content-Type: text/plain;charset=utf8\r\n") == -1)
+ return;
+ if (clt_puts(clt, "\r\n") == -1)
+ return;
+ if (clt_printf(clt, "Request failed with code %c%c\n\n",
+ hdr[0], hdr[1]) == -1)
+ return;
+ if (clt_printf(clt, "The server says: %s\n", &hdr[3]) == -1)
+ return;
+ fcgi_end_request(clt, 1);
return;
}