You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by ji...@apache.org on 2007/05/01 15:13:00 UTC
svn commit: r534057 - in /httpd/httpd/branches/2.2.x: CHANGES support/ab.c
Author: jim
Date: Tue May 1 06:12:59 2007
New Revision: 534057
URL: http://svn.apache.org/viewvc?view=rev&rev=534057
Log:
Backports:
Correct behavior of HTTP request headers sent by ab in presence of -H command-
line overrides. Previously, ab would concatenate a supplied -H User-Agent:
header to the existing one, and send duplicate headers if either -H Host: or
-H Accept: were specified on the command line.
Now, the default headers are not sent if they are overridden using the -H
command-line flag.
Submitted by: Arvind Srinivasan arvind.srinivasan sun.com
Reviewed by: sctemme
PR: 31268, 26554
The apr_port_t type is unsigned, but ab was using a signed format code in
its reports. PR 42070. Submitted by Takashi Sato serai lans-tv.com,
reviewed by sctemme.
Modified:
httpd/httpd/branches/2.2.x/CHANGES
httpd/httpd/branches/2.2.x/support/ab.c
Modified: httpd/httpd/branches/2.2.x/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.2.x/CHANGES?view=diff&rev=534057&r1=534056&r2=534057
==============================================================================
--- httpd/httpd/branches/2.2.x/CHANGES [utf-8] (original)
+++ httpd/httpd/branches/2.2.x/CHANGES [utf-8] Tue May 1 06:12:59 2007
@@ -1,7 +1,15 @@
-*- coding: utf-8 -*-
Changes with Apache 2.2.5
- * mod_ldap: Remove the hardcoded size limit parameter for
+ *) ab.c: Correct behavior of HTTP request headers sent by ab
+ in presence of -H command-line overrides. PR 31268, 26554.
+ [Arvind Srinivasan <arvind.srinivasan sun.com>]
+
+ *) ab.c: The apr_port_t type is unsigned, but ab was using a
+ signed format code in its reports. PR 42070.
+ [Takashi Sato <serai lans-tv.com>]
+
+ *) mod_ldap: Remove the hardcoded size limit parameter for
ldap_search_ext_s and replace it with an APR_ defined
value that is set according to the LDAP SDK being used.
[David Jones <oscaremma gmail com>]
Modified: httpd/httpd/branches/2.2.x/support/ab.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.2.x/support/ab.c?view=diff&rev=534057&r1=534056&r2=534057
==============================================================================
--- httpd/httpd/branches/2.2.x/support/ab.c (original)
+++ httpd/httpd/branches/2.2.x/support/ab.c Tue May 1 06:12:59 2007
@@ -284,6 +284,11 @@
char * fullurl, * colonhost;
int isproxy = 0;
apr_interval_time_t aprtimeout = apr_time_from_sec(30); /* timeout value */
+
+/* overrides for ab-generated common headers */
+int opt_host = 0; /* was an optional "Host:" header specified? */
+int opt_useragent = 0; /* was an optional "User-Agent:" header specified? */
+int opt_accept = 0; /* was an optional "Accept:" header specified? */
/*
* XXX - this is now a per read/write transact type of value
*/
@@ -731,7 +736,7 @@
printf("\n\n");
printf("Server Software: %s\n", servername);
printf("Server Hostname: %s\n", hostname);
- printf("Server Port: %hd\n", port);
+ printf("Server Port: %hu\n", port);
#ifdef USE_SSL
if (is_ssl && ssl_info) {
printf("SSL/TLS Protocol: %s\n", ssl_info);
@@ -990,7 +995,7 @@
"<td colspan=2 %s>%s</td></tr>\n",
trstring, tdstring, tdstring, hostname);
printf("<tr %s><th colspan=2 %s>Server Port:</th>"
- "<td colspan=2 %s>%hd</td></tr>\n",
+ "<td colspan=2 %s>%hu</td></tr>\n",
trstring, tdstring, tdstring, port);
printf("<tr %s><th colspan=2 %s>Document Path:</th>"
"<td colspan=2 %s>%s</td></tr>\n",
@@ -1512,37 +1517,54 @@
apr_err("apr_pollset_create failed", status);
}
+ /* add default headers if necessary */
+ if (!opt_host) {
+ /* Host: header not overridden, add default value to hdrs */
+ hdrs = apr_pstrcat(cntxt, hdrs, "Host: ", host_field, colonhost, "\r\n", NULL);
+ }
+ else {
+ /* Header overridden, no need to add, as it is already in hdrs */
+ }
+
+ if (!opt_useragent) {
+ /* User-Agent: header not overridden, add default value to hdrs */
+ hdrs = apr_pstrcat(cntxt, hdrs, "User-Agent: ApacheBench/", AP_AB_BASEREVISION, "\r\n", NULL);
+ }
+ else {
+ /* Header overridden, no need to add, as it is already in hdrs */
+ }
+
+ if (!opt_accept) {
+ /* Accept: header not overridden, add default value to hdrs */
+ hdrs = apr_pstrcat(cntxt, hdrs, "Accept: */*\r\n", NULL);
+ }
+ else {
+ /* Header overridden, no need to add, as it is already in hdrs */
+ }
+
/* setup request */
if (posting <= 0) {
snprintf_res = apr_snprintf(request, sizeof(_request),
"%s %s HTTP/1.0\r\n"
- "User-Agent: ApacheBench/%s\r\n"
"%s" "%s" "%s"
- "Host: %s%s\r\n"
- "Accept: */*\r\n"
"%s" "\r\n",
(posting == 0) ? "GET" : "HEAD",
(isproxy) ? fullurl : path,
- AP_AB_BASEREVISION,
keepalive ? "Connection: Keep-Alive\r\n" : "",
- cookie, auth, host_field, colonhost, hdrs);
+ cookie, auth, hdrs);
}
else {
snprintf_res = apr_snprintf(request, sizeof(_request),
"POST %s HTTP/1.0\r\n"
- "User-Agent: ApacheBench/%s\r\n"
"%s" "%s" "%s"
- "Host: %s%s\r\n"
- "Accept: */*\r\n"
"Content-length: %" APR_SIZE_T_FMT "\r\n"
"Content-type: %s\r\n"
"%s"
"\r\n",
(isproxy) ? fullurl : path,
- AP_AB_BASEREVISION,
keepalive ? "Connection: Keep-Alive\r\n" : "",
cookie, auth,
- host_field, colonhost, postlen,
+ postlen,
(content_type[0]) ? content_type : "text/plain", hdrs);
}
if (snprintf_res >= sizeof(_request)) {
@@ -2035,6 +2057,16 @@
break;
case 'H':
hdrs = apr_pstrcat(cntxt, hdrs, optarg, "\r\n", NULL);
+ /*
+ * allow override of some of the common headers that ab adds
+ */
+ if (strncasecmp(optarg, "Host:", 5) == 0) {
+ opt_host = 1;
+ } else if (strncasecmp(optarg, "Accept:", 7) == 0) {
+ opt_accept = 1;
+ } else if (strncasecmp(optarg, "User-Agent:", 11) == 0) {
+ opt_useragent = 1;
+ }
break;
case 'w':
use_html = 1;