itPrint HTTP error codes on gopher connection failures - phroxy - Gopher to HTTP proxy Err z3bra.org 70 hgit clone git://git.z3bra.org/phroxy.git URL:git://git.z3bra.org/phroxy.git z3bra.org 70 1Log /scm/phroxy/log.gph z3bra.org 70 1Files /scm/phroxy/files.gph z3bra.org 70 1Refs /scm/phroxy/refs.gph z3bra.org 70 1LICENSE /scm/phroxy/file/LICENSE.gph z3bra.org 70 i--- Err z3bra.org 70 1commit 338b20f4ebd64a68962bedde167b480c3ceb3dee /scm/phroxy/commit/338b20f4ebd64a68962bedde167b480c3ceb3dee.gph z3bra.org 70 1parent bcdad97311b53db4557ec5bc06dd8ffce852610e /scm/phroxy/commit/bcdad97311b53db4557ec5bc06dd8ffce852610e.gph z3bra.org 70 hAuthor: Willy Goiffon URL:mailto:dev@z3bra.org z3bra.org 70 iDate: Tue, 15 Sep 2020 12:50:21 +0200 Err z3bra.org 70 i Err z3bra.org 70 iPrint HTTP error codes on gopher connection failures Err z3bra.org 70 i Err z3bra.org 70 iDiffstat: Err z3bra.org 70 i M phroxy.c | 56 +++++++++++-------------------- Err z3bra.org 70 i Err z3bra.org 70 i1 file changed, 20 insertions(+), 36 deletions(-) Err z3bra.org 70 i--- Err z3bra.org 70 1diff --git a/phroxy.c b/phroxy.c /scm/phroxy/file/phroxy.c.gph z3bra.org 70 it@@ -141,37 +141,15 @@ getrawitem(int sock, size_t *sz) Err z3bra.org 70 i } Err z3bra.org 70 i Err z3bra.org 70 i void Err z3bra.org 70 i-print400(void) Err z3bra.org 70 i+printhttp(int code) Err z3bra.org 70 i { Err z3bra.org 70 i- printf("HTTP/1.1 400 That's Illegal\r\n"); Err z3bra.org 70 i- printf("\r\n"); Err z3bra.org 70 i-} Err z3bra.org 70 i- Err z3bra.org 70 i-void Err z3bra.org 70 i-print404(void) Err z3bra.org 70 i-{ Err z3bra.org 70 i- printf("HTTP/1.1 404 Google Broke The Web\r\n"); Err z3bra.org 70 i- printf("\r\n"); Err z3bra.org 70 i-} Err z3bra.org 70 i- Err z3bra.org 70 i-void Err z3bra.org 70 i-print405(void) Err z3bra.org 70 i-{ Err z3bra.org 70 i- printf("HTTP/1.1 405 Don't Do That\r\n"); Err z3bra.org 70 i- printf("\r\n"); Err z3bra.org 70 i-} Err z3bra.org 70 i- Err z3bra.org 70 i-void Err z3bra.org 70 i-print415(void) Err z3bra.org 70 i-{ Err z3bra.org 70 i- printf("HTTP/1.1 415 Gopher Type Not Handled\r\n"); Err z3bra.org 70 i- printf("\r\n"); Err z3bra.org 70 i-} Err z3bra.org 70 i- Err z3bra.org 70 i-void Err z3bra.org 70 i-print500(void) Err z3bra.org 70 i-{ Err z3bra.org 70 i- printf("HTTP/1.1 500 You Broke The Web\r\n"); Err z3bra.org 70 i+ switch (code) { Err z3bra.org 70 i+ case 400: printf("HTTP/1.1 400 That's Illegal\r\n"); break; Err z3bra.org 70 i+ case 404: printf("HTTP/1.1 404 Google Broke The Web\r\n"); break; Err z3bra.org 70 i+ case 405: printf("HTTP/1.1 405 Don't Do That\r\n"); break; Err z3bra.org 70 i+ case 415: printf("HTTP/1.1 415 Gopher Type Not Handled\r\n"); break; Err z3bra.org 70 i+ case 500: printf("HTTP/1.1 500 You Broke The Web\r\n"); break; Err z3bra.org 70 i+ } Err z3bra.org 70 i printf("\r\n"); Err z3bra.org 70 i } Err z3bra.org 70 i Err z3bra.org 70 it@@ -341,7 +319,7 @@ serveitem(char item, char *data, size_t len) Err z3bra.org 70 i case '+': // mirror link Err z3bra.org 70 i default: Err z3bra.org 70 i /* IGNORE */ Err z3bra.org 70 i- print415(); Err z3bra.org 70 i+ printhttp(415); Err z3bra.org 70 i break; Err z3bra.org 70 i } Err z3bra.org 70 i Err z3bra.org 70 it@@ -377,7 +355,7 @@ phroxy(char *url) Err z3bra.org 70 i url++; Err z3bra.org 70 i hole = strsep(&url, "/"); Err z3bra.org 70 i if (!hole) { Err z3bra.org 70 i- print404(); Err z3bra.org 70 i+ printhttp(404); Err z3bra.org 70 i return 1; Err z3bra.org 70 i } Err z3bra.org 70 i Err z3bra.org 70 it@@ -393,20 +371,26 @@ phroxy(char *url) Err z3bra.org 70 i item = '1'; Err z3bra.org 70 i Err z3bra.org 70 i path = strsep(&url, "\0"); Err z3bra.org 70 i- if (!path) Err z3bra.org 70 i+ if (!path || *path != '/') Err z3bra.org 70 i path = "/"; Err z3bra.org 70 i Err z3bra.org 70 i if((srch = strchr(path, '?'))) Err z3bra.org 70 i *srch = '\t'; Err z3bra.org 70 i Err z3bra.org 70 i- sock = connectto(host, port); Err z3bra.org 70 i+ if ((sock = connectto(host, port)) < 0) { Err z3bra.org 70 i+ printhttp(500); Err z3bra.org 70 i+ return 1; Err z3bra.org 70 i+ } Err z3bra.org 70 i+ Err z3bra.org 70 i if (!sendselector(sock, path)) Err z3bra.org 70 i data = getrawitem(sock, &len); Err z3bra.org 70 i Err z3bra.org 70 i close(sock); Err z3bra.org 70 i Err z3bra.org 70 i- if (!data) Err z3bra.org 70 i+ if (!data) { Err z3bra.org 70 i+ printhttp(444); Err z3bra.org 70 i return 1; Err z3bra.org 70 i+ } Err z3bra.org 70 i Err z3bra.org 70 i serveitem(item, data, len); Err z3bra.org 70 i Err z3bra.org 70 it@@ -426,7 +410,7 @@ main(void) Err z3bra.org 70 i request[rlen] = '\0'; Err z3bra.org 70 i Err z3bra.org 70 i if (strncmp(request, "GET ", 4)) { Err z3bra.org 70 i- print405(); Err z3bra.org 70 i+ printhttp(405); Err z3bra.org 70 i return 1; Err z3bra.org 70 i } Err z3bra.org 70 i Err z3bra.org 70 .