Hi,
I needed to be able to set the content-type in POST type url, for
example to send a file so I added a parameter to the url element.
The patch is attached to this mail for inclusion if it suits you
Philippe
Index: config.h.in
===================================================================
RCS file: /home/cvspublic/httpd-test/flood/config.h.in,v
retrieving revision 1.30
diff -u -b -B -r1.30 config.h.in
--- config.h.in 9 Sep 2003 13:59:17 -0000 1.30
+++ config.h.in 13 Feb 2004 08:35:51 -0000
@@ -22,6 +22,7 @@
#define XML_URLLIST_METHOD_POST "post"
#define XML_URLLIST_METHOD_HEAD "head"
#define XML_URLLIST_PAYLOAD "payload"
+#define XML_URLLIST_CONTENT_TYPE "content-type"
#define XML_URLLIST_PAYLOAD_TEMPLATE "payloadtemplate"
#define XML_URLLIST_REQUEST_TEMPLATE "requesttemplate"
#define XML_URLLIST_RESPONSE_TEMPLATE "responsetemplate"
Index: flood_profile.h
===================================================================
RCS file: /home/cvspublic/httpd-test/flood/flood_profile.h,v
retrieving revision 1.14
diff -u -b -B -r1.14 flood_profile.h
--- flood_profile.h 1 Jan 2004 13:38:36 -0000 1.14
+++ flood_profile.h 13 Feb 2004 08:35:51 -0000
@@ -108,6 +108,9 @@
/* Following only valid when method == POST */
apr_size_t payloadsize;
void * payload;
+
+ apr_size_t contenttypesize;
+ char * contenttype;
apr_uri_t *parsed_uri;
Index: flood_round_robin.c
===================================================================
RCS file: /home/cvspublic/httpd-test/flood/flood_round_robin.c,v
retrieving revision 1.38
diff -u -b -B -r1.38 flood_round_robin.c
--- flood_round_robin.c 1 Jan 2004 13:38:36 -0000 1.38
+++ flood_round_robin.c 13 Feb 2004 08:35:52 -0000
@@ -109,6 +109,7 @@
char *url;
method_e method;
char *payload;
+ char *contenttype;
apr_int64_t predelay;
apr_int64_t predelayprecision;
apr_int64_t postdelay;
@@ -346,7 +347,7 @@
"Connection: %s" CRLF
"Host: %s" CRLF
"Content-Length: %d" CRLF
- "Content-type:
application/x-www-form-urlencoded" CRLF
+ "Content-type: %s" CRLF
"%s"
"%s" CRLF
"%s",
@@ -356,6 +357,7 @@
r->keepalive ? "Keep-Alive" : "Close",
r->parsed_uri->hostinfo,
r->payloadsize,
+ r->contenttype ? r->contenttype :
"application/x-www-form-urlencoded",
authz_hdr ? authz_hdr : "",
cookies,
(char*)r->payload);
@@ -432,6 +434,10 @@
FLOOD_STRLEN_MAX) == 0) {
url->payload = (char*)attr->value;
}
+ else if (strncasecmp(attr->name,XML_URLLIST_CONTENT_TYPE,
+ FLOOD_STRLEN_MAX) == 0) {
+ url->contenttype = (char*)attr->value;
+ }
else if (strncasecmp(attr->name, XML_URLLIST_PREDELAY,
FLOOD_STRLEN_MAX) == 0) {
char *endptr;
@@ -527,6 +533,7 @@
{
url->method = GET;
url->payload = NULL;
+ url->contenttype = NULL;
}
return APR_SUCCESS;
@@ -821,6 +828,12 @@
r->payload = parse_param_string(rp,
rp->url[rp->current_url].payloadtemplate);
r->payloadsize = strlen(r->payload);
+ }
+
+ if (rp->url[rp->current_url].contenttype)
+ {
+ r->contenttype = parse_param_string(rp,
rp->url[rp->current_url].contenttype);
+ r->contenttypesize = strlen(r->contenttype);
}
/* If they want a sleep, do it now. */