X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fnginx.c;h=36d3d8d2bed85f9de5867f9f381f0102e85f51c0;hb=f1b5b8611d87a7904c31ae4b28ea47f11f3c38b9;hp=2de3633b41c6ffdc2feb1ffc64d329bca7092f9b;hpb=3f391479bfc45d0ff6e0c7b87c899e41a192f392;p=collectd.git diff --git a/src/nginx.c b/src/nginx.c index 2de3633b..36d3d8d2 100644 --- a/src/nginx.c +++ b/src/nginx.c @@ -1,6 +1,7 @@ /** * collectd - src/nginx.c * Copyright (C) 2006,2007 Florian octo Forster + * Copyright (C) 2008 Sebastian Harl * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -18,6 +19,7 @@ * * Authors: * Florian octo Forster + * Sebastian Harl **/ #include "collectd.h" @@ -36,10 +38,9 @@ static char *cacert = NULL; static CURL *curl = NULL; -#define ABUFFER_SIZE 16384 -static char nginx_buffer[ABUFFER_SIZE]; -static int nginx_buffer_len = 0; -static char nginx_curl_error[CURL_ERROR_SIZE]; +static char nginx_buffer[16384]; +static size_t nginx_buffer_len = 0; +static char nginx_curl_error[CURL_ERROR_SIZE]; static const char *config_keys[] = { @@ -57,17 +58,19 @@ static size_t nginx_curl_callback (void *buf, size_t size, size_t nmemb, { size_t len = size * nmemb; - if ((nginx_buffer_len + len) >= ABUFFER_SIZE) + /* Check if the data fits into the memory. If not, truncate it. */ + if ((nginx_buffer_len + len) >= sizeof (nginx_buffer)) { - len = (ABUFFER_SIZE - 1) - nginx_buffer_len; + assert (sizeof (nginx_buffer) > nginx_buffer_len); + len = (sizeof (nginx_buffer) - 1) - nginx_buffer_len; } if (len <= 0) return (len); - memcpy (nginx_buffer + nginx_buffer_len, (char *) buf, len); + memcpy (&nginx_buffer[nginx_buffer_len], buf, len); nginx_buffer_len += len; - nginx_buffer[nginx_buffer_len] = '\0'; + nginx_buffer[nginx_buffer_len] = 0; return (len); } @@ -139,7 +142,9 @@ static int init (void) curl_easy_setopt (curl, CURLOPT_URL, url); } - if ((verify_peer == NULL) || (strcmp (verify_peer, "true") == 0)) + curl_easy_setopt (curl, CURLOPT_FOLLOWLOCATION, 1); + + if ((verify_peer == NULL) || IS_TRUE (verify_peer)) { curl_easy_setopt (curl, CURLOPT_SSL_VERIFYPEER, 1); } @@ -148,7 +153,7 @@ static int init (void) curl_easy_setopt (curl, CURLOPT_SSL_VERIFYPEER, 0); } - if ((verify_host == NULL) || (strcmp (verify_host, "true") == 0)) + if ((verify_host == NULL) || IS_TRUE (verify_host)) { curl_easy_setopt (curl, CURLOPT_SSL_VERIFYHOST, 2); }