@@ -1339,37 +1339,9 @@ def starttls(**options)
1339
1339
# Previously cached #capabilities will be cleared when this method
1340
1340
# completes. If the TaggedResponse to #authenticate includes updated
1341
1341
# capabilities, they will be cached.
1342
- def authenticate ( mechanism , *creds ,
1343
- sasl_ir : config . sasl_ir ,
1344
- **props , &callback )
1345
- mechanism = SASL ::Authenticators . normalize_name ( mechanism )
1346
- authenticator = SASL . authenticator ( mechanism , *creds , **props , &callback )
1347
- cmdargs = [ "AUTHENTICATE" , mechanism ]
1348
- if sasl_ir && capable? ( "SASL-IR" ) && auth_capable? ( mechanism ) &&
1349
- authenticator . respond_to? ( :initial_response? ) &&
1350
- authenticator . initial_response?
1351
- response = authenticator . process ( nil )
1352
- cmdargs << ( response . empty? ? "=" : [ response ] . pack ( "m0" ) )
1353
- end
1354
- process_error = nil
1355
- result = send_command_with_continuations ( *cmdargs ) { |data |
1356
- unless process_error
1357
- challenge = data . unpack1 ( "m" )
1358
- response = begin
1359
- authenticator . process challenge
1360
- rescue => ex
1361
- process_error = ex
1362
- end
1363
- end
1364
- process_error ? "*" : [ response ] . pack ( "m0" )
1365
- }
1366
- raise process_error if process_error
1367
- if authenticator . respond_to? ( :done? ) && !authenticator . done?
1368
- logout!
1369
- raise SASL ::AuthenticationIncomplete , result
1370
- end
1371
- @capabilities = capabilities_from_resp_code result
1372
- result
1342
+ def authenticate ( *args , sasl_ir : config . sasl_ir , **props , &callback )
1343
+ sasl_adapter . authenticate ( *args , sasl_ir : sasl_ir , **props , &callback )
1344
+ . tap { @capabilities = capabilities_from_resp_code _1 }
1373
1345
end
1374
1346
1375
1347
# Sends a {LOGIN command [IMAP4rev1 §6.2.3]}[https://www.rfc-editor.org/rfc/rfc3501#section-6.2.3]
0 commit comments