[
https://issues.apache.org/jira/browse/TS-4042?focusedWorklogId=26484&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-26484
]
ASF GitHub Bot logged work on TS-4042:
--------------------------------------
Author: ASF GitHub Bot
Created on: 16/Aug/16 02:24
Start Date: 16/Aug/16 02:24
Worklog Time Spent: 10m
Work Description: Github user bryancall commented on a diff in the pull
request:
https://github.com/apache/trafficserver/pull/351#discussion_r74867909
--- Diff: proxy/InkAPI.cc ---
@@ -8903,3 +8910,46 @@ TSVConnReenable(TSVConn vconn)
}
}
}
+
+tsapi char *
+TSHttpTxnGetClientRequestBody(TSHttpTxn txnp, int *len)
--- End diff --
Why are you adding this API if you are not using it?
Issue Time Tracking
-------------------
Worklog Id: (was: 26484)
Time Spent: 20m (was: 10m)
> Add feature to buffer request body before making downstream requests
> --------------------------------------------------------------------
>
> Key: TS-4042
> URL: https://issues.apache.org/jira/browse/TS-4042
> Project: Traffic Server
> Issue Type: Improvement
> Components: Core, CPP API, TS API
> Reporter: Brian Geffon
> Assignee: Brian Geffon
> Fix For: 7.0.0
>
> Time Spent: 20m
> Remaining Estimate: 0h
>
> We need a way to examine the request body without making a downstream
> request, this feature has many use cases including:
> - Ability to buffer the body and ensure a full post is received before
> committing downstream resources.
> - Ability to choose an origin based on request body
> - Ability to do request content filtering such as a WAF might provide
> before the origin is involved.
> Today you have two options to inspect a request body:
> 1) Transformations: the problem with transformations is that you only start
> receiving the request bytes after a sink has been established, which in this
> case is the downstream origin.
> 2) Create an intercept and use fetch apis to then send the downstream
> request: while this technically works it turns out to be a ton of code and is
> in general pretty problematic, we actually tried this approach for a while
> and had nothing but problems with it.
> We feel it would be ideal if we could intercept the body without breaking the
> normal ATS state flow. There used to exist code (and it's still in the core
> just #ifdefed out) to drain the request body. I use that code as the basis
> for this request buffering code. We added APIs to both the C and C++ APIs so
> that this request buffering can be enabled from a plugin and the plugin can
> inspect the body as chunks arrive or when it's complete. We've included an
> example plugin that will error a transaction if a minimum rate of transfer is
> not maintained.
> I'm confident that this feature will bring plenty of questions / feedback, so
> let's get that party started.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)