@@ -106,16 +106,15 @@ public static void PerformSocks5Handshake(Stream stream, EndPoint endPoint, stri
106
106
buffer [ 0 ] = SubnegotiationVersion ;
107
107
#if NET472
108
108
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 ;
114
110
var passwordLength = EncodeString ( proxyPassword , buffer , 3 + usernameLength , nameof ( proxyPassword ) ) ;
111
+ buffer [ 2 + usernameLength ] = ( byte ) passwordLength ;
115
112
#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 ;
117
117
#endif
118
- buffer [ 2 + usernameLength ] = passwordLength ;
119
118
120
119
var authLength = 3 + usernameLength + passwordLength ;
121
120
stream . Write ( buffer , 0 , authLength ) ;
@@ -156,14 +155,18 @@ public static void PerformSocks5Handshake(Stream stream, EndPoint endPoint, stri
156
155
{
157
156
case AddressFamily . InterNetwork :
158
157
buffer [ 3 ] = AddressTypeIPv4 ;
159
- #if ! NET472
158
+ #if NET472
159
+ Array . Copy ( ip . GetAddressBytes ( ) , 0 , buffer , 4 , 4 ) ;
160
+ #else
160
161
ip . TryWriteBytes ( buffer . AsSpan ( 4 ) , out _ ) ;
161
162
#endif
162
163
addressLength = 4 ;
163
164
break ;
164
165
case AddressFamily . InterNetworkV6 :
165
166
buffer [ 3 ] = AddressTypeIPv6 ;
166
- #if ! NET472
167
+ #if NET472
168
+ Array . Copy ( ip . GetAddressBytes ( ) , 0 , buffer , 4 , 16 ) ;
169
+ #else
167
170
ip . TryWriteBytes ( buffer . AsSpan ( 4 ) , out _ ) ;
168
171
#endif
169
172
addressLength = 16 ;
@@ -244,7 +247,7 @@ private static byte EncodeString(string input, byte[] buffer, int offset, string
244
247
private static byte EncodeString ( ReadOnlySpan < char > chars , Span < byte > buffer , string parameterName )
245
248
{
246
249
try
247
- { //TODO Maybe we should remove checked?
250
+ {
248
251
return checked ( ( byte ) Encoding . UTF8 . GetBytes ( chars , buffer ) ) ;
249
252
}
250
253
catch
0 commit comments