This commit is contained in:
@@ -17,7 +17,6 @@ namespace SuccessfulCodeTools.LowLevelHttpClient
|
||||
{
|
||||
public int? OutgoingPort { get; set; }
|
||||
public KeyValueCollection<string, string> DefaultHeaders = new KeyValueCollection<string, string>();
|
||||
private static readonly ConcurrentDictionary<int, object> _dictionary = new ConcurrentDictionary<int, object>();
|
||||
public CustomHttpClient(int? outgoingPort = null)
|
||||
{
|
||||
OutgoingPort = outgoingPort;
|
||||
@@ -30,8 +29,7 @@ namespace SuccessfulCodeTools.LowLevelHttpClient
|
||||
message.Headers.AddRange(defaultHeaders);
|
||||
|
||||
var outBoundPort = outgoingPort ?? OutgoingPort ?? 0;
|
||||
var semphoreLock = (SemaphoreSlim)_dictionary.GetOrAdd(outBoundPort, e => new SemaphoreSlim(1));
|
||||
semphoreLock.Wait();
|
||||
|
||||
var ipLocalEndPoint = new IPEndPoint(IPAddress.Any, outBoundPort);
|
||||
using (var tcp = new TcpClient(ipLocalEndPoint))
|
||||
{
|
||||
@@ -60,7 +58,6 @@ namespace SuccessfulCodeTools.LowLevelHttpClient
|
||||
tcp.Client.Disconnect(true);
|
||||
stream.Close();
|
||||
tcp.Client.Close();
|
||||
semphoreLock.Release();
|
||||
return new CustomHttpResponseMessage(memory);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user