Commit dfcbc4946cebed46aabe80f7d1643daf21f32d59
1 parent
fc4fd8f6
fix memory problems occured with latest changes
Showing
9 changed files
with
18 additions
and
15 deletions
| @@ -26,8 +26,8 @@ | @@ -26,8 +26,8 @@ | ||
| 26 | #ifndef __SERVER_H__ | 26 | #ifndef __SERVER_H__ |
| 27 | #define __SERVER_H__ | 27 | #define __SERVER_H__ |
| 28 | 28 | ||
| 29 | -#include <stdio.h> /* for printf() and fprintf() */ | ||
| 30 | -#include <poll.h> /* for select system call and related */ | 29 | +#include <stdio.h> // for printf() and fprintf() |
| 30 | +#include <poll.h> // for poll system call and related | ||
| 31 | 31 | ||
| 32 | #include "class.h" | 32 | #include "class.h" |
| 33 | #include "socket.h" | 33 | #include "socket.h" |
| @@ -25,7 +25,7 @@ | @@ -25,7 +25,7 @@ | ||
| 25 | #ifndef __SOCKET_H__ | 25 | #ifndef __SOCKET_H__ |
| 26 | #define __SOCKET_H__ | 26 | #define __SOCKET_H__ |
| 27 | 27 | ||
| 28 | -#include <arpa/inet.h> /* for in_port_t */ | 28 | +#include <arpa/inet.h> // for in_port_t |
| 29 | 29 | ||
| 30 | #include "class.h" | 30 | #include "class.h" |
| 31 | #include "logger.h" | 31 | #include "logger.h" |
| @@ -46,9 +46,9 @@ ctor(void * _this, va_list * params) { | @@ -46,9 +46,9 @@ ctor(void * _this, va_list * params) { | ||
| 46 | 46 | ||
| 47 | this->hash = sdbm((unsigned char *)name); | 47 | this->hash = sdbm((unsigned char *)name); |
| 48 | 48 | ||
| 49 | - this->value = malloc(sizeof(char*) * (++this->nvalue)); | ||
| 50 | - this->value[this->nvalue - 1] = malloc(strlen(value) + 1); | ||
| 51 | - strcpy(this->value[this->nvalue - 1], value); | 49 | + this->value = malloc(sizeof(char*) * (++(this->nvalue))); |
| 50 | + (this->value)[this->nvalue - 1] = malloc(strlen(value) + 1); | ||
| 51 | + strcpy((this->value)[this->nvalue - 1], value); | ||
| 52 | 52 | ||
| 53 | return 0; | 53 | return 0; |
| 54 | } | 54 | } |
| @@ -46,8 +46,11 @@ httpHeaderAdd(const HttpHeader * root, HttpHeader header) | @@ -46,8 +46,11 @@ httpHeaderAdd(const HttpHeader * root, HttpHeader header) | ||
| 46 | HttpHeader * found = tsearch(header, (void **)root, comp); | 46 | HttpHeader * found = tsearch(header, (void **)root, comp); |
| 47 | 47 | ||
| 48 | if (*found != header) { | 48 | if (*found != header) { |
| 49 | - (*found)->value = realloc((*found)->value, sizeof(char) * (++(*found)->nvalue)); | ||
| 50 | - (*found)->value[(*found)->nvalue - 1] = malloc(strlen(header->value) + 1); | 49 | + (*found)->value = realloc( |
| 50 | + (*found)->value, | ||
| 51 | + sizeof(char*) * (++(*found)->nvalue)); | ||
| 52 | + (*found)->value[(*found)->nvalue - 1] = malloc( | ||
| 53 | + strlen((header->value)[0]) + 1); | ||
| 51 | strcpy(((*found)->value)[(*found)->nvalue - 1], (header->value)[0]); | 54 | strcpy(((*found)->value)[(*found)->nvalue - 1], (header->value)[0]); |
| 52 | delete(&header); | 55 | delete(&header); |
| 53 | } | 56 | } |
| @@ -76,7 +76,7 @@ httpResponseMe(int value) | @@ -76,7 +76,7 @@ httpResponseMe(int value) | ||
| 76 | new(HttpHeader, "Set-Cookie", "profession=\"coder\"")); | 76 | new(HttpHeader, "Set-Cookie", "profession=\"coder\"")); |
| 77 | 77 | ||
| 78 | message->type = HTTP_MESSAGE_BUFFERED; | 78 | message->type = HTTP_MESSAGE_BUFFERED; |
| 79 | - message->nbody = sizeof(RESP_DATA) - 1; | 79 | + message->nbody = sizeof(RESP_DATA)-1-2; |
| 80 | message->body = calloc(1, sizeof(RESP_DATA)-2); | 80 | message->body = calloc(1, sizeof(RESP_DATA)-2); |
| 81 | sprintf(message->body, RESP_DATA, value); | 81 | sprintf(message->body, RESP_DATA, value); |
| 82 | 82 |
| @@ -67,7 +67,7 @@ serverPoll(Server this) { | @@ -67,7 +67,7 @@ serverPoll(Server this) { | ||
| 67 | case EINVAL: | 67 | case EINVAL: |
| 68 | case ENOMEM: | 68 | case ENOMEM: |
| 69 | doShutdown = 1; | 69 | doShutdown = 1; |
| 70 | - /* Fallthrough */ | 70 | + // DROP THROUGH |
| 71 | 71 | ||
| 72 | case EINTR: | 72 | case EINTR: |
| 73 | loggerLog(this->logger, LOGGER_CRIT, | 73 | loggerLog(this->logger, LOGGER_CRIT, |
| @@ -47,7 +47,7 @@ serverRead(Server this, unsigned int i) | @@ -47,7 +47,7 @@ serverRead(Server this, unsigned int i) | ||
| 47 | * \todo make sure all pending writes will be done before | 47 | * \todo make sure all pending writes will be done before |
| 48 | * close. | 48 | * close. |
| 49 | */ | 49 | */ |
| 50 | - /* DROP-THROUGH */ | 50 | + // DROP-THROUGH |
| 51 | 51 | ||
| 52 | case -1: | 52 | case -1: |
| 53 | /* | 53 | /* |
| @@ -88,12 +88,12 @@ main() | @@ -88,12 +88,12 @@ main() | ||
| 88 | 88 | ||
| 89 | close(shm); | 89 | close(shm); |
| 90 | 90 | ||
| 91 | - /* Block SIGALRM */ | 91 | + // Block SIGALRM |
| 92 | sigemptyset(&block_these); | 92 | sigemptyset(&block_these); |
| 93 | sigaddset(&block_these, SIGALRM); | 93 | sigaddset(&block_these, SIGALRM); |
| 94 | sigprocmask(SIG_BLOCK, &block_these, &pause_mask); | 94 | sigprocmask(SIG_BLOCK, &block_these, &pause_mask); |
| 95 | 95 | ||
| 96 | - /* Set up handler for SIGALRM */ | 96 | + // Set up handler for SIGALRM |
| 97 | sigemptyset(&s.sa_mask); | 97 | sigemptyset(&s.sa_mask); |
| 98 | sigaddset(&s.sa_mask, SIGINT); | 98 | sigaddset(&s.sa_mask, SIGINT); |
| 99 | s.sa_flags = 0; | 99 | s.sa_flags = 0; |
| @@ -22,8 +22,8 @@ | @@ -22,8 +22,8 @@ | ||
| 22 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 22 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 23 | */ | 23 | */ |
| 24 | 24 | ||
| 25 | -#include <stdio.h> /* for printf() and fprintf() */ | ||
| 26 | -#include <unistd.h> /* for getopt */ | 25 | +#include <stdio.h> // for printf() and fprintf() |
| 26 | +#include <unistd.h> // for getopt | ||
| 27 | #include <stdlib.h> | 27 | #include <stdlib.h> |
| 28 | 28 | ||
| 29 | 29 |
Please
register
or
login
to post a comment