mirror of
https://github.com/monitoring-plugins/monitoring-plugins.git
synced 2026-02-20 00:10:09 -05:00
Re-structure the HTTP 1.1 headers to prevent 301s on servers with virtual hosts
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@2030 f882894a-f735-0410-b71e-b25c423dba1c
This commit is contained in:
parent
2367f82090
commit
0378f34d85
3 changed files with 13 additions and 9 deletions
1
NEWS
1
NEWS
|
|
@ -9,6 +9,7 @@ This file documents the major additions and syntax changes between releases.
|
|||
check_procs now captures stderr in external command and adds to plugin output
|
||||
check_snmp now only prints perfdata for non numeric values (#1867716)
|
||||
check_icmp now supports packet size modification
|
||||
check_http now sends the Host header first to fix 301s on servers with vitrual hosts (Michael Harris).
|
||||
|
||||
1.4.12 27th May 2008
|
||||
Added ./check_nt -v INSTANCES to count number of instances (Alessandro Ren)
|
||||
|
|
|
|||
|
|
@ -236,3 +236,4 @@ Jan Wagner
|
|||
Christian Schneemann
|
||||
Rob Windsor
|
||||
Hilko Bengen
|
||||
Michael Harris
|
||||
|
|
|
|||
|
|
@ -743,21 +743,23 @@ check_http (void)
|
|||
if (check_cert == TRUE) {
|
||||
result = np_net_ssl_check_cert(days_till_exp);
|
||||
np_net_ssl_cleanup();
|
||||
if(sd) close(sd);
|
||||
if (sd) close(sd);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
#endif /* HAVE_SSL */
|
||||
|
||||
asprintf (&buf, "%s %s HTTP/1.0\r\n%s\r\n", http_method, server_url, user_agent);
|
||||
/* If a hostname is provided, use HTTP/1.1 and send the hostname before the
|
||||
* Useragent. This fixes an issue with getting 301 responses from servers
|
||||
* with virtual hosts */
|
||||
if (host_name)
|
||||
asprintf (&buf, "%s %s HTTP/1.1\r\nHost: %s\r\n%s\r\n", http_method, server_url, host_name, user_agent);
|
||||
else
|
||||
asprintf (&buf, "%s %s HTTP/1.0\r\n%s\r\n", http_method, server_url, user_agent);
|
||||
|
||||
/* tell HTTP/1.1 servers not to keep the connection alive */
|
||||
asprintf (&buf, "%sConnection: close\r\n", buf);
|
||||
|
||||
/* optionally send the host header info */
|
||||
if (host_name)
|
||||
asprintf (&buf, "%sHost: %s:%d\r\n", buf, host_name, server_port);
|
||||
|
||||
/* optionally send any other header tag */
|
||||
if (http_opt_headers_count) {
|
||||
for (i = 0; i < http_opt_headers_count ; i++) {
|
||||
|
|
@ -835,7 +837,7 @@ check_http (void)
|
|||
#ifdef HAVE_SSL
|
||||
np_net_ssl_cleanup();
|
||||
#endif
|
||||
if(sd) close(sd);
|
||||
if (sd) close(sd);
|
||||
|
||||
/* reset the alarm */
|
||||
alarm (0);
|
||||
|
|
@ -1101,13 +1103,13 @@ redir (char *pos, char *status_line)
|
|||
}
|
||||
|
||||
/* URI_HTTP URI_HOST URI_PORT */
|
||||
else if(sscanf (pos, HD3, type, addr, &i) == 3) {
|
||||
else if (sscanf (pos, HD3, type, addr, &i) == 3) {
|
||||
strcpy (url, HTTP_URL);
|
||||
use_ssl = server_type_check (type);
|
||||
}
|
||||
|
||||
/* URI_HTTP URI_HOST */
|
||||
else if(sscanf (pos, HD4, type, addr) == 2) {
|
||||
else if (sscanf (pos, HD4, type, addr) == 2) {
|
||||
strcpy (url, HTTP_URL);
|
||||
use_ssl = server_type_check (type);
|
||||
i = server_port_check (use_ssl);
|
||||
|
|
|
|||
Loading…
Reference in a new issue