Browse Source

as i have a lot of static string initialization with the length of that sting a created and used a macro to prevent errors

master
Georg Hopp 14 years ago
parent
commit
1d238aa55d
  1. 4
      include/utils/memory.h
  2. 7
      src/http/message/has_keep_alive.c
  3. 19
      src/http/response/304.c
  4. 11
      src/http/response/403.c
  5. 18
      src/http/response/404.c
  6. 30
      src/http/response/asset.c
  7. 19
      src/http/response/login_form.c
  8. 31
      src/http/response/me.c
  9. 17
      src/http/response/randval.c
  10. 46
      src/http/worker/add_common_header.c
  11. 5
      src/http/worker/get_asset.c
  12. 17
      src/http/worker/process.c
  13. 1
      src/server/poll.c
  14. 2
      src/socket.c

4
include/utils/memory.h

@ -23,8 +23,12 @@
#ifndef __UTILS_MEMORY_H__
#define __UTILS_MEMORY_H__
#define CSTRA(val) val, sizeof(val)-1 //!< Const STRing Argument
#define FREE(val) (ffree((void**)&(val)))
void ffree(void **);
#endif // __UTILS_MEMORY_H__
// vim: set ts=4 sw=4:

7
src/http/message/has_keep_alive.c

@ -28,6 +28,8 @@
#include "http/request.h"
#include "http/header.h"
#include "utils/memory.h"
#ifndef TRUE
#define TRUE 1
#endif
@ -43,10 +45,7 @@ httpMessageHasKeepAlive(HttpMessage message)
size_t size;
char * value;
header = httpHeaderGet(
&(message->header),
"connection",
sizeof("connection")-1);
header = httpHeaderGet(&(message->header), CSTRA("connection"));
if (NULL == header) {
return 0;

19
src/http/response/304.c

@ -29,6 +29,7 @@
#include "http/message.h"
#include "http/header.h"
#include "utils/memory.h"
HttpResponse
httpResponse304(
@ -47,23 +48,11 @@ httpResponse304(
message->body = NULL;
httpHeaderAdd(&(message->header),
new(HttpHeader,
"Content-Type",
sizeof("Content-Type")-1,
mime,
nmime));
new(HttpHeader, CSTRA("Content-Type"), mime, nmime));
httpHeaderAdd(&(message->header),
new(HttpHeader,
"ETag",
sizeof("ETag")-1,
etag,
netag));
new(HttpHeader, CSTRA("ETag"), etag, netag));
httpHeaderAdd(&(message->header),
new(HttpHeader,
"Last-Modified",
sizeof("Last-Modified")-1,
mtime,
nmtime));
new(HttpHeader, CSTRA("Last-Modified"), mtime, nmtime));
return response;
}

11
src/http/response/403.c

@ -38,8 +38,6 @@ httpResponse403()
{
HttpResponse response;
HttpMessage message;
char buffer[200];
size_t nbuf;
response = new(HttpResponse, "HTTP/1.1", 403, "Forbidden");
message = (HttpMessage)response;
@ -48,15 +46,6 @@ httpResponse403()
message->nbody = 0;
message->body = NULL;
nbuf = sprintf(buffer, "%d", message->nbody);
httpHeaderAdd(&(message->header),
new(HttpHeader,
"Content-Length",
sizeof("Content-Length")-1,
buffer,
nbuf));
return response;
}

18
src/http/response/404.c

@ -32,6 +32,7 @@
#include "http/message.h"
#include "http/header.h"
#include "utils/memory.h"
#define RESP_DATA "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n" \
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n" \
@ -45,35 +46,20 @@
HttpResponse
httpResponse404()
{
char buffer[200];
HttpResponse response;
HttpMessage message;
size_t nbuf;
response = new(HttpResponse, "HTTP/1.1", 404, "Not Found");
message = (HttpMessage)response;
httpHeaderAdd(&(message->header),
new(HttpHeader,
"Content-Type",
sizeof("Content-Type")-1,
"text/html",
sizeof("text/html")-1));
new(HttpHeader, CSTRA("Content-Type"), CSTRA("text/html")));
message->type = HTTP_MESSAGE_BUFFERED;
message->nbody = sizeof(RESP_DATA) - 1;
message->body = malloc(sizeof(RESP_DATA));
memcpy(message->body, RESP_DATA, sizeof(RESP_DATA));
nbuf = sprintf(buffer, "%d", message->nbody);
httpHeaderAdd(&(message->header),
new(HttpHeader,
"Content-Length",
sizeof("Content-Length")-1,
buffer,
nbuf));
return response;
}

30
src/http/response/asset.c

