Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
T
Titanium-Web-Proxy
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Titanium-Web-Proxy
Commits
58ec1bb3
Commit
58ec1bb3
authored
Jul 18, 2017
by
justcoding121
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix server connection count; fix UpstreamEndPoint
parent
494b0e6f
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
892 additions
and
911 deletions
+892
-911
TcpExtensions.cs
Titanium.Web.Proxy/Extensions/TcpExtensions.cs
+0
-28
TcpConnectionFactory.cs
Titanium.Web.Proxy/Network/Tcp/TcpConnectionFactory.cs
+1
-1
ProxyServer.cs
Titanium.Web.Proxy/ProxyServer.cs
+871
-868
RequestHandler.cs
Titanium.Web.Proxy/RequestHandler.cs
+20
-14
No files found.
Titanium.Web.Proxy/Extensions/TcpExtensions.cs
View file @
58ec1bb3
...
...
@@ -5,34 +5,6 @@ namespace Titanium.Web.Proxy.Extensions
{
internal
static
class
TcpExtensions
{
/// <summary>
/// verifies if the underlying socket is connected before using a TcpClient connection
/// </summary>
/// <param name="client"></param>
/// <returns></returns>
internal
static
bool
IsConnected
(
this
Socket
client
)
{
// This is how you can determine whether a socket is still connected.
bool
blockingState
=
client
.
Blocking
;
try
{
var
tmp
=
new
byte
[
1
];
client
.
Blocking
=
false
;
client
.
Send
(
tmp
,
0
,
0
);
return
true
;
}
catch
(
SocketException
e
)
{
// 10035 == WSAEWOULDBLOCK
return
e
.
SocketErrorCode
==
SocketError
.
WouldBlock
;
}
finally
{
client
.
Blocking
=
blockingState
;
}
}
#if NET45
/// <summary>
...
...
Titanium.Web.Proxy/Network/Tcp/TcpConnectionFactory.cs
View file @
58ec1bb3
...
...
@@ -58,7 +58,7 @@ namespace Titanium.Web.Proxy.Network.Tcp
client
=
new
TcpClient
(
upStreamEndPoint
);
#else
client
=
new
TcpClient
();
client
.
Client
.
Bind
(
server
.
U
pStreamEndPoint
);
client
.
Client
.
Bind
(
u
pStreamEndPoint
);
#endif
//If this proxy uses another external proxy then create a tunnel request for HTTP/HTTPS connections
...
...
Titanium.Web.Proxy/ProxyServer.cs
View file @
58ec1bb3
This diff is collapsed.
Click to expand it.
Titanium.Web.Proxy/RequestHandler.cs
View file @
58ec1bb3
...
...
@@ -164,24 +164,30 @@ namespace Titanium.Web.Proxy
//create new connection
using
(
var
connection
=
await
GetServerConnection
(
connectArgs
,
true
))
{
if
(
isClientHello
)
try
{
if
(
clientStream
.
Available
>
0
)
if
(
isClientHello
)
{
//send the buffered data
var
data
=
new
byte
[
clientStream
.
Available
];
await
clientStream
.
ReadAsync
(
data
,
0
,
data
.
Length
);
await
connection
.
Stream
.
WriteAsync
(
data
,
0
,
data
.
Length
);
await
connection
.
Stream
.
FlushAsync
();
if
(
clientStream
.
Available
>
0
)
{
//send the buffered data
var
data
=
new
byte
[
clientStream
.
Available
];
await
clientStream
.
ReadAsync
(
data
,
0
,
data
.
Length
);
await
connection
.
Stream
.
WriteAsync
(
data
,
0
,
data
.
Length
);
await
connection
.
Stream
.
FlushAsync
();
}
var
serverHelloInfo
=
await
SslTools
.
PeekServerHello
(
connection
.
Stream
);
((
ConnectResponse
)
connectArgs
.
WebSession
.
Response
).
ServerHelloInfo
=
serverHelloInfo
;
}
var
serverHelloInfo
=
await
SslTools
.
PeekServerHello
(
connection
.
Stream
);
((
ConnectResponse
)
connectArgs
.
WebSession
.
Response
).
ServerHelloInfo
=
serverHelloInfo
;
await
TcpHelper
.
SendRaw
(
clientStream
,
connection
.
Stream
,
BufferSize
,
(
buffer
,
offset
,
count
)
=>
{
connectArgs
.
OnDataSent
(
buffer
,
offset
,
count
);
},
(
buffer
,
offset
,
count
)
=>
{
connectArgs
.
OnDataReceived
(
buffer
,
offset
,
count
);
});
}
finally
{
UpdateServerConnectionCount
(
false
);
}
await
TcpHelper
.
SendRaw
(
clientStream
,
connection
.
Stream
,
BufferSize
,
(
buffer
,
offset
,
count
)
=>
{
connectArgs
.
OnDataSent
(
buffer
,
offset
,
count
);
},
(
buffer
,
offset
,
count
)
=>
{
connectArgs
.
OnDataReceived
(
buffer
,
offset
,
count
);
});
UpdateServerConnectionCount
(
false
);
}
return
;
...
...
@@ -361,8 +367,8 @@ namespace Titanium.Web.Proxy
&&
!
args
.
WebSession
.
UpStreamEndPoint
.
Equals
(
connection
.
UpStreamEndPoint
))))
{
connection
.
Dispose
();
UpdateServerConnectionCount
(
false
);
connection
=
null
;
UpdateServerConnectionCount
(
false
);
}
if
(
connection
==
null
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment