diff options
| author | Drew DeVault <sir@cmpwn.com> | 2020-09-26 15:51:28 -0400 |
|---|---|---|
| committer | Drew DeVault <sir@cmpwn.com> | 2020-09-26 15:51:28 -0400 |
| commit | 6bc9c4deb90e8daa228d792b23a3e61b7bebdb78 (patch) | |
| tree | e81beb74f44b1809ead547cbb5aad39d6594e65e /src/server.c | |
| parent | 165e3c02fc9c9834b320c3a333c942ee87ffed1b (diff) | |
| download | gmnisrv-6bc9c4deb90e8daa228d792b23a3e61b7bebdb78.tar.gz gmnisrv-6bc9c4deb90e8daa228d792b23a3e61b7bebdb78.tar.xz gmnisrv-6bc9c4deb90e8daa228d792b23a3e61b7bebdb78.zip | |
Implement autoindex option
Diffstat (limited to 'src/server.c')
| -rw-r--r-- | src/server.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/server.c b/src/server.c index e69e381..c818fbd 100644 --- a/src/server.c +++ b/src/server.c @@ -150,7 +150,6 @@ accept_client(struct gmnisrv_server *server, int fd) client->pollfd = pollfd; client->addrlen = addrlen; client->server = server; - client->bodyfd = -1; clock_gettime(CLOCK_MONOTONIC, &client->ctime); memcpy(&client->addr, &addr, sizeof(addr)); @@ -240,7 +239,7 @@ client_readable(struct gmnisrv_server *server, struct gmnisrv_client *client) if (!client->host) { const char *error = "This server requires clients to support the TLS SNI (server name identification) extension"; client_submit_response(client, - GEMINI_STATUS_BAD_REQUEST, error, -1); + GEMINI_STATUS_BAD_REQUEST, error, NULL); return; } @@ -261,7 +260,7 @@ client_readable(struct gmnisrv_server *server, struct gmnisrv_client *client) if (!newline) { const char *error = "Protocol error: malformed request"; client_submit_response(client, - GEMINI_STATUS_BAD_REQUEST, error, -1); + GEMINI_STATUS_BAD_REQUEST, error, NULL); return; } *newline = 0; @@ -304,7 +303,7 @@ client_writable(struct gmnisrv_server *server, struct gmnisrv_client *client) } client->bufix += r; if (client->bufix >= client->bufln) { - if (client->bodyfd == -1) { + if (!client->body) { disconnect_client(server, client); } else { client->state = RESPOND_BODY; @@ -315,8 +314,8 @@ client_writable(struct gmnisrv_server *server, struct gmnisrv_client *client) break; case RESPOND_BODY: if (client->bufix >= client->bufln) { - n = read(client->bodyfd, - client->buf, sizeof(client->buf)); + n = fread(client->buf, 1, + sizeof(client->buf), client->body); if (n == -1) { client_error(&client->addr, "Error reading response body: %s", |
