diff options
Diffstat (limited to 'plugins/check_curl.d')
| -rw-r--r-- | plugins/check_curl.d/check_curl_helpers.c | 14 | ||||
| -rw-r--r-- | plugins/check_curl.d/check_curl_helpers.h | 4 |
2 files changed, 17 insertions, 1 deletions
diff --git a/plugins/check_curl.d/check_curl_helpers.c b/plugins/check_curl.d/check_curl_helpers.c index d49d8f07..e4e7bef6 100644 --- a/plugins/check_curl.d/check_curl_helpers.c +++ b/plugins/check_curl.d/check_curl_helpers.c | |||
| @@ -128,8 +128,20 @@ check_curl_configure_curl(const check_curl_static_curl_config config, | |||
| 128 | char dnscache[DEFAULT_BUFFER_SIZE]; | 128 | char dnscache[DEFAULT_BUFFER_SIZE]; |
| 129 | char addrstr[DEFAULT_BUFFER_SIZE / 2]; | 129 | char addrstr[DEFAULT_BUFFER_SIZE / 2]; |
| 130 | if (working_state.use_ssl && working_state.host_name != NULL) { | 130 | if (working_state.use_ssl && working_state.host_name != NULL) { |
| 131 | char *tmp_mod_address; | ||
| 132 | |||
| 133 | /* lookup_host() requires an IPv6 address without the brackets. */ | ||
| 134 | if ((strnlen(working_state.server_address, MAX_IPV4_HOSTLENGTH) > 2) && | ||
| 135 | (working_state.server_address[0] == '[')) { | ||
| 136 | // Duplicate and strip the leading '[' | ||
| 137 | tmp_mod_address = | ||
| 138 | strndup(working_state.server_address + 1, strlen(working_state.server_address) - 2); | ||
| 139 | } else { | ||
| 140 | tmp_mod_address = working_state.server_address; | ||
| 141 | } | ||
| 142 | |||
| 131 | int res; | 143 | int res; |
| 132 | if ((res = lookup_host(working_state.server_address, addrstr, DEFAULT_BUFFER_SIZE / 2, | 144 | if ((res = lookup_host(tmp_mod_address, addrstr, DEFAULT_BUFFER_SIZE / 2, |
| 133 | config.sin_family)) != 0) { | 145 | config.sin_family)) != 0) { |
| 134 | die(STATE_CRITICAL, | 146 | die(STATE_CRITICAL, |
| 135 | _("Unable to lookup IP address for '%s': getaddrinfo returned %d - %s"), | 147 | _("Unable to lookup IP address for '%s': getaddrinfo returned %d - %s"), |
diff --git a/plugins/check_curl.d/check_curl_helpers.h b/plugins/check_curl.d/check_curl_helpers.h index 87e45a9d..e7b80f7e 100644 --- a/plugins/check_curl.d/check_curl_helpers.h +++ b/plugins/check_curl.d/check_curl_helpers.h | |||
| @@ -7,6 +7,10 @@ | |||
| 7 | # include <openssl/opensslv.h> | 7 | # include <openssl/opensslv.h> |
| 8 | #endif | 8 | #endif |
| 9 | 9 | ||
| 10 | enum { | ||
| 11 | MAX_IPV4_HOSTLENGTH = 255, | ||
| 12 | }; | ||
| 13 | |||
| 10 | /* for buffers for header and body */ | 14 | /* for buffers for header and body */ |
| 11 | typedef struct { | 15 | typedef struct { |
| 12 | size_t buflen; | 16 | size_t buflen; |
