From 132f2ececc012cf4744ca5b8044fb637fed96a0c Mon Sep 17 00:00:00 2001 From: Julian Maingot Date: Sat, 30 Jul 2022 17:24:36 -0700 Subject: [PATCH] notify clients about malformed requests I think this has been broken for a while and I came across it while implementing my own client. The server should notify the client that the request is malformed but wasn't sending the response when SSL_read returned SSL_ERROR_WANT_READ. --- src/server.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/server.c b/src/server.c index e199f6f..56e11c9 100644 --- a/src/server.c +++ b/src/server.c @@ -345,7 +345,10 @@ client_readable(struct gmnisrv_server *server, struct gmnisrv_client *client) switch (e) { case SSL_ERROR_WANT_READ: case SSL_ERROR_WANT_WRITE: - goto queue_ssl_write; + if (client->bufln == 0) { + goto queue_ssl_write; + } + // intentional fallthrough default: client_submit_response(client, GEMINI_STATUS_BAD_REQUEST, error, NULL);