Commit 1d238aa55d48674707773d95b848a2bca5693749

Authored by Georg Hopp
1 parent a0ec357e

as i have a lot of static string initialization with the length of that sting a …

…created and used a macro to prevent errors
... ... @@ -23,8 +23,12 @@
23 23 #ifndef __UTILS_MEMORY_H__
24 24 #define __UTILS_MEMORY_H__
25 25
  26 +#define CSTRA(val) val, sizeof(val)-1 //!< Const STRing Argument
  27 +
26 28 #define FREE(val) (ffree((void**)&(val)))
27 29
28 30 void ffree(void **);
29 31
30 32 #endif // __UTILS_MEMORY_H__
  33 +
  34 +// vim: set ts=4 sw=4:
... ...
... ... @@ -28,6 +28,8 @@
28 28 #include "http/request.h"
29 29 #include "http/header.h"
30 30
  31 +#include "utils/memory.h"
  32 +
31 33 #ifndef TRUE
32 34 #define TRUE 1
33 35 #endif
... ... @@ -43,10 +45,7 @@ httpMessageHasKeepAlive(HttpMessage message)
43 45 size_t size;
44 46 char * value;
45 47
46   - header = httpHeaderGet(
47   - &(message->header),
48   - "connection",
49   - sizeof("connection")-1);
  48 + header = httpHeaderGet(&(message->header), CSTRA("connection"));
50 49
51 50 if (NULL == header) {
52 51 return 0;
... ...
... ... @@ -29,6 +29,7 @@
29 29 #include "http/message.h"
30 30 #include "http/header.h"
31 31
  32 +#include "utils/memory.h"
32 33
33 34 HttpResponse
34 35 httpResponse304(
... ... @@ -47,23 +48,11 @@ httpResponse304(
47 48 message->body = NULL;
48 49
49 50 httpHeaderAdd(&(message->header),
50   - new(HttpHeader,
51   - "Content-Type",
52   - sizeof("Content-Type")-1,
53   - mime,
54   - nmime));
  51 + new(HttpHeader, CSTRA("Content-Type"), mime, nmime));
55 52 httpHeaderAdd(&(message->header),
56   - new(HttpHeader,
57   - "ETag",
58   - sizeof("ETag")-1,
59   - etag,
60   - netag));
  53 + new(HttpHeader, CSTRA("ETag"), etag, netag));
61 54 httpHeaderAdd(&(message->header),
62   - new(HttpHeader,
63   - "Last-Modified",
64   - sizeof("Last-Modified")-1,
65   - mtime,
66   - nmtime));
  55 + new(HttpHeader, CSTRA("Last-Modified"), mtime, nmtime));
67 56
68 57 return response;
69 58 }
... ...
... ... @@ -38,8 +38,6 @@ httpResponse403()
38 38 {
39 39 HttpResponse response;
40 40 HttpMessage message;
41   - char buffer[200];
42   - size_t nbuf;
43 41
44 42 response = new(HttpResponse, "HTTP/1.1", 403, "Forbidden");
45 43 message = (HttpMessage)response;
... ... @@ -48,15 +46,6 @@ httpResponse403()
48 46 message->nbody = 0;
49 47 message->body = NULL;
50 48
51   - nbuf = sprintf(buffer, "%d", message->nbody);
52   -
53   - httpHeaderAdd(&(message->header),
54   - new(HttpHeader,
55   - "Content-Length",
56   - sizeof("Content-Length")-1,
57   - buffer,
58   - nbuf));
59   -
60 49 return response;
61 50 }
62 51
... ...
... ... @@ -32,6 +32,7 @@
32 32 #include "http/message.h"
33 33 #include "http/header.h"
34 34
  35 +#include "utils/memory.h"
35 36
36 37 #define RESP_DATA "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n" \
37 38 "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n" \
... ... @@ -45,35 +46,20 @@
45 46 HttpResponse
46 47 httpResponse404()
47 48 {
48   - char buffer[200];
49 49 HttpResponse response;
50 50 HttpMessage message;
51   - size_t nbuf;
52 51
53 52 response = new(HttpResponse, "HTTP/1.1", 404, "Not Found");
54 53 message = (HttpMessage)response;
55 54
56 55 httpHeaderAdd(&(message->header),
57   - new(HttpHeader,
58   - "Content-Type",
59   - sizeof("Content-Type")-1,
60   - "text/html",
61   - sizeof("text/html")-1));
  56 + new(HttpHeader, CSTRA("Content-Type"), CSTRA("text/html")));
