6 changed files with 97 additions and 8 deletions
-
8ChangeLog
-
4include/http/response.h
-
1src/Makefile.am
-
59src/http/response/304.c
-
18src/http/response/image.c
-
15src/http/worker/process.c
@ -0,0 +1,59 @@ |
|||
#include <stdlib.h> |
|||
#include <string.h> |
|||
#include <stdio.h> |
|||
#include <time.h> |
|||
#include <sys/stat.h> |
|||
#include <fcntl.h> |
|||
|
|||
#include "class.h" |
|||
#include "interface/class.h" |
|||
|
|||
#include "http/response.h" |
|||
#include "http/message.h" |
|||
#include "http/header.h" |
|||
|
|||
|
|||
HttpResponse |
|||
httpResponse304(int handle, const char * content_type) |
|||
{ |
|||
time_t t; |
|||
struct tm * tmp; |
|||
char buffer[200]; |
|||
struct stat st; |
|||
HttpResponse response; |
|||
HttpMessage message; |
|||
|
|||
fstat(handle, &st); |
|||
|
|||
response = new(HttpResponse, "HTTP/1.1", 304, "Not Modified"); |
|||
message = (HttpMessage)response; |
|||
|
|||
httpHeaderAdd(&(message->header), |
|||
new(HttpHeader, "Content-Type", content_type)); |
|||
httpHeaderAdd(&(message->header), |
|||
new(HttpHeader, "Server", "testserver")); |
|||
|
|||
message->type = HTTP_MESSAGE_BUFFERED; |
|||
message->nbody = 0; |
|||
message->body = NULL; |
|||
|
|||
tmp = localtime(&(st.st_mtime)); |
|||
strftime(buffer, sizeof(buffer), "%s", tmp); |
|||
httpHeaderAdd(&(message->header), |
|||
new(HttpHeader, "ETag", buffer)); |
|||
|
|||
tmp = localtime(&(st.st_mtime)); |
|||
strftime(buffer, sizeof(buffer), "%a, %d %b %Y %T %Z", tmp); |
|||
httpHeaderAdd(&(message->header), |
|||
new(HttpHeader, "Last-Modified", buffer)); |
|||
|
|||
t = time(NULL); |
|||
tmp = localtime(&t); |
|||
strftime(buffer, sizeof(buffer), "%a, %d %b %Y %T %Z", tmp); |
|||
httpHeaderAdd(&(message->header), |
|||
new(HttpHeader, "Date", buffer)); |
|||
|
|||
return response; |
|||
} |
|||
|
|||
// vim: set ts=4 sw=4: |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue