Commit e4c68b0b authored by justcoding121's avatar justcoding121

ExpectContinue correctly handle

Send request before user call back only for expectcontinue
parent 5303951b
...@@ -132,7 +132,7 @@ namespace Titanium.Web.Proxy ...@@ -132,7 +132,7 @@ namespace Titanium.Web.Proxy
//if(endPoint.UseServerNameIndication) //if(endPoint.UseServerNameIndication)
//{ //{
// //implement in future once SNI supported by SSL stream // //implement in future once SNI supported by SSL stream
// certificate = CertManager.CreateCertificate(endPoint.GenericCertificateName); // certificate = CertManager.CreateCertificate(hostName);
//} //}
//else //else
certificate = CertManager.CreateCertificate(endPoint.GenericCertificateName); certificate = CertManager.CreateCertificate(endPoint.GenericCertificateName);
...@@ -207,7 +207,6 @@ namespace Titanium.Web.Proxy ...@@ -207,7 +207,6 @@ namespace Titanium.Web.Proxy
version = new Version(1, 0); version = new Version(1, 0);
} }
args.ProxySession.Request.RequestHeaders = new List<HttpHeader>(); args.ProxySession.Request.RequestHeaders = new List<HttpHeader>();
string tmpLine; string tmpLine;
...@@ -217,13 +216,9 @@ namespace Titanium.Web.Proxy ...@@ -217,13 +216,9 @@ namespace Titanium.Web.Proxy
args.ProxySession.Request.RequestHeaders.Add(new HttpHeader(header[0], header[1])); args.ProxySession.Request.RequestHeaders.Add(new HttpHeader(header[0], header[1]));
} }
var httpRemoteUri = new Uri(!IsHttps ? httpCmdSplit[1] : (string.Concat("https://", args.ProxySession.Request.Host, httpCmdSplit[1]))); var httpRemoteUri = new Uri(!IsHttps ? httpCmdSplit[1] : (string.Concat("https://", args.ProxySession.Request.Host, httpCmdSplit[1])));
args.IsHttps = IsHttps; args.IsHttps = IsHttps;
args.ProxySession.Request.RequestUri = httpRemoteUri; args.ProxySession.Request.RequestUri = httpRemoteUri;
args.ProxySession.Request.Method = httpMethod; args.ProxySession.Request.Method = httpMethod;
...@@ -249,8 +244,21 @@ namespace Titanium.Web.Proxy ...@@ -249,8 +244,21 @@ namespace Titanium.Web.Proxy
lastRequestHostName = args.ProxySession.Request.RequestUri.Host; lastRequestHostName = args.ProxySession.Request.RequestUri.Host;
args.ProxySession.Request.Host = args.ProxySession.Request.RequestUri.Host; args.ProxySession.Request.Host = args.ProxySession.Request.RequestUri.Host;
//If requested interception
if (BeforeRequest != null)
{
BeforeRequest(null, args);
}
args.ProxySession.Request.RequestLocked = true;
if (args.ProxySession.Request.ExpectContinue)
{
args.ProxySession.SetConnection(connection); args.ProxySession.SetConnection(connection);
args.ProxySession.SendRequest(); args.ProxySession.SendRequest();
}
if (Enable100ContinueBehaviour) if (Enable100ContinueBehaviour)
if (args.ProxySession.Request.Is100Continue) if (args.ProxySession.Request.Is100Continue)
...@@ -266,21 +274,17 @@ namespace Titanium.Web.Proxy ...@@ -266,21 +274,17 @@ namespace Titanium.Web.Proxy
args.Client.ClientStreamWriter.WriteLine(); args.Client.ClientStreamWriter.WriteLine();
} }
//If requested interception
if (BeforeRequest != null)
{
BeforeRequest(null, args);
}
args.ProxySession.Request.RequestLocked = true;
if (args.ProxySession.Request.CancelRequest) if (args.ProxySession.Request.CancelRequest)
{ {
Dispose(client, clientStream, clientStreamReader, clientStreamWriter, args); Dispose(client, clientStream, clientStreamReader, clientStreamWriter, args);
break; break;
} }
if (!args.ProxySession.Request.ExpectContinue)
{
args.ProxySession.SetConnection(connection);
args.ProxySession.SendRequest();
}
//If request was modified by user //If request was modified by user
if (args.ProxySession.Request.RequestBodyRead) if (args.ProxySession.Request.RequestBodyRead)
......
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