diff --git a/assets/other/.keep-me b/assets/other/.keep-me new file mode 100644 index 0000000..e69de29 diff --git a/src/http/worker.c b/src/http/worker.c index f7b62c3..9abb59c 100644 --- a/src/http/worker.c +++ b/src/http/worker.c @@ -60,14 +60,15 @@ httpWorkerCtor(void * _this, va_list * params) if (NULL != handle) { char buffer[512]; - while (NULL != fgets(buffer, 512, handle)) { + buffer[511] = '\0'; + + while (NULL != fgets(buffer, 511, handle)) { char * tmp; char * key = buffer; char * value; size_t nkey; size_t nvalue; - buffer[511] = '\0'; tmp = memchr(key, ' ', 512); if (NULL != tmp) { @@ -76,10 +77,14 @@ httpWorkerCtor(void * _this, va_list * params) nkey = tmp - buffer; value = tmp + 1; - for (; *value == ' ' && value < buffer+512; value++); + for (; *value == ' ' && value < buffer+511; value++); nvalue = strlen(value); + if ('\n' == value[nvalue-1]) { + value[nvalue-1] = '\0'; + } + hashAdd(this->mime_types, new(HashValue, key, nkey, value, nvalue)); } diff --git a/src/http/worker/process.c b/src/http/worker/process.c index 078ac93..774a9ea 100644 --- a/src/http/worker/process.c +++ b/src/http/worker/process.c @@ -225,16 +225,25 @@ httpWorkerProcess(HttpWorker this, Stream st) } else { - char asset[2048] = "./assets/html"; + char html_asset[2048] = "./assets/html"; + char base_asset[2048] = "./assets"; + char * extension = strrchr(request->path, '.'); char * mime_type = NULL; char default_mime[] = "application/octet-stream"; + char * asset = base_asset; + if (NULL != extension) { extension++; mime_type = httpWorkerGetMimeType(this, extension); } + if (NULL != mime_type && + 0 == memcmp(mime_type, CSTRA("text/html"))) { + asset = html_asset; + } + if (NULL == mime_type) { mime_type = default_mime; }