summaryrefslogtreecommitdiffstats
path: root/plugins/check_curl.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/check_curl.c')
-rw-r--r--plugins/check_curl.c39
1 files changed, 22 insertions, 17 deletions
diff --git a/plugins/check_curl.c b/plugins/check_curl.c
index 17fb5564..89173808 100644
--- a/plugins/check_curl.c
+++ b/plugins/check_curl.c
@@ -238,7 +238,28 @@ mp_subcheck check_http(const check_curl_config config, check_curl_working_state
238 return sc_result; 238 return sc_result;
239 } 239 }
240 240
241 xasprintf(&sc_curl.output, "cURL performed query"); 241 /* get status line of answer, check sanity of HTTP code */
242 if (curlhelp_parse_statusline(curl_state.header_buf->buf, curl_state.status_line) < 0) {
243 sc_result = mp_set_subcheck_state(sc_result, STATE_CRITICAL);
244 /* we cannot know the major/minor version here for sure as we cannot parse the first
245 * line */
246 xasprintf(&sc_result.output, "HTTP/x.x unknown - Unparsable status line");
247 return sc_result;
248 }
249
250 curl_state.status_line_initialized = true;
251
252 size_t page_len = get_content_length(curl_state.header_buf, curl_state.body_buf);
253
254 double total_time;
255 handle_curl_option_return_code(
256 curl_easy_getinfo(curl_state.curl, CURLINFO_TOTAL_TIME, &total_time),
257 "CURLINFO_TOTAL_TIME");
258
259 xasprintf(
260 &sc_curl.output, "%s %d %s - %ld bytes in %.3f second response time",
261 string_statuscode(curl_state.status_line->http_major, curl_state.status_line->http_minor),
262 curl_state.status_line->http_code, curl_state.status_line->msg, page_len, total_time);
242 sc_curl = mp_set_subcheck_state(sc_curl, STATE_OK); 263 sc_curl = mp_set_subcheck_state(sc_curl, STATE_OK);
243 mp_add_subcheck_to_subcheck(&sc_result, sc_curl); 264 mp_add_subcheck_to_subcheck(&sc_result, sc_curl);
244 265
@@ -264,10 +285,6 @@ mp_subcheck check_http(const check_curl_config config, check_curl_working_state
264 285
265 // total time the query took 286 // total time the query took
266 mp_perfdata pd_total_time = perfdata_init(); 287 mp_perfdata pd_total_time = perfdata_init();
267 double total_time;
268 handle_curl_option_return_code(
269 curl_easy_getinfo(curl_state.curl, CURLINFO_TOTAL_TIME, &total_time),
270 "CURLINFO_TOTAL_TIME");
271 mp_perfdata_value pd_val_total_time = mp_create_pd_value(total_time); 288 mp_perfdata_value pd_val_total_time = mp_create_pd_value(total_time);
272 pd_total_time.value = pd_val_total_time; 289 pd_total_time.value = pd_val_total_time;
273 pd_total_time = mp_pd_set_thresholds(pd_total_time, config.thlds); 290 pd_total_time = mp_pd_set_thresholds(pd_total_time, config.thlds);
@@ -360,17 +377,6 @@ mp_subcheck check_http(const check_curl_config config, check_curl_working_state
360 return sc_result; 377 return sc_result;
361 } 378 }
362 379
363 /* get status line of answer, check sanity of HTTP code */
364 if (curlhelp_parse_statusline(curl_state.header_buf->buf, curl_state.status_line) < 0) {
365 sc_result = mp_set_subcheck_state(sc_result, STATE_CRITICAL);
366 /* we cannot know the major/minor version here for sure as we cannot parse the first
367 * line */
368 xasprintf(&sc_result.output, "HTTP/x.x unknown - Unparsable status line");
369 return sc_result;
370 }
371
372 curl_state.status_line_initialized = true;
373
374 /* get result code from cURL */ 380 /* get result code from cURL */
375 long httpReturnCode; 381 long httpReturnCode;
376 handle_curl_option_return_code( 382 handle_curl_option_return_code(
@@ -578,7 +584,6 @@ mp_subcheck check_http(const check_curl_config config, check_curl_working_state
578 584
579 // size a.k.a. page length 585 // size a.k.a. page length
580 mp_perfdata pd_page_length = perfdata_init(); 586 mp_perfdata pd_page_length = perfdata_init();
581 size_t page_len = get_content_length(curl_state.header_buf, curl_state.body_buf);
582 mp_perfdata_value pd_val_page_length = mp_create_pd_value(page_len); 587 mp_perfdata_value pd_val_page_length = mp_create_pd_value(page_len);
583 pd_page_length.value = pd_val_page_length; 588 pd_page_length.value = pd_val_page_length;
584 pd_page_length.label = "size"; 589 pd_page_length.label = "size";