62 57
63 58 message->type = HTTP_MESSAGE_BUFFERED;
64 59 message->nbody = sizeof(RESP_DATA) - 1;
65 60 message->body = malloc(sizeof(RESP_DATA));
66 61 memcpy(message->body, RESP_DATA, sizeof(RESP_DATA));
67 62
68   - nbuf = sprintf(buffer, "%d", message->nbody);
69   -
70   - httpHeaderAdd(&(message->header),
71   - new(HttpHeader,
72   - "Content-Length",
73   - sizeof("Content-Length")-1,
74   - buffer,
75   - nbuf));
76   -
77 63 return response;
78 64 }
79 65
... ...
... ... @@ -33,6 +33,8 @@
33 33 #include "http/message.h"
34 34 #include "http/header.h"
35 35
  36 +#include "utils/memory.h"
  37 +
36 38
37 39 HttpResponse
38 40 httpResponseAsset(
... ... @@ -47,8 +49,6 @@ httpResponseAsset(
47 49 size_t netag;
48 50 char mtime[200];
49 51 size_t nmtime;
50   - char clen[200];
51   - size_t nclen;
52 52 struct stat st;
53 53 HttpResponse response;
54 54 HttpMessage message;
... ... @@ -72,32 +72,12 @@ httpResponseAsset(
72 72 message->handle = handle;
73 73 message->nbody = st.st_size;
74 74
75   - nclen = sprintf(clen, "%d", message->nbody);
76   -
77   - httpHeaderAdd(&(message->header),
78   - new(HttpHeader,
79   - "Content-Type",
80   - sizeof("Content-Type")-1,
81   - mime,
82   - nmime));
83 75 httpHeaderAdd(&(message->header),
84   - new(HttpHeader,
85   - "Content-Length",
86   - sizeof("Content-Length")-1,
87   - clen,
88   - nclen));
  76 + new(HttpHeader, CSTRA("Content-Type"), mime, nmime));
89 77 httpHeaderAdd(&(message->header),
90   - new(HttpHeader,
91   - "ETag",
92   - sizeof("ETag")-1,
93   - etag,
94   - netag));
  78 + new(HttpHeader, CSTRA("ETag"), etag, netag));
95 79 httpHeaderAdd(&(message->header),
96   - new(HttpHeader,
97   - "Last-Modified",
98   - sizeof("Last-Modified")-1,
99   - mtime,
100   - nmtime));
  80 + new(HttpHeader, CSTRA("Last-Modified"), mtime, nmtime));
101 81
102 82 return response;
103 83 }
... ...
... ... @@ -33,6 +33,8 @@
33 33 #include "http/message.h"
34 34 #include "http/header.h"
35 35
  36 +#include "utils/memory.h"
  37 +
36 38 #define RESP_DATA "<form action=\"/me/\" method=\"POST\">" \
37 39 "<input name=\"username\" type=\"text\" />" \
38 40 "<input type=\"submit\">" \
... ... @@ -41,20 +43,14 @@
41 43 HttpResponse
42 44 httpResponseLoginForm()
43 45 {
44   - char buffer[200];
45 46 HttpResponse response;
46 47 HttpMessage message;
47   - size_t nbuf;
48 48
49 49 response = new(HttpResponse, "HTTP/1.1", 200, "OK");
50 50 message = (HttpMessage)response;
51 51
52 52 httpHeaderAdd(&(message->header),
53   - new(HttpHeader,
54   - "Content-Type",
55   - sizeof("Content-Type")-1,
56   - "text/html",
57   - sizeof("text/html")-1));
  53 + new(HttpHeader, CSTRA("Content-Type"), CSTRA("text/html")));
58 54
59 55 message->type = HTTP_MESSAGE_BUFFERED;
60 56
... ... @@ -62,15 +58,6 @@ httpResponseLoginForm()
62 58 message->body = malloc(message->nbody);
63 59 memcpy(message->body, RESP_DATA, message->nbody);
64 60
65   - nbuf = sprintf(buffer, "%d", message->nbody);
66   -
67   - httpHeaderAdd(&(message->header),
68   - new(HttpHeader,
69   - "Content-Length",
70   - sizeof("Content-Length")-1,
71   - buffer,
72   - nbuf));
73   -
74 61 return response;
75 62 }
76 63
... ...
... ... @@ -33,6 +33,8 @@
33 33 #include "http/message.h"
34 34 #include "http/header.h"
35 35
  36 +#include "utils/memory.h"
  37 +
36 38
37 39 #define RESP_DATA "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n" \
38 40 "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n" \
... ... @@ -124,32 +126,18 @@
124 126 HttpResponse
125 127 httpResponseMe(char * uname)
126 128 {
127   - char buffer[200];
128 129 HttpResponse response;
129 130 HttpMessage message;
130   - size_t nbuf;
131 131
132 132 response = new(HttpResponse, "HTTP/1.1", 200, "OK");
133 133 message = (HttpMessage)response;
134 134
135 135 httpHeaderAdd(&(message->header),
136   - new(HttpHeader,
137   - "Content-Type",
138   - sizeof("Content-Type")-1,
139   - "text/html",
140   - sizeof("text/html")-1));
  136 + new(HttpHeader, CSTRA("Content-Type"), CSTRA("text/html")));
