Browse Source

changed callocs of memory not needed to be initialized to malloc

master
Georg Hopp 14 years ago
parent
commit
6591c0a6c7
  1. 4
      include/http/header.h
  2. 6
      include/http/request/parser.h
  3. 2
      src/Makefile.am
  4. 7
      src/http/header.c
  5. 1
      src/http/header/add.c
  6. 2
      src/http/header/to_string.c
  7. 2
      src/http/message/header_size_get.c
  8. 4
      src/http/request/parser/get_body.c
  9. 6
      src/http/request/parser/get_header.c
  10. 52
      src/http/request/parser/get_request_line.c
  11. 2
      src/http/request/parser/parse.c
  12. 2
      src/http/response/404.c
  13. 2
      src/http/response/me.c

4
include/http/header.h

@ -38,13 +38,11 @@ CLASS(HttpHeader) {
size_t nname; //!< len of name without \0
size_t nvalue[N_VALUES]; //!< len of value without \0
size_t cvalue; //!< count of values up to N_VALUE
size_t size; //!< full size of this header
};
HttpHeader httpHeaderParse(char * line); // @INFO: destructive
HttpHeader httpHeaderAdd(const HttpHeader *, HttpHeader);
HttpHeader httpHeaderGet(const HttpHeader *, const char *, size_t);
size_t httpHeaderSizeGet(HttpHeader);
size_t httpHeaderToString(HttpHeader, char *);
#endif // __HTTP_HEADER_H__

6
include/http/request/parser.h

@ -63,8 +63,10 @@ CLASS(HttpRequestParser) {
ssize_t httpRequestParserParse(HttpRequestParser, int);
void httpRequestParserGetBody(HttpRequestParser);
void httpRequestParserGetRequestLine(HttpRequest, char *);
void httpRequestParserGetHeader(HttpRequest, char *, char *);
void httpRequestParserGetRequestLine(
HttpRequest, const char *, const char *);
void httpRequestParserGetHeader(
HttpRequest, const char *, const char *);
#endif // __HTTP_REQUEST_PARSER_H__

2
src/Makefile.am

@ -29,7 +29,7 @@ WORKER = http/worker.c http/worker/process.c http/worker/write.c \
http/worker/get_asset.c http/worker/add_common_header.c
WRITER = http/response/writer.c http/response/writer/write.c
HEADER = http/header.c http/header/get.c http/header/add.c \
http/header/size_get.c http/header/to_string.c
http/header/to_string.c
PARSER = http/request/parser.c http/request/parser/get_header.c \
http/request/parser/parse.c http/request/parser/get_request_line.c \
http/request/parser/get_body.c

7
src/http/header.c

@ -43,14 +43,17 @@ httpHeaderCtor(void * _this, va_list * params) {
value = va_arg(* params, char *);
this->nvalue[0] = va_arg(* params, size_t);
this->name = malloc(this->nname);
this->name = malloc(this->nname + 1);
this->name[this->nname] = 0;
memcpy(this->name, name, this->nname);
this->hash = sdbm((unsigned char *)name, this->nname);
(this->value)[0] = malloc((this->nvalue)[0]);
(this->value)[0] = malloc((this->nvalue)[0] + 1);
(this->value)[0][(this->nvalue)[0]] = 0;
memcpy((this->value)[0], value, (this->nvalue)[0]);
this->cvalue = 1;
this->size = this->nname + 2 + (this->nvalue)[0] + 2;
return 0;
}

1
src/http/header/add.c

@ -58,6 +58,7 @@ httpHeaderAdd(const HttpHeader * root, HttpHeader header)
}
(found->nvalue)[found->cvalue] = (header->nvalue)[0];
(found->value)[(found->cvalue)++] = (header->value)[0];
found->size += header->size;
(header->value)[0] = NULL;
delete(header);
}

2
src/http/header/to_string.c

