iFix haproxy support. - geomyidae - A small C-based gopherd. Err bitreich.org 70 hgit clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/ URL:git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/ bitreich.org 70 1Log /scm/geomyidae/log.gph bitreich.org 70 1Files /scm/geomyidae/files.gph bitreich.org 70 1Refs /scm/geomyidae/refs.gph bitreich.org 70 1Tags /scm/geomyidae/tag bitreich.org 70 1README /scm/geomyidae/file/README.gph bitreich.org 70 1LICENSE /scm/geomyidae/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 8de0a5087833495b700c7ce4472df52c397c4cd5 /scm/geomyidae/commit/8de0a5087833495b700c7ce4472df52c397c4cd5.gph bitreich.org 70 1parent ef96bd3ac67bd8a63756736a172fe34590d45ea5 /scm/geomyidae/commit/ef96bd3ac67bd8a63756736a172fe34590d45ea5.gph bitreich.org 70 hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net bitreich.org 70 iDate: Mon, 14 Nov 2022 01:06:49 +0100 Err bitreich.org 70 i Err bitreich.org 70 iFix haproxy support. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M main.c | 26 ++++++++++++++++++++++---- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 22 insertions(+), 4 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/main.c b/main.c /scm/geomyidae/file/main.c.gph bitreich.org 70 i@@ -916,6 +916,7 @@ main(int argc, char *argv[]) Err bitreich.org 70 i } Err bitreich.org 70 i #endif /* __OpenBSD__ */ Err bitreich.org 70 i Err bitreich.org 70 i+read_selector_again: Err bitreich.org 70 i if (recv(sock, &byte0, 1, MSG_PEEK) < 1) Err bitreich.org 70 i return 1; Err bitreich.org 70 i Err bitreich.org 70 i@@ -949,7 +950,6 @@ main(int argc, char *argv[]) Err bitreich.org 70 i return 1; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i-read_selector_again: Err bitreich.org 70 i maxrecv = sizeof(recvb) - 1; Err bitreich.org 70 i do { Err bitreich.org 70 i #ifdef ENABLE_TLS Err bitreich.org 70 i@@ -980,6 +980,17 @@ read_selector_again: Err bitreich.org 70 i */ Err bitreich.org 70 i if (dohaproxy && !strncmp(recvb, "PROXY TCP", 9)) { Err bitreich.org 70 i /* Err bitreich.org 70 i+ * In case more than proxy tcp was read, Err bitreich.org 70 i+ * be pepared. Err bitreich.org 70 i+ */ Err bitreich.org 70 i+ p = strchr(recvb, '\n'); Err bitreich.org 70 i+ if (p == NULL) Err bitreich.org 70 i+ return 1; Err bitreich.org 70 i+ if (p[-1] == '\r') Err bitreich.org 70 i+ p[-1] = '\0'; Err bitreich.org 70 i+ *p++ = '\0'; Err bitreich.org 70 i+ Err bitreich.org 70 i+ /* Err bitreich.org 70 i * Be careful, we are using scanf. Err bitreich.org 70 i * TODO: Use some better parsing. Err bitreich.org 70 i */ Err bitreich.org 70 i@@ -1019,7 +1030,13 @@ read_selector_again: Err bitreich.org 70 i logentry(clienth, clientp, "-", Err bitreich.org 70 i "haproxy connected"); Err bitreich.org 70 i } Err bitreich.org 70 i- goto read_selector_again; Err bitreich.org 70 i+ printf("clienth = %s, clientp = %s, serverh = %s, serverp = %s\n", Err bitreich.org 70 i+ clienth, clientp, serverh, serverp); Err bitreich.org 70 i+ Err bitreich.org 70 i+ /* Realign recvb to new value. */ Err bitreich.org 70 i+ memmove(recvb, p, sizeof(recvb)-(p-recvb)); Err bitreich.org 70 i+ if (strlen(recvb) < 1) Err bitreich.org 70 i+ goto read_selector_again; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i #ifdef ENABLE_TLS Err bitreich.org 70 i@@ -1065,8 +1082,9 @@ read_selector_again: Err bitreich.org 70 i #endif /* ENABLE_TLS */ Err bitreich.org 70 i Err bitreich.org 70 i handlerequest(sock, recvb, rlen, base, Err bitreich.org 70 i- ohost, sport, clienth, Err bitreich.org 70 i- clientp, serverh, serverp, Err bitreich.org 70 i+ (dohaproxy)? serverh : ohost, Err bitreich.org 70 i+ (dohaproxy)? serverp : sport, Err bitreich.org 70 i+ clienth, clientp, serverh, serverp, Err bitreich.org 70 i nocgi, istls); Err bitreich.org 70 i Err bitreich.org 70 i if (!istls) { Err bitreich.org 70 .