141 137 httpHeaderAdd(&(message->header),
142   - new(HttpHeader,
143   - "Set-Cookie",
144   - sizeof("Set-Cookie")-1,
145   - "name=\"Georg Hopp\"",
146   - sizeof("name=\"Georg Hopp\"")-1));
  138 + new(HttpHeader, CSTRA("Set-Cookie"), CSTRA("name=Georg+Hopp")));
147 139 httpHeaderAdd(&(message->header),
148   - new(HttpHeader,
149   - "Set-Cookie",
150   - sizeof("Set-Cookie")-1,
151   - "profession=\"coder\"",
152   - sizeof("profession=\"coder\"")-1));
  140 + new(HttpHeader, CSTRA("Set-Cookie"), CSTRA("profession=coder")));
153 141
154 142 message->type = HTTP_MESSAGE_BUFFERED;
155 143 message->nbody = sizeof(RESP_DATA)-1-2+strlen(uname); //!< the two are the %s
... ... @@ -157,15 +145,6 @@ httpResponseMe(char * uname)
157 145 sprintf(message->body, RESP_DATA, uname);
158 146 //memcpy(message->body, RESP_DATA, sizeof(RESP_DATA)-1);
159 147
160   - nbuf = sprintf(buffer, "%d", message->nbody);
161   -
162   - httpHeaderAdd(&(message->header),
163   - new(HttpHeader,
164   - "Content-Length",
165   - sizeof("Content-Length")-1,
166   - buffer,
167   - nbuf));
168   -
169 148 return response;
170 149 }
171 150
... ...
... ... @@ -33,6 +33,8 @@
33 33 #include "http/message.h"
34 34 #include "http/header.h"
35 35
  36 +#include "utils/memory.h"
  37 +
36 38 #define RESP_DATA "{\"ctime\":%ld,\"vnext\":%ld,\"value\":\"%02d\"}"
37 39
38 40 HttpResponse
... ... @@ -48,11 +50,7 @@ httpResponseRandval(time_t ctime, int value)
48 50 message = (HttpMessage)response;
49 51
50 52 httpHeaderAdd(&(message->header),
51   - new(HttpHeader,
52   - "Content-Type",
53   - sizeof("Content-Type")-1,
54   - "application/json",
55   - sizeof("application/json")-1));
  53 + new(HttpHeader, CSTRA("Content-Type"), CSTRA("application/json")));
56 54
57 55 message->type = HTTP_MESSAGE_BUFFERED;
58 56
... ... @@ -64,15 +62,6 @@ httpResponseRandval(time_t ctime, int value)
64 62 message->body = malloc(nbuf);
65 63 memcpy(message->body, buffer, nbuf);
66 64
67   - nbuf = sprintf(buffer, "%d", message->nbody);
68   -
69   - httpHeaderAdd(&(message->header),
70   - new(HttpHeader,
71   - "Content-Length",
72   - sizeof("Content-Length")-1,
73   - buffer,
74   - nbuf));
75   -
76 65 return response;
77 66 }
78 67
... ...
... ... @@ -7,49 +7,45 @@
7 7 #include "http/message.h"
8 8 #include "http/response.h"
9 9
  10 +#include "utils/memory.h"
  11 +
10 12 void
11 13 httpWorkerAddCommonHeader(HttpMessage request, HttpMessage response)
12 14 {
13 15 time_t t;
14 16 struct tm * tmp;
15 17 char buffer[200];
16   - size_t ndate;
  18 + size_t nbuf;
17 19
18 20 if (httpMessageHasKeepAlive(request)) {
19 21 httpHeaderAdd(
20 22 &(response->header),
21   - new(HttpHeader,
22   - "Connection",
23   - sizeof("Connection")-1,
24   - "Keep-Alive",
25   - sizeof("Keep-Alive")-1));
  23 + new(HttpHeader, CSTRA("Connection"), CSTRA("Keep-Alive")));
26 24 }
27 25 else {
28 26 httpHeaderAdd(
29 27 &(response->header),
30   - new(HttpHeader,
31   - "Connection",
32   - sizeof("Connection")-1,
33   - "Close",
34   - sizeof("Close")-1));
  28 + new(HttpHeader, CSTRA("Connection"), CSTRA("Close")));