@ -33,6 +33,8 @@
#include "http/message.h"
#include "http/header.h"
#include "utils/memory.h"
HttpResponse
httpResponseAsset(
@ -47,8 +49,6 @@ httpResponseAsset(
size_t netag;
char mtime[200];
size_t nmtime;
char clen[200];
size_t nclen;
struct stat st;
HttpResponse response;
HttpMessage message;
@ -72,32 +72,12 @@ httpResponseAsset(
message->handle = handle;
message->nbody = st.st_size;
nclen = sprintf(clen, "%d", message->nbody);
httpHeaderAdd(&(message->header),
new(HttpHeader,
"Content-Type",
sizeof("Content-Type")-1,
mime,
nmime));
httpHeaderAdd(&(message->header),
new(HttpHeader,
"Content-Length",
sizeof("Content-Length")-1,
clen,
nclen));
new(HttpHeader, CSTRA("Content-Type"), mime, nmime));
httpHeaderAdd(&(message->header),
new(HttpHeader,
"ETag",
sizeof("ETag")-1,
etag,
netag));
new(HttpHeader, CSTRA("ETag"), etag, netag));
httpHeaderAdd(&(message->header),
new(HttpHeader,
"Last-Modified",
sizeof("Last-Modified")-1,
mtime,
nmtime));
new(HttpHeader, CSTRA("Last-Modified"), mtime, nmtime));
return response;
}

19
src/http/response/login_form.c

@ -33,6 +33,8 @@
#include "http/message.h"
#include "http/header.h"
#include "utils/memory.h"
#define RESP_DATA "<form action=\"/me/\" method=\"POST\">" \
"<input name=\"username\" type=\"text\" />" \
"<input type=\"submit\">" \
@ -41,20 +43,14 @@
HttpResponse
httpResponseLoginForm()
{
char buffer[200];
HttpResponse response;
HttpMessage message;
size_t nbuf;
response = new(HttpResponse, "HTTP/1.1", 200, "OK");
message = (HttpMessage)response;
httpHeaderAdd(&(message->header),
new(HttpHeader,
"Content-Type",
sizeof("Content-Type")-1,
"text/html",
sizeof("text/html")-1));
new(HttpHeader, CSTRA("Content-Type"), CSTRA("text/html")));
message->type = HTTP_MESSAGE_BUFFERED;
@ -62,15 +58,6 @@ httpResponseLoginForm()
message->body = malloc(message->nbody);
memcpy(message->body, RESP_DATA, message->nbody);
nbuf = sprintf(buffer, "%d", message->nbody);
httpHeaderAdd(&(message->header),
new(HttpHeader,
"Content-Length",
sizeof("Content-Length")-1,
buffer,
nbuf));
return response;
}

31
src/http/response/me.c

@ -33,6 +33,8 @@
#include "http/message.h"
#include "http/header.h"
#include "utils/memory.h"
#define RESP_DATA "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n" \
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n" \
@ -124,32 +126,18 @@
HttpResponse
httpResponseMe(char * uname)
{
char buffer[200];
HttpResponse response;
HttpMessage message;
size_t nbuf;
response = new(HttpResponse, "HTTP/1.1", 200, "OK");
message = (HttpMessage)response;
httpHeaderAdd(&(message->header),
new(HttpHeader,
"Content-Type",
sizeof("Content-Type")-1,
"text/html",
sizeof("text/html")-1));
new(HttpHeader, CSTRA("Content-Type"), CSTRA("text/html")));
httpHeaderAdd(&(message->header),
new(HttpHeader,
"Set-Cookie",
sizeof("Set-Cookie")-1,
"name=\"Georg Hopp\"",
sizeof("name=\"Georg Hopp\"")-1));
new(HttpHeader, CSTRA("Set-Cookie"), CSTRA("name=Georg+Hopp")));
httpHeaderAdd(&(message->header),
new(HttpHeader,
"Set-Cookie",
sizeof("Set-Cookie")-1,
"profession=\"coder\"",
sizeof("profession=\"coder\"")-1));
new(HttpHeader, CSTRA("Set-Cookie"), CSTRA("profession=coder")));
message->type = HTTP_MESSAGE_BUFFERED;
message->nbody = sizeof(RESP_DATA)-1-2+strlen(uname); //!< the two are the %s
@ -157,15 +145,6 @@ httpResponseMe(char * uname)
sprintf(message->body, RESP_DATA, uname);
//memcpy(message->body, RESP_DATA, sizeof(RESP_DATA)-1);
nbuf = sprintf(buffer, "%d", message->nbody);
httpHeaderAdd(&(message->header),
new(HttpHeader,
"Content-Length",
sizeof("Content-Length")-1,
buffer,
nbuf));
return response;
}

17
src/http/response/randval.c

@ -33,6 +33,8 @@
#include "http/message.h"
#include "http/header.h"
#include "utils/memory.h"
#define RESP_DATA "{\"ctime\":%ld,\"vnext\":%ld,\"value\":\"%02d\"}"
HttpResponse
@ -48,11 +50,7 @@ httpResponseRandval(time_t ctime, int value)
message = (HttpMessage)response;
httpHeaderAdd(&(message->header),
new(HttpHeader,
"Content-Type",
sizeof("Content-Type")-1,
"application/json",
sizeof("application/json")-1));
new(HttpHeader, CSTRA("Content-Type"), CSTRA("application/json")));
message->type = HTTP_MESSAGE_BUFFERED;
@ -64,15 +62,6 @@ httpResponseRandval(time_t ctime, int value)
message->body = malloc(nbuf);
memcpy(message->body, buffer, nbuf);
nbuf = sprintf(buffer, "%d", message->nbody);
httpHeaderAdd(&(message->header),
new(HttpHeader,
"Content-Length",
sizeof("Content-Length")-1,
buffer,
nbuf));
return response;
}

