Unverified Commit e1f03c43 authored by justcoding121's avatar justcoding121 Committed by GitHub

Merge pull request #442 from justcoding121/master

Use original isBodyRead when siphoning
parents af1038c8 b0023615
......@@ -179,7 +179,7 @@ namespace Titanium.Web.Proxy.EventArguments
internal async Task SyphonOutBodyAsync(bool isRequest, CancellationToken cancellationToken)
{
var requestResponse = isRequest ? (RequestResponseBase)WebSession.Request : WebSession.Response;
if (requestResponse.IsBodyRead || !requestResponse.OriginalHasBody)
if (requestResponse.OriginalIsBodyRead || !requestResponse.OriginalHasBody)
{
return;
}
......@@ -583,10 +583,7 @@ namespace Titanium.Web.Proxy.EventArguments
TerminateServerConnection();
}
response.OriginalHasBody = WebSession.Response.OriginalHasBody;
response.OriginalIsChunked = WebSession.Response.OriginalIsChunked;
response.OriginalContentLength = WebSession.Response.OriginalContentLength;
response.OriginalContentEncoding = WebSession.Response.OriginalContentEncoding;
response.SetOriginalHeaders(WebSession.Response);
//response already received from server but not yet ready to sent to client.
WebSession.Response = response;
......
......@@ -233,5 +233,6 @@ namespace Titanium.Web.Proxy.Http
return true;
}
}
}
......@@ -24,7 +24,7 @@ namespace Titanium.Web.Proxy.Http
/// <summary>
/// Store whether the original request/response has body or not, since the user may change the parameters.
/// We need this detail to tcp syphon out attached connection for reuse.
/// We need this detail to syphon out attached tcp connection for reuse.
/// </summary>
internal bool OriginalHasBody { get; set; }
......@@ -36,16 +36,22 @@ namespace Titanium.Web.Proxy.Http
/// <summary>
/// Store whether the original request/response was a chunked body, since the user may change the parameters.
/// We need this detail to tcp syphon out attached connection for reuse.
/// We need this detail to syphon out attached tcp connection for reuse.
/// </summary>
internal bool OriginalIsChunked { get; set; }
/// <summary>
/// Store whether the original request/response content-encoding, since the user may change the parameters.
/// We need this detail to tcp syphon out attached connection for reuse.
/// We need this detail to syphon out attached tcp connection for reuse.
/// </summary>
internal string OriginalContentEncoding { get; set; }
/// <summary>
/// Store whether the original request/response body was read by user.
/// We need this detail to syphon out attached tcp connection for reuse.
/// </summary>
public bool OriginalIsBodyRead { get; internal set; }
/// <summary>
/// Keeps the body data after the session is finished.
/// </summary>
......@@ -251,6 +257,31 @@ namespace Titanium.Web.Proxy.Http
ContentLength = IsChunked ? -1 : BodyInternal?.Length ?? 0;
}
/// <summary>
/// Set values for original headers using current headers.
/// </summary>
internal void SetOriginalHeaders()
{
OriginalHasBody = HasBody;
OriginalContentLength = ContentLength;
OriginalIsChunked = IsChunked;
OriginalContentEncoding = ContentEncoding;
OriginalIsBodyRead = IsBodyRead;
}
/// <summary>
/// Copy original header values.
/// </summary>
/// <param name="requestResponseBase"></param>
internal void SetOriginalHeaders(RequestResponseBase requestResponseBase)
{
OriginalHasBody = requestResponseBase.OriginalHasBody;
OriginalContentLength = requestResponseBase.OriginalContentLength;
OriginalIsChunked = requestResponseBase.OriginalIsChunked;
OriginalContentEncoding = requestResponseBase.OriginalContentEncoding;
OriginalIsBodyRead = requestResponseBase.OriginalIsBodyRead;
}
/// <summary>
/// Finish the session
/// </summary>
......
......@@ -163,10 +163,7 @@ namespace Titanium.Web.Proxy
}
//we need this to syphon out data from connection if API user changes them.
request.OriginalHasBody = request.HasBody;
request.OriginalContentLength = request.ContentLength;
request.OriginalIsChunked = request.IsChunked;
request.OriginalContentEncoding = request.ContentEncoding;
request.SetOriginalHeaders();
// If user requested interception do it
await invokeBeforeRequest(args);
......
......@@ -41,10 +41,7 @@ namespace Titanium.Web.Proxy
//save original values so that if user changes them
//we can still use original values when syphoning out data from attached tcp connection.
response.OriginalHasBody = response.HasBody;
response.OriginalContentLength = response.ContentLength;
response.OriginalIsChunked = response.IsChunked;
response.OriginalContentEncoding = response.ContentEncoding;
response.SetOriginalHeaders();
// if user requested call back then do it
if (!response.Locked)
......
......@@ -136,6 +136,9 @@
<div>
<a class="xref" href="Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_BodyInternal">RequestResponseBase.BodyInternal</a>
</div>
<div>
<a class="xref" href="Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_OriginalIsBodyRead">RequestResponseBase.OriginalIsBodyRead</a>
</div>
<div>
<a class="xref" href="Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_KeepBody">RequestResponseBase.KeepBody</a>
</div>
......
......@@ -118,6 +118,9 @@
<div>
<a class="xref" href="Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_BodyInternal">RequestResponseBase.BodyInternal</a>
</div>
<div>
<a class="xref" href="Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_OriginalIsBodyRead">RequestResponseBase.OriginalIsBodyRead</a>
</div>
<div>
<a class="xref" href="Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_KeepBody">RequestResponseBase.KeepBody</a>
</div>
......
......@@ -98,6 +98,9 @@
<div>
<a class="xref" href="Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_BodyInternal">RequestResponseBase.BodyInternal</a>
</div>
<div>
<a class="xref" href="Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_OriginalIsBodyRead">RequestResponseBase.OriginalIsBodyRead</a>
</div>
<div>
<a class="xref" href="Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_KeepBody">RequestResponseBase.KeepBody</a>
</div>
......
......@@ -488,6 +488,33 @@ public string BodyString { get; }</code></pre>
</tr>
</tbody>
</table>
<a id="Titanium_Web_Proxy_Http_RequestResponseBase_OriginalIsBodyRead_" data-uid="Titanium.Web.Proxy.Http.RequestResponseBase.OriginalIsBodyRead*"></a>
<h4 id="Titanium_Web_Proxy_Http_RequestResponseBase_OriginalIsBodyRead" data-uid="Titanium.Web.Proxy.Http.RequestResponseBase.OriginalIsBodyRead">OriginalIsBodyRead</h4>
<div class="markdown level1 summary"><p>Store whether the original request/response body was read by user.
We need this detail to syphon out attached tcp connection for reuse.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool OriginalIsBodyRead { get; }</code></pre>
</div>
<h5 class="propertyValue">Property Value</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a class="xref" href="https://docs.microsoft.com/dotnet/api/system.boolean">Boolean</a></td>
<td></td>
</tr>
</tbody>
</table>
<h3 id="methods">Methods
</h3>
......
......@@ -101,6 +101,9 @@
<div>
<a class="xref" href="Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_BodyInternal">RequestResponseBase.BodyInternal</a>
</div>
<div>
<a class="xref" href="Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_OriginalIsBodyRead">RequestResponseBase.OriginalIsBodyRead</a>
</div>
<div>
<a class="xref" href="Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_KeepBody">RequestResponseBase.KeepBody</a>
</div>
......
......@@ -119,6 +119,9 @@
<div>
<a class="xref" href="Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_BodyInternal">RequestResponseBase.BodyInternal</a>
</div>
<div>
<a class="xref" href="Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_OriginalIsBodyRead">RequestResponseBase.OriginalIsBodyRead</a>
</div>
<div>
<a class="xref" href="Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_KeepBody">RequestResponseBase.KeepBody</a>
</div>
......
......@@ -119,6 +119,9 @@
<div>
<a class="xref" href="Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_BodyInternal">RequestResponseBase.BodyInternal</a>
</div>
<div>
<a class="xref" href="Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_OriginalIsBodyRead">RequestResponseBase.OriginalIsBodyRead</a>
</div>
<div>
<a class="xref" href="Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_KeepBody">RequestResponseBase.KeepBody</a>
</div>
......
......@@ -119,6 +119,9 @@
<div>
<a class="xref" href="Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_BodyInternal">RequestResponseBase.BodyInternal</a>
</div>
<div>
<a class="xref" href="Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_OriginalIsBodyRead">RequestResponseBase.OriginalIsBodyRead</a>
</div>
<div>
<a class="xref" href="Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_KeepBody">RequestResponseBase.KeepBody</a>
</div>
......
This diff is collapsed.
......@@ -1694,6 +1694,19 @@ references:
isSpec: "True"
fullName: Titanium.Web.Proxy.Http.RequestResponseBase.KeepBody
nameWithType: RequestResponseBase.KeepBody
- uid: Titanium.Web.Proxy.Http.RequestResponseBase.OriginalIsBodyRead
name: OriginalIsBodyRead
href: api/Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_OriginalIsBodyRead
commentId: P:Titanium.Web.Proxy.Http.RequestResponseBase.OriginalIsBodyRead
fullName: Titanium.Web.Proxy.Http.RequestResponseBase.OriginalIsBodyRead
nameWithType: RequestResponseBase.OriginalIsBodyRead
- uid: Titanium.Web.Proxy.Http.RequestResponseBase.OriginalIsBodyRead*
name: OriginalIsBodyRead
href: api/Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_OriginalIsBodyRead_
commentId: Overload:Titanium.Web.Proxy.Http.RequestResponseBase.OriginalIsBodyRead
isSpec: "True"
fullName: Titanium.Web.Proxy.Http.RequestResponseBase.OriginalIsBodyRead
nameWithType: RequestResponseBase.OriginalIsBodyRead
- uid: Titanium.Web.Proxy.Http.RequestResponseBase.ToString
name: ToString()
href: api/Titanium.Web.Proxy.Http.RequestResponseBase.html#Titanium_Web_Proxy_Http_RequestResponseBase_ToString
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment