diff --git a/ChangeLog b/ChangeLog
index f6f275a..fd9794f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2023-04-11 Massimo Manghi <mxmanghi@apache.org>
+	* src/mod_rivet_ng/TclWebapache.c:
+	* src/mod_rivet_ng/rivetCore.c:
+	* src/mod_rivet_ng/rivet_types.h:
+	* src/request/apache_request.c:
+	* src/request/apache_request.h: handling length of data in POST requests. It
+	fixes ::rivet::raw_post when the POSTed data don't have variable sections (patch
+	provided by Scott Pitcher <scotty@svptechnicalservices.com.au>)
+
 2023-01-11 Massimo Manghi <mxmanghi@apache.org>
 	* src/TclWeb.h: also this include file had a CONST84 specifier that needed to
 	be converted as CONST86
diff --git a/src/mod_rivet_ng/TclWebapache.c b/src/mod_rivet_ng/TclWebapache.c
index b9191f1..1b9ed59 100644
--- a/src/mod_rivet_ng/TclWebapache.c
+++ b/src/mod_rivet_ng/TclWebapache.c
@@ -1079,7 +1079,7 @@
  */
 
 char *
-TclWeb_GetRawPost ( TclWebRequest *req )
+TclWeb_GetRawPost ( TclWebRequest *req, int *len )
 {
-    return ApacheRequest_get_raw_post(req->apachereq);
+    return ApacheRequest_get_raw_post(req->apachereq, len);
 }
diff --git a/src/mod_rivet_ng/rivetCore.c b/src/mod_rivet_ng/rivetCore.c
index 09a9d86..ffa4381 100644
--- a/src/mod_rivet_ng/rivetCore.c
+++ b/src/mod_rivet_ng/rivetCore.c
@@ -63,7 +63,7 @@
 #define COOKIES_ARRAY_NAME "cookies"
 
 extern module rivet_module;
-extern char* TclWeb_GetRawPost (TclWebRequest *req);
+extern char* TclWeb_GetRawPost (TclWebRequest *req, int *len);
 extern mod_rivet_globals* module_globals;
 extern apr_threadkey_t*  rivet_thread_key;
 
@@ -1274,18 +1274,19 @@
 TCL_CMD_HEADER ( Rivet_RawPost )
 {
     char*                   data;
+    int                     length;
     Tcl_Obj*                retval;
     rivet_thread_private*   private;
 
     THREAD_PRIVATE_DATA(private)
     CHECK_REQUEST_REC(private,"::rivet::raw_post")
 
-    data = TclWeb_GetRawPost(private->req);
+    data = TclWeb_GetRawPost(private->req, &length);
 
     if (!data) {
         data = "";
     }
-    retval = Tcl_NewStringObj(data, -1);
+    retval = Tcl_NewByteArrayObj((const unsigned char *)data, length);
     Tcl_SetObjResult(interp, retval);
     return TCL_OK;
 }
diff --git a/src/mod_rivet_ng/rivet_types.h b/src/mod_rivet_ng/rivet_types.h
index d3f30ca..8aebea0 100644
--- a/src/mod_rivet_ng/rivet_types.h
+++ b/src/mod_rivet_ng/rivet_types.h
@@ -75,6 +75,7 @@
     void*           hook_data;
     const char*     temp_dir;
     char*           raw_post;           /* Raw post data. */
+    int             raw_length;
     request_rec*    r;
     int             nargs;
 } ApacheRequest;
diff --git a/src/request/apache_request.c b/src/request/apache_request.c
index 0db8ec5..1cbda0d 100644
--- a/src/request/apache_request.c
+++ b/src/request/apache_request.c
@@ -37,7 +37,7 @@
 }
 
 static int
-util_read(ApacheRequest *req, const char **rbuf)
+util_read(ApacheRequest *req, const char **rbuf, int *rlen)
 {
     request_rec *r = req->r;
     int rc = OK;
@@ -61,6 +61,7 @@
         }
 
         *rbuf = apr_pcalloc(r->pool, length + 1);
+	*rlen = length;
 
         while ((len_read =
                     ap_get_client_block(r, buff, sizeof(buff))) > 0) {
@@ -215,6 +216,7 @@
     req->hook_data      = NULL;
     req->temp_dir       = NULL;
     req->raw_post       = NULL;
+    req->raw_length     = 0;
     req->parsed         = 0;
     req->r              = NULL;
     req->nargs          = 0;
@@ -234,6 +236,7 @@
     req->hook_data      = NULL;
     req->temp_dir       = NULL;
     req->raw_post       = NULL;
+    req->raw_length     = 0;
     req->parsed         = 0;
     req->r              = r;
     req->nargs          = 0;
@@ -432,6 +435,7 @@
 
     if (r->method_number == M_POST || r->method_number == M_PUT || r->method_number == M_DELETE) {
     	const char *data = NULL;
+	int length = 0;
 
     /*
         const char *type;
@@ -443,12 +447,13 @@
     	}
     */
 
-    	if ((rc = util_read(req, &data)) != OK) {
+    	if ((rc = util_read(req, &data, &length)) != OK) {
     	    return rc;
     	}
 
     	if (data) {
     	    req->raw_post = (char*) data; /* Give people a way of getting at the raw data. */
+    	    req->raw_length = length;
     	    split_to_parms(req, data);
     	}
     }
@@ -738,3 +743,9 @@
     return ApacheUtil_expires(req->r->pool, time_str, EXPIRES_HTTP);
 }
 
+char *ApacheRequest_get_raw_post(ApacheRequest *req, int *len)
+{
+    if (len)
+	*len = req->raw_length;
+    return req->raw_post;
+}
diff --git a/src/request/apache_request.h b/src/request/apache_request.h
index 0e05b95..f9e0c5e 100644
--- a/src/request/apache_request.h
+++ b/src/request/apache_request.h
@@ -121,7 +121,7 @@
 #define ApacheRequest_set_post_max(req, max) ((req)->post_max = (max))
 #define ApacheRequest_set_temp_dir(req, dir) ((req)->temp_dir = (dir))
 
-#define ApacheRequest_get_raw_post(req) ((req)->raw_post)
+char *ApacheRequest_get_raw_post(ApacheRequest *req, int *len);
 
 char *ApacheUtil_expires(apr_pool_t *p, char *time_str, int type);
 #define EXPIRES_HTTP   1
