async public Task Process() { Debug.Write("Request: "); if (Prologue.Method == "CONNECT") { Debug.Write("SSL: "); var proxySslResponse = new ProxySslResponse(Prologue.Version, HttpStatusCode.OK, "Connection Established"); proxySslResponse.Prologue.WriteTo(ClientStream); var sslRequest = await ProxySslRequest.For(this, _requestInspector); await sslRequest.Process(); return; } await InitRemoteSocket(); await InitRemoteStream(); await WritePrologueToRemote(); await CopyContentFromClientToServer(); await GetResponse(); await WriteResponseToClient(); //End(); if (RemoteSocket != null && Response.Prologue.Headers.ContainsIgnoreCase("Connection", "Keep-Alive")) { RemoteSocketProvider.Return(RemoteEndPoint, RemoteSocket); } else { End(); } Debug.WriteLine("Done"); }
private async Task InitRemoteSocket() { RemoteEndPoint = await GetIPEndpoint(); RemoteSocket = await RemoteSocketProvider.Get(RemoteEndPoint); }