Skip to content

Commit 74ade29

Browse files
committed
Simplifications
1 parent d49fff5 commit 74ade29

File tree

1 file changed

+12
-27
lines changed

1 file changed

+12
-27
lines changed

src/MongoDB.Driver/Core/Connections/Socks5Helper.cs

Lines changed: 12 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,10 @@ public static void PerformSocks5Handshake(Stream stream, EndPoint endPoint, Sock
106106
stream.Write(buffer, 0, addressLength + 6);
107107
stream.Flush();
108108

109-
ReadConnectResponse(stream, buffer, cancellationToken);
109+
stream.ReadBytes(buffer, 0, 5, cancellationToken);
110+
var skip = ReadConnectResponse(buffer, cancellationToken);
111+
stream.ReadBytes(buffer, 0, skip, cancellationToken);
112+
110113
}
111114
finally
112115
{
@@ -132,7 +135,9 @@ public static async Task PerformSocks5HandshakeAsync(Stream stream, EndPoint end
132135
await stream.WriteAsync(buffer, 0, addressLength + 6, cancellationToken).ConfigureAwait(false);
133136
await stream.FlushAsync(cancellationToken).ConfigureAwait(false);
134137

135-
await ReadConnectResponseAsync(stream, buffer, cancellationToken).ConfigureAwait(false);
138+
await stream.ReadBytesAsync(buffer, 0, 5, cancellationToken).ConfigureAwait(false);
139+
var skip = ReadConnectResponse(buffer, cancellationToken);
140+
await stream.ReadBytesAsync(buffer, 0, skip, cancellationToken).ConfigureAwait(true);
136141
}
137142
finally
138143
{
@@ -262,38 +267,18 @@ private static int CreateConnectRequest(byte[] buffer, string targetHost, int ta
262267
return addressLength;
263268
}
264269

265-
private static void ReadConnectResponse(Stream stream, byte[] buffer, CancellationToken cancellationToken)
270+
private static int ReadConnectResponse(byte[] buffer, CancellationToken cancellationToken)
266271
{
267-
stream.ReadBytes(buffer, 0, 5, cancellationToken);
268272
VerifyProtocolVersion(buffer[0]);
269273
VerifySockSuccess(buffer[1]);
270274

271-
var skip = buffer[3] switch
275+
return buffer[3] switch
272276
{
273277
AddressTypeIPv4 => 5,
274278
AddressTypeIPv6 => 17,
275279
AddressTypeDomain => buffer[4] + 2,
276280
_ => throw new IOException("Unknown address type in SOCKS5 reply.")
277281
};
278-
279-
stream.ReadBytes(buffer, 0, skip, cancellationToken);
280-
}
281-
282-
private static async Task ReadConnectResponseAsync(Stream stream, byte[] buffer, CancellationToken cancellationToken)
283-
{
284-
await stream.ReadBytesAsync(buffer, 0, 5, cancellationToken).ConfigureAwait(false);
285-
VerifyProtocolVersion(buffer[0]);
286-
VerifySockSuccess(buffer[1]);
287-
288-
var skip = buffer[3] switch
289-
{
290-
AddressTypeIPv4 => 5,
291-
AddressTypeIPv6 => 17,
292-
AddressTypeDomain => buffer[4] + 2,
293-
_ => throw new IOException("Unknown address type in SOCKS5 reply.")
294-
};
295-
296-
await stream.ReadBytesAsync(buffer, 0, skip, cancellationToken).ConfigureAwait(false);
297282
}
298283

299284
private static void CreateGreetingRequest(byte[] buffer, bool useAuth)
@@ -317,15 +302,15 @@ private static void VerifyProtocolVersion(byte version)
317302
{
318303
if (version != ProtocolVersion5)
319304
{
320-
throw new IOException("Invalid SOCKS version in method selection response.");
305+
throw new IOException("Invalid SOCKS version in response.");
321306
}
322307
}
323308

324-
private static void VerifySockSuccess(byte value)
309+
private static void VerifySockSuccess(byte value) //TODO Need to check this
325310
{
326311
if (value != Socks5Success)
327312
{
328-
throw new IOException($"SOCKS5 connect failed with code 0x{value:X2}");
313+
throw new IOException($"SOCKS5 connect failed");
329314
}
330315
}
331316

0 commit comments

Comments
 (0)