Only in httpd-2.0.47-post/: httpd-2.0.47
diff -r -u httpd-2.0.47/server/mpm/experimental/metuxmpm/metuxmpm.c httpd-2.0.47-post/server/mpm/experimental/metuxmpm/metuxmpm.c
--- httpd-2.0.47/server/mpm/experimental/metuxmpm/metuxmpm.c	2003-08-07 12:07:15.000000000 +0200
+++ httpd-2.0.47-post/server/mpm/experimental/metuxmpm/metuxmpm.c	2003-08-07 12:03:26.000000000 +0200
@@ -861,7 +861,7 @@
     struct cmsghdr *cmsg;
     char headers[HUGE_STRING_LEN];
     char request_body[HUGE_STRING_LEN];
-    struct iovec iov[2];
+    struct iovec iov;
     int ret, fd_tmp;
     apr_os_sock_t ctrl_sock_fd;
     apr_os_sock_t trans_sock_fd;
@@ -872,18 +872,16 @@
     apr_bucket         *bucket;
 
     /* prepare the buffers for receiving data from remote side */
-    iov[0].iov_base = headers;
-    iov[0].iov_len  = HUGE_STRING_LEN;
-    iov[1].iov_base = request_body;
-    iov[1].iov_len  = HUGE_STRING_LEN;
+    iov.iov_base = headers;
+    iov.iov_len  = HUGE_STRING_LEN;
 
     cmsg = apr_palloc(ptrans, sizeof(*cmsg) + sizeof(trans_sock_fd));
     cmsg->cmsg_len = sizeof(*cmsg) + sizeof(trans_sock_fd);
 
     msg.msg_name       = NULL;
     msg.msg_namelen    = 0;
-    msg.msg_iov        = iov;
-    msg.msg_iovlen     = 2;
+    msg.msg_iov        = &iov;
+    msg.msg_iovlen     = 1;
     msg.msg_control    = cmsg;
     msg.msg_controllen = cmsg->cmsg_len;
 
@@ -896,6 +894,9 @@
     memcpy(&trans_sock_fd, CMSG_DATA(cmsg), sizeof(trans_sock_fd));
     apr_os_sock_put((apr_socket_t **)trans_sock, &trans_sock_fd, ptrans);
     apr_os_sock_get(&fd_tmp, *trans_sock);
+
+    strcpy(request_body, strchr(headers, 0) + 1);
+
     _FDBG("trans_sock=%ld fdx=%d sock_fd=%d headers=\"%s\" body=\"%s\"", 
 	*trans_sock, trans_sock_fd, fd_tmp, &headers, &request_body);
 
@@ -905,11 +906,11 @@
     APR_BRIGADE_INSERT_HEAD(bb, bucket);
     bucket = apr_bucket_socket_create(*trans_sock, alloc);
     APR_BRIGADE_INSERT_HEAD(bb, bucket);
-    bucket = apr_bucket_heap_create(iov[1].iov_base, 
-                                    iov[1].iov_len, NULL, alloc);
+    bucket = apr_bucket_heap_create(request_body,
+                                    strlen(request_body), NULL, alloc);
     APR_BRIGADE_INSERT_HEAD(bb, bucket);
-    bucket = apr_bucket_heap_create(iov[0].iov_base, 
-                                    iov[0].iov_len, NULL, alloc);
+    bucket = apr_bucket_heap_create(headers,
+                                    strlen(headers), NULL, alloc);
     APR_BRIGADE_INSERT_HEAD(bb, bucket);
 
     apr_pool_userdata_set(bb, "metuxmpm_SOCKETS", NULL, ptrans);
@@ -1966,7 +1967,7 @@
     apr_bucket_brigade *sockbb;
     char request_body[HUGE_STRING_LEN] = "\0";
     apr_off_t len = 0;
-    apr_size_t l = 0;
+    apr_size_t l = HUGE_STRING_LEN;
     metuxmpm_header h;
     apr_bucket *sockbuck;
     const apr_array_header_t *headers_in_array;
@@ -2031,6 +2032,7 @@
          || !apr_strnatcasecmp (headers_in[counter].key, "X-AP-metuxmpm")
          || !apr_strnatcasecmp (headers_in[counter].key, "X-AP-metuxmpm-FOR-IP")
          || !apr_strnatcasecmp (headers_in[counter].key, "Keep-Alive")
+         || !apr_strnatcasecmp (headers_in[counter].key, "Host")
          || !apr_strnatcasecmp (headers_in[counter].key, "Connection")) {
                 continue;
         }                                             
@@ -2044,13 +2046,13 @@
     }
 
     if (buf == NULL) {
-    	h.headers = apr_pstrcat(h.p, r->the_request, CRLF, "Host: ", r->hostname, 
+    	h.headers = apr_pstrcat(h.p, r->the_request, CRLF, "Host: ", r->hostname,
                             CRLF, "X-AP-metuxmpm: passed between childs",
                             CRLF, "X-AP-metuxmpm-FOR-IP: ", r -> connection -> remote_ip, 
-                            CRLF, "Connection: close",
+                            CRLF, "Connection: close", CRLF, "Host: ", r->hostname,
 			    CRLF, CRLF, NULL);
     } else {
-    	h.headers = apr_pstrcat(h.p, r->the_request, CRLF, "Host: ", r->hostname, 
+    	h.headers = apr_pstrcat(h.p, r->the_request, CRLF, "Host: ", r->hostname,
                             CRLF, "X-AP-metuxmpm: passed between childs",
                             CRLF, "X-AP-metuxmpm-FOR-IP: ", r -> connection -> remote_ip, 
                             CRLF, "Connection: close",
@@ -2061,7 +2063,8 @@
     iov[0].iov_base = h.headers;
     iov[0].iov_len  = strlen(h.headers) + 1;
     iov[1].iov_base = request_body;
-    iov[1].iov_len  = len + 1;
+    iov[1].iov_len  = l + 1;
+_DBG("pass_request(): [POST] body=\"%s\" length=%d", request_body, l);
 
     msg.msg_name    = NULL;
     msg.msg_namelen = 0;