35 29 }
36 30
37 31 httpHeaderAdd(&(response->header),
38   - new(HttpHeader,
39   - "Server",
40   - sizeof("Server")-1,
41   - "testserver",
42   - sizeof("testserver")-1));
43   -
44   - t = time(NULL);
45   - tmp = localtime(&t);
46   - ndate = strftime(buffer, sizeof(buffer), "%a, %d %b %Y %T %Z", tmp);
  32 + new(HttpHeader, CSTRA("Server"), CSTRA("testserver")));
  33 +
  34 + switch(((HttpResponse)response)->status) {
  35 + case 304:
  36 + break;
  37 +
  38 + default:
  39 + nbuf = sprintf(buffer, "%d", response->nbody);
  40 + httpHeaderAdd(&(response->header),
  41 + new(HttpHeader, CSTRA("Content-Length"), buffer, nbuf));
  42 + }
  43 +
  44 + t = time(NULL);
  45 + tmp = localtime(&t);
  46 + nbuf = strftime(buffer, sizeof(buffer), "%a, %d %b %Y %T %Z", tmp);
47 47 httpHeaderAdd(&(response->header),
48   - new(HttpHeader,
49   - "Date",
50   - sizeof("Date")-1,
51   - buffer,
52   - ndate));
  48 + new(HttpHeader, CSTRA("Date"), buffer, nbuf));
53 49 }
54 50
55 51 // vim: set ts=4 sw=4:
... ...
... ... @@ -5,6 +5,8 @@
5 5 #include "http/request.h"
6 6 #include "http/response.h"
7 7
  8 +#include "utils/memory.h"
  9 +
8 10 HttpMessage
9 11 httpWorkerGetAsset(
10 12 HttpRequest request,
... ... @@ -18,8 +20,7 @@ httpWorkerGetAsset(
18 20
19 21 header = httpHeaderGet(
20 22 &(((HttpMessage)request)->header),
21   - "If-None-Match",
22   - sizeof("If-None-Match")-1);
  23 + CSTRA("If-None-Match"));
23 24
24 25 if (NULL == header) {
25 26 match = "";
... ...
... ... @@ -36,6 +36,8 @@
36 36 #include "http/parser.h"
37 37 #include "session.h"
38 38
  39 +#include "utils/memory.h"
  40 +
39 41 HttpMessage httpWorkerGetAsset(HttpRequest, const char *, const char *, size_t);
40 42 void httpWorkerAddCommonHeader(HttpMessage, HttpMessage);
41 43
... ... @@ -58,8 +60,7 @@ httpWorkerProcess(HttpWorker this, int fd)
58 60 HttpMessage response = NULL;
59 61 HttpHeader cookie = httpHeaderGet(
60 62 &(rmessage->header),
61   - "cookie",
62   - sizeof("Cookie")-1);
  63 + CSTRA("cookie"));
63 64
64 65 if (NULL == this->session && NULL != cookie) {
65 66 int i;
... ... @@ -111,11 +112,7 @@ httpWorkerProcess(HttpWorker this, int fd)
111 112
112 113 httpHeaderAdd(
113 114 &(response->header),
114   - new(HttpHeader,
115   - "Set-Cookie",
116   - sizeof("Set-Cookie")-1,
117   - buffer,
118   - nbuf));
  115 + new(HttpHeader, CSTRA("Set-Cookie"), buffer, nbuf));
119 116 }
120 117 }
121 118
... ... @@ -144,16 +141,14 @@ httpWorkerProcess(HttpWorker this, int fd)
144 141 response = httpWorkerGetAsset(
145 142 request,
146 143 "./assets/waldschrat.jpg",
147   - "image/jpeg",
148   - sizeof("image/jpeg")-1);
  144 + CSTRA("image/jpeg"));
149 145 }
150 146
151 147 if (0 == strcmp("/jquery/", request->uri)) {
152 148 response = httpWorkerGetAsset(
153 149 request,
154 150 "./assets/jquery-1.7.1.min.js",
155   - "text/javascript",
156   - sizeof("text/javascript")-1);
  151 + CSTRA("text/javascript"));
157 152 }
158 153 }
159 154
... ...
... ... @@ -51,7 +51,6 @@ serverPoll(Server this) {
51 51
52 52 if (fda < fdb) {
53 53 memcpy(fda, fdb, sizeof(struct pollfd));
54   - //memset(fdb, 0, sizeof(struct pollfd)); // this might be unneccessary
55 54 fdb--;
56 55 this->nfds--;
57 56 }
... ...
... ... @@ -56,7 +56,7 @@ socketCtor(void * _this, va_list * params)
56 56 }
57 57
58 58 //! Make the socket REUSE a TIME_WAIT socket
59   - setsockopt(this->handle, SOL_SOCKET, SO_REUSEADDR, &reUse, sizeof (reUse));
  59 + setsockopt(this->handle, SOL_SOCKET, SO_REUSEADDR, &reUse, sizeof(reUse));
60 60
61 61 return 0;
62 62 }
... ...
Please register or login to post a comment