fix password error condition handling of smb mount
ClosedPublic

Authored by sitter on Oct 8 2019, 10:03 AM.

Details

Summary

this was previously wrong in two ways:

  1. errors from the password check would previously be ignored but still end in early termination of the mount command despite that command not having finished (successfully)
  2. since the password check is always run we may not actually require auth data in which case it is perfectly reasonable for the user to cancel the auth request (the user experience sucks, but there's not much we can do within the special command I think)

to solve both issues special now exists in error when there was an error
forwarded out of checkpassword (e.g. kiod is broken) BUT NOT when that
error is that the user canceled the auth query.

no auth info being provided is already supported later on in the actual
mount code.

testing code for posterity

#define KIO_ARGS QByteArray packedArgs; QDataStream stream( &packedArgs, QIODevice::WriteOnly ); stream

    KIO_ARGS << int(1)
             << QString("\\\\HOST/PATH/") // remotepath
             << QString("/LOCAL/MNT") // mountpoint
                ;
    auto job = KIO::special(QUrl("smb://HOST/PATH/"), packedArgs);
Test Plan

broken kiod

  • run job
  • get error about broken kiod

cancel with working kiod

  • run job
  • get error about smbmount not being installed (bc it hasn't been a thing since the 2000's ;))

Diff Detail

Repository
R320 KIO Extras
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.
sitter created this revision.Oct 8 2019, 10:03 AM
Restricted Application added projects: Dolphin, Frameworks. · View Herald TranscriptOct 8 2019, 10:03 AM
Restricted Application added subscribers: kfm-devel, kde-frameworks-devel. · View Herald Transcript
sitter requested review of this revision.Oct 8 2019, 10:03 AM
dfaure accepted this revision.Oct 12 2019, 6:01 PM
This revision is now accepted and ready to land.Oct 12 2019, 6:01 PM
This revision was automatically updated to reflect the committed changes.