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:
M | main.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