summaryrefslogtreecommitdiffstats
path: root/plugins/check_http.c
diff options
context:
space:
mode:
authorEric Wunderlin <wunde005@umn.edu>2016-04-11 12:52:02 -0500
committerSven Nierlein <sven@nierlein.org>2022-09-18 20:42:26 +0200
commit8f54442c68cf5bfaffc33b8e618462e82771478b (patch)
tree09cd740a2dc03d05d2bf08000bc23400324a3c49 /plugins/check_http.c
parentb89aee56964f7d933f2da5f371e32b4d7db9410b (diff)
downloadmonitoring-plugins-8f54442c68cf5bfaffc33b8e618462e82771478b.tar.gz
Added ability to correctly check redirects with reference format //test.server.com/folder
Referenced redirect of the format //www.server.com/folder would result in check_http trying to contact http://hostname:80//www.server.com/folder instead of http://www.server.com/folder. Referenced redirect of this format is listed in rfc3986 ( https://tools.ietf.org/html/rfc3986 ). It should work as expected now.
Diffstat (limited to 'plugins/check_http.c')
-rw-r--r--plugins/check_http.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/plugins/check_http.c b/plugins/check_http.c
index f8ec853b..36f3b253 100644
--- a/plugins/check_http.c
+++ b/plugins/check_http.c
@@ -1364,6 +1364,9 @@ check_http (void)
1364#define HD3 URI_HTTP "://" URI_HOST ":" URI_PORT 1364#define HD3 URI_HTTP "://" URI_HOST ":" URI_PORT
1365#define HD4 URI_HTTP "://" URI_HOST 1365#define HD4 URI_HTTP "://" URI_HOST
1366#define HD5 URI_PATH 1366#define HD5 URI_PATH
1367/* relative reference redirect like //www.site.org/test https://tools.ietf.org/html/rfc3986 */
1368#define HD6 "//" URI_HOST "/" URI_PATH
1369
1367 1370
1368void 1371void
1369redir (char *pos, char *status_line) 1372redir (char *pos, char *status_line)
@@ -1440,6 +1443,21 @@ redir (char *pos, char *status_line)
1440 use_ssl = server_type_check (type); 1443 use_ssl = server_type_check (type);
1441 i = server_port_check (use_ssl); 1444 i = server_port_check (use_ssl);
1442 } 1445 }
1446 else if (sscanf (pos, HD6, addr, url) == 2) {
1447 //get type from
1448 if(use_ssl){
1449 //i = server_port_check (use_ssl);
1450 strcpy (type,"https");
1451 }
1452 //else if(sscanf(server_url,URI_HTTP,type)==1 ){
1453 //}
1454 else{
1455 strcpy (type, server_type);
1456 }
1457 xasprintf (&url, "/%s", url);
1458 use_ssl = server_type_check (type);
1459 i = server_port_check (use_ssl);
1460 }
1443 1461
1444 /* URI_PATH */ 1462 /* URI_PATH */
1445 else if (sscanf (pos, HD5, url) == 1) { 1463 else if (sscanf (pos, HD5, url) == 1) {