iFixing TLS in HAProxy. - 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 da60f209d2f93d5c8b224ccb539d612aff2911f6 /scm/geomyidae/commit/da60f209d2f93d5c8b224ccb539d612aff2911f6.gph bitreich.org 70
1parent d3a546ebc51a5cb2a96b4fd162a0c448c3db27e5 /scm/geomyidae/commit/d3a546ebc51a5cb2a96b4fd162a0c448c3db27e5.gph bitreich.org 70
hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net bitreich.org 70
iDate: Sat, 19 Nov 2022 20:45:42 +0100 Err bitreich.org 70
i Err bitreich.org 70
iFixing TLS in HAProxy. Err bitreich.org 70
i Err bitreich.org 70
iThis makes reading more lines in geomyidae on a request very easy now. Err bitreich.org 70
iAs a downside, the receiving is just one byte, until there is some NL. Err bitreich.org 70
iThis can be slow on really old computers. Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M main.c | 23 +++++++---------------- Err bitreich.org 70
i Err bitreich.org 70
i1 file changed, 7 insertions(+), 16 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@@ -917,6 +917,9 @@ main(int argc, char *argv[]) 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+ rlen = 0; Err bitreich.org 70
i+ memset(recvb, 0, sizeof(recvb)); Err bitreich.org 70
i+ 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@@ -955,14 +958,14 @@ read_selector_again: Err bitreich.org 70
i #ifdef ENABLE_TLS Err bitreich.org 70
i if (istls) { Err bitreich.org 70
i retl = tls_read(tlsclientctx, Err bitreich.org 70
i- recvb+rlen, sizeof(recvb)-1-rlen); Err bitreich.org 70
i+ recvb+rlen, 1); Err bitreich.org 70
i if (retl < 0) Err bitreich.org 70
i fprintf(stderr, "tls_read failed: %s\n", tls_error(tlsclientctx)); Err bitreich.org 70
i } else Err bitreich.org 70
i #endif /* ENABLE_TLS */ Err bitreich.org 70
i { Err bitreich.org 70
i retl = read(sock, recvb+rlen, Err bitreich.org 70
i- sizeof(recvb)-1-rlen); Err bitreich.org 70
i+ 1); Err bitreich.org 70
i if (retl < 0) Err bitreich.org 70
i perror("read"); Err bitreich.org 70
i } Err bitreich.org 70
i@@ -979,13 +982,6 @@ read_selector_again: Err bitreich.org 70
i * TODO: Add other protocol version support. 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@@ -1028,15 +1024,10 @@ read_selector_again: Err bitreich.org 70
i } Err bitreich.org 70
i if (loglvl & CONN) { Err bitreich.org 70
i logentry(clienth, clientp, "-", Err bitreich.org 70
i- "haproxy connected"); Err bitreich.org 70
i+ "haproxy connection"); Err bitreich.org 70
i } 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+ 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
.
Response:
text/plain