|
|
|
@ -32,12 +32,13 @@ void safeExit(int sig) {
|
|
|
|
|
void *handle(void* arg) {
|
|
|
|
|
int client = *(int*)arg;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int useBinary = 0;
|
|
|
|
|
int hasTriedIndex;
|
|
|
|
|
ReqHeader request = readReqHeader(client);
|
|
|
|
|
funy: {
|
|
|
|
|
char* dot = strrchr(request.path, '.');
|
|
|
|
|
|
|
|
|
|
char *file = readFile(request.path);
|
|
|
|
|
ResHeader rawHeader;
|
|
|
|
|
rawHeader.protocol = request.protocol;
|
|
|
|
|
rawHeader.status = 200;
|
|
|
|
@ -60,8 +61,12 @@ funy: {
|
|
|
|
|
rawHeader.mime = "text/css";
|
|
|
|
|
} else if (!strcmp(dot, ".ico")) {
|
|
|
|
|
rawHeader.mime = "image/vnd.microsoft.icon";
|
|
|
|
|
useBinary = 1;
|
|
|
|
|
} else if (!strcmp(dot, ".js")) {
|
|
|
|
|
rawHeader.mime = "text/javascript";
|
|
|
|
|
} else if (!strcmp(dot, ".woff2")) {
|
|
|
|
|
rawHeader.mime = "font/woff2";
|
|
|
|
|
useBinary = 1;
|
|
|
|
|
} else {
|
|
|
|
|
warn("mimetype for %s not found\n", request.path);
|
|
|
|
|
rawHeader.mime = "text/plain";
|
|
|
|
@ -84,9 +89,20 @@ funy: {
|
|
|
|
|
reqlog("%d %s\n", rawHeader.status, request.path);
|
|
|
|
|
char tmpHeader[1024];
|
|
|
|
|
makeHeader(tmpHeader, &rawHeader);
|
|
|
|
|
char* resHeader = malloc(strlen(tmpHeader) + strlen(file) + 1); //= "HTTP/1.1 200 OK\r\n\nHello, world!";
|
|
|
|
|
sprintf(resHeader, "%s%s", (char*)tmpHeader, file);
|
|
|
|
|
send(client, resHeader, strlen(resHeader), 0);
|
|
|
|
|
|
|
|
|
|
send(client, tmpHeader, strlen(tmpHeader), 0);
|
|
|
|
|
void* file;
|
|
|
|
|
if (!useBinary) {
|
|
|
|
|
file = readFile(request.path);
|
|
|
|
|
send(client, file, strlen(file), 0);
|
|
|
|
|
} else {
|
|
|
|
|
int len;
|
|
|
|
|
file = readFileBin(&len, request.path);
|
|
|
|
|
send(client, file, len, 0);
|
|
|
|
|
}
|
|
|
|
|
//char* resHeader = malloc(strlen(tmpHeader) + strlen(file) + 1); //= "HTTP/1.1 200 OK\r\n\nHello, world!";
|
|
|
|
|
//sprintf(resHeader, "%s%s", (char*)tmpHeader, file);
|
|
|
|
|
//send(client, resHeader, strlen(resHeader), 0);
|
|
|
|
|
close(client);
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|