geomyidae

A small C-based gopherd. (gopher://bitreich.org/1/scm/geomyidae)
git clone git://r-36.net/geomyidae
Log | Files | Refs | README | LICENSE

commit da60f209d2f93d5c8b224ccb539d612aff2911f6
parent d3a546ebc51a5cb2a96b4fd162a0c448c3db27e5
Author: Christoph Lohmann <20h@r-36.net>
Date:   Sat, 19 Nov 2022 20:45:42 +0100

Fixing TLS in HAProxy.

This makes reading more lines in geomyidae on a request very easy now.
As a downside, the receiving is just one byte, until there is some NL.
This can be slow on really old computers.

Diffstat:
Mmain.c | 23+++++++----------------
1 file changed, 7 insertions(+), 16 deletions(-)

diff --git a/main.c b/main.c @@ -917,6 +917,9 @@ main(int argc, char *argv[]) #endif /* __OpenBSD__ */ read_selector_again: + rlen = 0; + memset(recvb, 0, sizeof(recvb)); + if (recv(sock, &byte0, 1, MSG_PEEK) < 1) return 1; @@ -955,14 +958,14 @@ read_selector_again: #ifdef ENABLE_TLS if (istls) { retl = tls_read(tlsclientctx, - recvb+rlen, sizeof(recvb)-1-rlen); + recvb+rlen, 1); if (retl < 0) fprintf(stderr, "tls_read failed: %s\n", tls_error(tlsclientctx)); } else #endif /* ENABLE_TLS */ { retl = read(sock, recvb+rlen, - sizeof(recvb)-1-rlen); + 1); if (retl < 0) perror("read"); } @@ -979,13 +982,6 @@ read_selector_again: * TODO: Add other protocol version support. */ if (dohaproxy && !strncmp(recvb, "PROXY TCP", 9)) { - /* - * In case more than proxy tcp was read, - * be pepared. - */ - p = strchr(recvb, '\n'); - if (p == NULL) - return 1; if (p[-1] == '\r') p[-1] = '\0'; *p++ = '\0'; @@ -1028,15 +1024,10 @@ read_selector_again: } if (loglvl & CONN) { logentry(clienth, clientp, "-", - "haproxy connected"); + "haproxy connection"); } - printf("clienth = %s, clientp = %s, serverh = %s, serverp = %s\n", - clienth, clientp, serverh, serverp); - /* Realign recvb to new value. */ - memmove(recvb, p, sizeof(recvb)-(p-recvb)); - if (strlen(recvb) < 1) - goto read_selector_again; + goto read_selector_again; } #ifdef ENABLE_TLS