Files
http_server/server.c

49 lines
951 B
C

#include <strops.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include "http.h"
#include <unistd.h>
#define PORT 8080
HTTP_Response* handle_client(HTTP_Request *request) {
ssize_t bytes_written;
char *response = "HTTP/1.1 200 \r\n\r\n";
bytes_written = write(request->client_sock, response, strops_length(response));
if (bytes_written != strops_length(response)) {
fprintf(stderr, "Incomplete write\n");
}
return NULL;
}
/*
TODO: implement signals
TODO: graceful server shutdown
*/
int main() {
int ret;
int server;
server = http_init(PORT, 3);
if (server == -1) {
return 1;
}
HTTP_Request *request;
while(1) {
request = http_accept(server);
if (request == NULL) {
break;
}
handle_client(request);
close(request->client_sock);
free(request);
}
close(server);
return 0;
}