@ -28,7 +28,7 @@
size_t
httpHeaderToString(HttpHeader header, char * string)
{
size_t size = httpHeaderSizeGet(header);
size_t size = header->size;
int i;
for (i=0; i<header->cvalue; i++) {

2
src/http/message/header_size_get.c

@ -37,7 +37,7 @@ void
addHeaderSize(const void * node, const VISIT which, const int depth)
{
if (endorder == which || leaf == which) {
size += httpHeaderSizeGet(*(HttpHeader *)node);
size += (*(HttpHeader *)node)->size;
}
}

4
src/http/request/parser/get_body.c

@ -55,7 +55,9 @@ httpRequestParserGetBody(HttpRequestParser this)
else {
message->type = HTTP_MESSAGE_BUFFERED;
message->nbody = atoi((clen->value)[0]);
message->body = calloc(1, message->nbody);
if (0 < message->nbody) {
message->body = malloc(message->nbody);
}
message->dbody = 0;
}
}

6
src/http/request/parser/get_header.c

@ -36,15 +36,15 @@ httpRequestParserGetHeader(
const char * line,
const char * line_end)
{
char * name = line;
char * value = strchr(line, ':');
const char * name = line;
char * value = memchr(line, ':', line_end - line);
size_t nname = (value++) - name;
for (; *value == ' ' && *value != 0; value++);
httpHeaderAdd(
&(message->header),
new(HttpHeader, name, nname, value, line_end-value));
new(HttpHeader, name, nname, value, line_end - value));
}
// vim: set ts=4 sw=4:

52
src/http/request/parser/get_request_line.c

@ -27,45 +27,18 @@
#include "http/request.h"
#include "http/message.h"
#define MAX(x,y) ((x) > (y) ? (x) : (y))
#define MIN(x,y) ((x) < (y) ? (x) : (y))
#define MIN_SIZE(x,y) (MAX(strlen((x)), (y)))
enum e_method {
OPTIONS=0,
GET,
HEAD,
POST,
PUT,
DELETE,
TRACE,
CONNECT
};
#define N_METHODS 8
static
const
char * method[N_METHODS] = {
"OPTIONS",
"GET",
"HEAD",
"POST",
"PUT",
"DELETE",
"TRACE",
"CONNECT"
};
ssize_t
httpRequestParserGetRequestLine(HttpRequestParser this, char * cr)
void
httpRequestParserGetRequestLine(
HttpRequest request,
const char * line,
const char * line_end)
{
char * method, * uri, * version;
HttpMessage message = (HttpMessage)request;
int mlen, ulen, vlen;
method = line;
uri = strchr(line, ' ');
uri = memchr(line, ' ', line_end - line);
if (NULL == uri)
return;
@ -73,7 +46,7 @@ httpRequestParserGetRequestLine(HttpRequestParser this, char * cr)
mlen = uri - method;
for (; *uri == ' ' && *uri != 0; uri++);
version = strchr(uri, ' ');
version = memchr(uri, ' ', line_end - uri);
if (NULL == version)
return;
@ -81,13 +54,16 @@ httpRequestParserGetRequestLine(HttpRequestParser this, char * cr)
ulen = version - uri;
for (; *version == ' ' && *version != 0; version++);
vlen = strlen(version);
vlen = line_end - uri;
request->method = calloc(1, mlen + 1);
request->method = malloc(mlen + 1);
request->method[mlen] = 0;
memcpy(request->method, method, mlen);
request->uri = calloc(1, ulen + 1);
request->uri = malloc(ulen + 1);
request->uri[ulen] = 0;
memcpy(request->uri, uri, ulen);
message->version = calloc(1, vlen + 1);
message->version = malloc(vlen + 1);
message->version[vlen] = 0;
memcpy(message->version, version, vlen);
}

2
src/http/request/parser/parse.c

@ -86,7 +86,7 @@ httpRequestParserParse(HttpRequestParser this, int fd)
break;
}
httpRequestParserGetRequestLine(this->cur_request, line);
httpRequestParserGetRequestLine(this->cur_request, line, line_end);
if (! httpRequestHasValidMethod(this->cur_request)) {
cbufRelease(this->buffer);
this->ourLock = FALSE;

2
src/http/response/404.c

@ -62,7 +62,7 @@ httpResponse404()
message->type = HTTP_MESSAGE_BUFFERED;
message->nbody = sizeof(RESP_DATA) - 1;
message->body = calloc(1, sizeof(RESP_DATA));
message->body = malloc(sizeof(RESP_DATA));
memcpy(message->body, RESP_DATA, sizeof(RESP_DATA));
nbuf = sprintf(buffer, "%d", message->nbody);

2
src/http/response/me.c

@ -90,7 +90,7 @@ httpResponseMe(int value)
message->type = HTTP_MESSAGE_BUFFERED;
message->nbody = sizeof(RESP_DATA)-1-2;
message->body = calloc(1, sizeof(RESP_DATA)-2);
message->body = malloc(sizeof(RESP_DATA)-2);
sprintf(message->body, RESP_DATA, value);
nbuf = sprintf(buffer, "%d", message->nbody);

Loading…
Cancel
Save