@@ -257,42 +257,39 @@ public async Task ConnectAsync(ConnectionSettings cs, IOBehavior ioBehavior, Can
257
257
m_payloadHandler = new CompressedPayloadHandler ( m_payloadHandler . ByteHandler ) ;
258
258
}
259
259
260
- private async Task ResetConnectionAsync ( ConnectionSettings cs , IOBehavior ioBehavior , CancellationToken cancellationToken )
260
+ public async Task < bool > TryResetConnectionAsync ( ConnectionSettings cs , IOBehavior ioBehavior , CancellationToken cancellationToken )
261
261
{
262
262
VerifyState ( State . Connected ) ;
263
- if ( ServerVersion . Version . CompareTo ( ServerVersions . SupportsResetConnection ) >= 0 )
264
- {
265
- await SendAsync ( ResetConnectionPayload . Create ( ) , ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
266
- var payload = await ReceiveReplyAsync ( ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
267
- OkPayload . Create ( payload ) ;
268
263
269
- // the "reset connection" packet also resets the connection charset, so we need to change that back to our default
270
- payload = new PayloadData ( new ArraySegment < byte > ( PayloadUtilities . CreateEofStringPayload ( CommandKind . Query , "SET NAMES utf8mb4 COLLATE utf8mb4_bin;" ) ) ) ;
271
- await SendAsync ( payload , ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
272
- payload = await ReceiveReplyAsync ( ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
273
- OkPayload . Create ( payload ) ;
274
- }
275
- else
264
+ try
276
265
{
277
- // optimistically hash the password with the challenge from the initial handshake (supported by MariaDB; doesn't appear to be supported by MySQL)
278
- var hashedPassword = AuthenticationUtility . CreateAuthenticationResponse ( AuthPluginData , 0 , cs . Password ) ;
279
- var payload = ChangeUserPayload . Create ( cs . UserID , hashedPassword , cs . Database , m_supportsConnectionAttributes ? s_connectionAttributes : null ) ;
280
- await SendAsync ( payload , ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
281
- payload = await ReceiveReplyAsync ( ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
282
- if ( payload . HeaderByte == AuthenticationMethodSwitchRequestPayload . Signature )
266
+ if ( ServerVersion . Version . CompareTo ( ServerVersions . SupportsResetConnection ) >= 0 )
283
267
{
284
- await SwitchAuthenticationAsync ( cs , payload , ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
268
+ await SendAsync ( ResetConnectionPayload . Create ( ) , ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
269
+ var payload = await ReceiveReplyAsync ( ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
270
+ OkPayload . Create ( payload ) ;
271
+
272
+ // the "reset connection" packet also resets the connection charset, so we need to change that back to our default
273
+ payload = new PayloadData ( new ArraySegment < byte > ( PayloadUtilities . CreateEofStringPayload ( CommandKind . Query , "SET NAMES utf8mb4 COLLATE utf8mb4_bin;" ) ) ) ;
274
+ await SendAsync ( payload , ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
285
275
payload = await ReceiveReplyAsync ( ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
276
+ OkPayload . Create ( payload ) ;
277
+ }
278
+ else
279
+ {
280
+ // optimistically hash the password with the challenge from the initial handshake (supported by MariaDB; doesn't appear to be supported by MySQL)
281
+ var hashedPassword = AuthenticationUtility . CreateAuthenticationResponse ( AuthPluginData , 0 , cs . Password ) ;
282
+ var payload = ChangeUserPayload . Create ( cs . UserID , hashedPassword , cs . Database , m_supportsConnectionAttributes ? s_connectionAttributes : null ) ;
283
+ await SendAsync ( payload , ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
284
+ payload = await ReceiveReplyAsync ( ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
285
+ if ( payload . HeaderByte == AuthenticationMethodSwitchRequestPayload . Signature )
286
+ {
287
+ await SwitchAuthenticationAsync ( cs , payload , ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
288
+ payload = await ReceiveReplyAsync ( ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
289
+ }
290
+ OkPayload . Create ( payload ) ;
286
291
}
287
- OkPayload . Create ( payload ) ;
288
- }
289
- }
290
292
291
- public async Task < bool > TryResetConnectionAsync ( ConnectionSettings cs , IOBehavior ioBehavior , CancellationToken cancellationToken )
292
- {
293
- try
294
- {
295
- await ResetConnectionAsync ( cs , ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
296
293
return true ;
297
294
}
298
295
catch ( EndOfStreamException )
0 commit comments