From 3dac803c4158c56bde557910ae93abbd7097a1fa Mon Sep 17 00:00:00 2001 From: Georg Hopp Date: Fri, 10 Feb 2012 00:27:51 +0100 Subject: [PATCH] fix memory leak created while changing things --- src/http/header/get.c | 4 ++-- src/http/request/parser/get_header.c | 2 +- src/testserver.c | 7 +++++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/http/header/get.c b/src/http/header/get.c index f46b47f..65e9748 100644 --- a/src/http/header/get.c +++ b/src/http/header/get.c @@ -31,11 +31,11 @@ char * httpHeaderGet(const HttpHeader header[], int nheader, const char * name) { unsigned long hash = sdbm((unsigned char *)name); - HttpHeader found; + HttpHeader * found; found = bsearch(&hash, header, nheader, sizeof(HttpHeader), comp); - return (NULL != found)? found->value : NULL; + return (NULL != *found)? (*found)->value : NULL; } // vim: set ts=4 sw=4: diff --git a/src/http/request/parser/get_header.c b/src/http/request/parser/get_header.c index eb1cab8..4b01309 100644 --- a/src/http/request/parser/get_header.c +++ b/src/http/request/parser/get_header.c @@ -9,7 +9,7 @@ httpRequestParserGetHeader(HttpRequest request, char * line) char * name = line; char * value = strchr(line, ':'); - *value = 0; + *(value++) = 0; for (; *value == ' ' && *value != 0; value++); (request->header)[request->nheader++] = new(HttpHeader, name, value); diff --git a/src/testserver.c b/src/testserver.c index 818776f..0ad825e 100644 --- a/src/testserver.c +++ b/src/testserver.c @@ -2,6 +2,9 @@ #include #include +#include +#include + #include "server.h" #include "logger.h" #include "http/request_parser.h" @@ -13,11 +16,15 @@ int main() { + struct rlimit limit = {RLIM_INFINITY, RLIM_INFINITY}; + Logger logger = new(LoggerStderr, LOGGER_ERR); HttpRequestParser parser = new(HttpRequestParser); Server server = new(Server, logger, parser, 11212, SOMAXCONN); //Server server = new(Server, logger, parser, 11212, 20); + setrlimit(RLIMIT_CPU, &limit); + init_signals(); serverRun(server);