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,24 +244,8 @@ namespace Titanium.Web.Proxy ...@@ -249,24 +244,8 @@ 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;
args.ProxySession.SetConnection(connection);
args.ProxySession.SendRequest();
if (Enable100ContinueBehaviour)
if (args.ProxySession.Request.Is100Continue)
{
WriteResponseStatus(args.ProxySession.Response.HttpVersion, "100",
"Continue", args.Client.ClientStreamWriter);
args.Client.ClientStreamWriter.WriteLine();
}
else if (args.ProxySession.Request.ExpectationFailed)
{
WriteResponseStatus(args.ProxySession.Response.HttpVersion, "417",
"Expectation Failed", args.Client.ClientStreamWriter);
args.Client.ClientStreamWriter.WriteLine();
}
//If requested interception //If requested interception
if (BeforeRequest != null) if (BeforeRequest != null)
{ {
...@@ -275,12 +254,37 @@ namespace Titanium.Web.Proxy ...@@ -275,12 +254,37 @@ namespace Titanium.Web.Proxy
args.ProxySession.Request.RequestLocked = true; args.ProxySession.Request.RequestLocked = true;
if (args.ProxySession.Request.ExpectContinue)
{
args.ProxySession.SetConnection(connection);
args.ProxySession.SendRequest();
}
if (Enable100ContinueBehaviour)
if (args.ProxySession.Request.Is100Continue)
{
WriteResponseStatus(args.ProxySession.Response.HttpVersion, "100",
"Continue", args.Client.ClientStreamWriter);
args.Client.ClientStreamWriter.WriteLine();
}
else if (args.ProxySession.Request.ExpectationFailed)
{
WriteResponseStatus(args.ProxySession.Response.HttpVersion, "417",
"Expectation Failed", args.Client.ClientStreamWriter);
args.Client.ClientStreamWriter.WriteLine();
}
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