summaryrefslogtreecommitdiffstats
path: root/web/attachments/414810-check_http.c.patch
diff options
context:
space:
mode:
Diffstat (limited to 'web/attachments/414810-check_http.c.patch')
-rw-r--r--web/attachments/414810-check_http.c.patch135
1 files changed, 135 insertions, 0 deletions
diff --git a/web/attachments/414810-check_http.c.patch b/web/attachments/414810-check_http.c.patch
new file mode 100644
index 0000000..6a189b5
--- /dev/null
+++ b/web/attachments/414810-check_http.c.patch
@@ -0,0 +1,135 @@
1diff --git a/plugins/check_http.c b/plugins/check_http.c
2index 433c28e..6a8a90a 100644
3--- a/plugins/check_http.c
4+++ b/plugins/check_http.c
5@@ -84,6 +84,7 @@ int errcode;
6 int invert_regex = 0;
7
8 struct timeval tv;
9+struct timeval tv_temp;
10
11 #define HTTP_URL "/"
12 #define CRLF "\r\n"
13@@ -130,6 +131,11 @@ void redir (char *pos, char *status_line);
14 int server_type_check(const char *type);
15 int server_port_check(int ssl_flag);
16 char *perfd_time (double microsec);
17+char *perfd_time_connect (double microsec);
18+char *perfd_time_ssl (double microsec);
19+char *perfd_time_firstbyte (double microsec);
20+char *perfd_time_headers (double microsec);
21+char *perfd_time_transfer (double microsec);
22 char *perfd_size (int page_len);
23 void print_help (void);
24 void print_usage (void);
25@@ -790,15 +796,31 @@ check_http (void)
26 char *pos;
27 long microsec;
28 double elapsed_time;
29+ long microsec_connect;
30+ double elapsed_time_connect;
31+ long microsec_ssl;
32+ double elapsed_time_ssl;
33+ long microsec_firstbyte;
34+ double elapsed_time_firstbyte;
35+ long microsec_headers;
36+ double elapsed_time_headers;
37+ long microsec_transfer;
38+ double elapsed_time_transfer;
39 int page_len = 0;
40 int result = STATE_OK;
41
42 /* try to connect to the host at the given port number */
43+ gettimeofday (&tv_temp, NULL);
44 if (my_tcp_connect (server_address, server_port, &sd) != STATE_OK)
45 die (STATE_CRITICAL, _("HTTP CRITICAL - Unable to open TCP socket\n"));
46+ microsec_connect = deltime (tv_temp);
47 #ifdef HAVE_SSL
48+ elapsed_time_connect = (double)microsec_connect / 1.0e6;
49 if (use_ssl == TRUE) {
50+ gettimeofday (&tv_temp, NULL);
51 np_net_ssl_init_with_hostname(sd, (use_sni ? host_name : NULL));
52+ microsec_ssl = deltime (tv_temp);
53+ elapsed_time_ssl = (double)microsec_ssl / 1.0e6;
54 if (check_cert == TRUE) {
55 result = np_net_ssl_check_cert(days_till_exp);
56 np_net_ssl_cleanup();
57@@ -867,11 +889,19 @@ check_http (void)
58 }
59
60 if (verbose) printf ("%s\n", buf);
61+ gettimeofday (&tv_temp, NULL);
62 my_send (buf, strlen (buf));
63+ microsec_headers = deltime (tv_temp);
64+ elapsed_time_headers = (double)microsec_headers / 1.0e6;
65
66 /* fetch the page */
67 full_page = strdup("");
68+ gettimeofday (&tv_temp, NULL);
69 while ((i = my_recv (buffer, MAX_INPUT_BUFFER-1)) > 0) {
70+ if ((i >= 1) && (elapsed_time_firstbyte <= 0.000001)) {
71+ microsec_firstbyte = deltime (tv_temp);
72+ elapsed_time_firstbyte = (double)microsec_firstbyte / 1.0e6;
73+ }
74 buffer[i] = '\0';
75 asprintf (&full_page_new, "%s%s", full_page, buffer);
76 free (full_page);
77@@ -883,6 +913,8 @@ check_http (void)
78 break;
79 }
80 }
81+ microsec_transfer = deltime (tv_temp);
82+ elapsed_time_transfer = (double)microsec_transfer / 1.0e6;
83
84 if (i < 0 && errno != ECONNRESET) {
85 #ifdef HAVE_SSL
86@@ -1085,10 +1117,16 @@ check_http (void)
87
88 /* check elapsed time */
89 asprintf (&msg,
90- _("%s - %d bytes in %.3f second response time %s|%s %s"),
91+ _("%s - %d bytes in %.3f second response time %s|%s %s %s %s %s %s %s"),
92 msg, page_len, elapsed_time,
93 (display_html ? "</A>" : ""),
94- perfd_time (elapsed_time), perfd_size (page_len));
95+ perfd_time (elapsed_time),
96+ perfd_size (page_len),
97+ perfd_time_connect (elapsed_time_connect),
98+ perfd_time_ssl (elapsed_time_ssl),
99+ perfd_time_headers (elapsed_time_headers),
100+ perfd_time_firstbyte (elapsed_time_firstbyte),
101+ perfd_time_transfer (elapsed_time_transfer));
102
103 result = max_state_alt(get_status(elapsed_time, thlds), result);
104
105@@ -1277,7 +1315,30 @@ char *perfd_time (double elapsed_time)
106 TRUE, 0, FALSE, 0);
107 }
108
109+char *perfd_time_connect (double elapsed_time_connect)
110+{
111+ return fperfdata ("time_connect", elapsed_time_connect, "s", FALSE, 0, FALSE, 0, FALSE, 0, FALSE, 0);
112+}
113
114+char *perfd_time_ssl (double elapsed_time_ssl)
115+{
116+ return fperfdata ("time_ssl", elapsed_time_ssl, "s", FALSE, 0, FALSE, 0, FALSE, 0, FALSE, 0);
117+}
118+
119+char *perfd_time_headers (double elapsed_time_headers)
120+{
121+ return fperfdata ("time_headers", elapsed_time_headers, "s", FALSE, 0, FALSE, 0, FALSE, 0, FALSE, 0);
122+}
123+
124+char *perfd_time_firstbyte (double elapsed_time_firstbyte)
125+{
126+ return fperfdata ("time_firstbyte", elapsed_time_firstbyte, "s", FALSE, 0, FALSE, 0, FALSE, 0, FALSE, 0);
127+}
128+
129+char *perfd_time_transfer (double elapsed_time_transfer)
130+{
131+ return fperfdata ("time_transfer", elapsed_time_transfer, "s", FALSE, 0, FALSE, 0, FALSE, 0, FALSE, 0);
132+}
133
134 char *perfd_size (int page_len)
135 {