46
src/http/worker/add_common_header.c

@ -7,49 +7,45 @@
#include "http/message.h"
#include "http/response.h"
#include "utils/memory.h"
void
httpWorkerAddCommonHeader(HttpMessage request, HttpMessage response)
{
time_t t;
struct tm * tmp;
char buffer[200];
size_t ndate;
size_t nbuf;
if (httpMessageHasKeepAlive(request)) {
httpHeaderAdd(
&(response->header),
new(HttpHeader,
"Connection",
sizeof("Connection")-1,
"Keep-Alive",
sizeof("Keep-Alive")-1));
new(HttpHeader, CSTRA("Connection"), CSTRA("Keep-Alive")));
}
else {
httpHeaderAdd(
&(response->header),
new(HttpHeader,
"Connection",
sizeof("Connection")-1,
"Close",
sizeof("Close")-1));
new(HttpHeader, CSTRA("Connection"), CSTRA("Close")));
}
httpHeaderAdd(&(response->header),
new(HttpHeader,
"Server",
sizeof("Server")-1,
"testserver",
sizeof("testserver")-1));
t = time(NULL);
tmp = localtime(&t);
ndate = strftime(buffer, sizeof(buffer), "%a, %d %b %Y %T %Z", tmp);
new(HttpHeader, CSTRA("Server"), CSTRA("testserver")));
switch(((HttpResponse)response)->status) {
case 304:
break;
default:
nbuf = sprintf(buffer, "%d", response->nbody);
httpHeaderAdd(&(response->header),
new(HttpHeader, CSTRA("Content-Length"), buffer, nbuf));
}
t = time(NULL);
tmp = localtime(&t);
nbuf = strftime(buffer, sizeof(buffer), "%a, %d %b %Y %T %Z", tmp);
httpHeaderAdd(&(response->header),
new(HttpHeader,
"Date",
sizeof("Date")-1,
buffer,
ndate));
new(HttpHeader, CSTRA("Date"), buffer, nbuf));
}
// vim: set ts=4 sw=4:

5
src/http/worker/get_asset.c

@ -5,6 +5,8 @@
#include "http/request.h"
#include "http/response.h"
#include "utils/memory.h"
HttpMessage
httpWorkerGetAsset(
HttpRequest request,
@ -18,8 +20,7 @@ httpWorkerGetAsset(
header = httpHeaderGet(
&(((HttpMessage)request)->header),
"If-None-Match",
sizeof("If-None-Match")-1);
CSTRA("If-None-Match"));
if (NULL == header) {
match = "";

17
src/http/worker/process.c

@ -36,6 +36,8 @@
#include "http/parser.h"
#include "session.h"
#include "utils/memory.h"
HttpMessage httpWorkerGetAsset(HttpRequest, const char *, const char *, size_t);
void httpWorkerAddCommonHeader(HttpMessage, HttpMessage);
@ -58,8 +60,7 @@ httpWorkerProcess(HttpWorker this, int fd)
HttpMessage response = NULL;
HttpHeader cookie = httpHeaderGet(
&(rmessage->header),
"cookie",
sizeof("Cookie")-1);
CSTRA("cookie"));
if (NULL == this->session && NULL != cookie) {
int i;
@ -111,11 +112,7 @@ httpWorkerProcess(HttpWorker this, int fd)
httpHeaderAdd(
&(response->header),
new(HttpHeader,
"Set-Cookie",
sizeof("Set-Cookie")-1,
buffer,
nbuf));
new(HttpHeader, CSTRA("Set-Cookie"), buffer, nbuf));
}
}
@ -144,16 +141,14 @@ httpWorkerProcess(HttpWorker this, int fd)
response = httpWorkerGetAsset(
request,
"./assets/waldschrat.jpg",
"image/jpeg",
sizeof("image/jpeg")-1);
CSTRA("image/jpeg"));
}
if (0 == strcmp("/jquery/", request->uri)) {
response = httpWorkerGetAsset(
request,
"./assets/jquery-1.7.1.min.js",
"text/javascript",
sizeof("text/javascript")-1);
CSTRA("text/javascript"));
}
}

1
src/server/poll.c

@ -51,7 +51,6 @@ serverPoll(Server this) {
if (fda < fdb) {
memcpy(fda, fdb, sizeof(struct pollfd));
//memset(fdb, 0, sizeof(struct pollfd)); // this might be unneccessary
fdb--;
this->nfds--;
}

2
src/socket.c

@ -56,7 +56,7 @@ socketCtor(void * _this, va_list * params)
}
//! Make the socket REUSE a TIME_WAIT socket
setsockopt(this->handle, SOL_SOCKET, SO_REUSEADDR, &reUse, sizeof (reUse));
setsockopt(this->handle, SOL_SOCKET, SO_REUSEADDR, &reUse, sizeof(reUse));
return 0;
}

Loading…
Cancel
Save