Skip to content

Commit 83cace4

Browse files
committed
Various fixes
1 parent 3845931 commit 83cace4

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed

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

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -106,16 +106,15 @@ public static void PerformSocks5Handshake(Stream stream, EndPoint endPoint, stri
106106
buffer[0] = SubnegotiationVersion;
107107
#if NET472
108108
var usernameLength = EncodeString(proxyUsername, buffer, 2, nameof(proxyUsername));
109-
#else
110-
var usernameLength = EncodeString(proxyUsername, buffer.AsSpan(2), nameof(proxyUsername));
111-
#endif
112-
buffer[1] = usernameLength;
113-
#if NET472
109+
buffer[1] = (byte)usernameLength;
114110
var passwordLength = EncodeString(proxyPassword, buffer, 3 + usernameLength, nameof(proxyPassword));
111+
buffer[2 + usernameLength] = (byte)passwordLength;
115112
#else
116-
var passwordLength = EncodeString(proxyPassword, buffer.AsSpan(3 + usernameLength), nameof(proxyPassword));
113+
usernameLength = EncodeString(proxyUsername.AsSpan(), buffer.AsSpan(2), nameof(proxyUsername));
114+
buffer[1] = (byte)usernameLength;
115+
passwordLength = EncodeString(proxyPassword.AsSpan(), buffer.AsSpan(3 + usernameLength), nameof(proxyPassword));
116+
buffer[2 + usernameLength] = (byte)passwordLength;
117117
#endif
118-
buffer[2 + usernameLength] = passwordLength;
119118

120119
var authLength = 3 + usernameLength + passwordLength;
121120
stream.Write(buffer, 0, authLength);
@@ -156,14 +155,18 @@ public static void PerformSocks5Handshake(Stream stream, EndPoint endPoint, stri
156155
{
157156
case AddressFamily.InterNetwork:
158157
buffer[3] = AddressTypeIPv4;
159-
#if !NET472
158+
#if NET472
159+
Array.Copy(ip.GetAddressBytes(), 0, buffer, 4, 4);
160+
#else
160161
ip.TryWriteBytes(buffer.AsSpan(4), out _);
161162
#endif
162163
addressLength = 4;
163164
break;
164165
case AddressFamily.InterNetworkV6:
165166
buffer[3] = AddressTypeIPv6;
166-
#if !NET472
167+
#if NET472
168+
Array.Copy(ip.GetAddressBytes(), 0, buffer, 4, 16);
169+
#else
167170
ip.TryWriteBytes(buffer.AsSpan(4), out _);
168171
#endif
169172
addressLength = 16;
@@ -244,7 +247,7 @@ private static byte EncodeString(string input, byte[] buffer, int offset, string
244247
private static byte EncodeString(ReadOnlySpan<char> chars, Span<byte> buffer, string parameterName)
245248
{
246249
try
247-
{ //TODO Maybe we should remove checked?
250+
{
248251
return checked((byte)Encoding.UTF8.GetBytes(chars, buffer));
249252
}
250253
catch

0 commit comments

Comments
 (0)