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