summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/c/include/unit/unit-wasm.h1
-rw-r--r--src/c/libunit-wasm.c11
2 files changed, 12 insertions, 0 deletions
diff --git a/src/c/include/unit/unit-wasm.h b/src/c/include/unit/unit-wasm.h
index f698c97..48079b1 100644
--- a/src/c/include/unit/unit-wasm.h
+++ b/src/c/include/unit/unit-wasm.h
@@ -238,6 +238,7 @@ extern size_t luw_get_response_data_size(const luw_ctx_t *ctx);
extern int luw_mem_writep(luw_ctx_t *ctx, const char *fmt, ...);
extern size_t luw_mem_writep_data(luw_ctx_t *ctx, const u8 *src, size_t size);
extern void luw_req_buf_append(luw_ctx_t *ctx, const u8 *src);
+extern void luw_req_buf_copy(luw_ctx_t *ctx, const u8 *src);
extern size_t luw_mem_fill_buf_from_req(luw_ctx_t *ctx, size_t from);
extern void luw_mem_reset(luw_ctx_t *ctx);
extern void luw_http_set_response_status(luw_http_status_t status);
diff --git a/src/c/libunit-wasm.c b/src/c/libunit-wasm.c
index 28d5906..fdf9499 100644
--- a/src/c/libunit-wasm.c
+++ b/src/c/libunit-wasm.c
@@ -304,6 +304,17 @@ void luw_req_buf_append(luw_ctx_t *ctx, const u8 *src)
ctx->req->total_content_sent = req->total_content_sent;
}
+/* Copy data from the request to the previously setup request_buffer. */
+void luw_req_buf_copy(luw_ctx_t *ctx, const u8 *src)
+{
+ struct luw_req *req = (struct luw_req *)src;
+
+ memcpy(ctx->reqp + ctx->req->content_off, src + req->content_off,
+ req->request_size);
+ ctx->req->content_sent = req->content_sent;
+ ctx->req->total_content_sent = req->total_content_sent;
+}
+
/*
* Convenience function to fill the response buffer with data from
* the request buffer.