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