49 lines
951 B
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;
|
|
}
|