diff --git a/smb/kio_smb.h b/smb/kio_smb.h --- a/smb/kio_smb.h +++ b/smb/kio_smb.h @@ -144,7 +144,7 @@ */ bool auth_initialize_smbc(); - bool checkPassword(SMBUrl &url); + int checkPassword(SMBUrl &url); //--------------------------------------------- diff --git a/smb/kio_smb_auth.cpp b/smb/kio_smb_auth.cpp --- a/smb/kio_smb_auth.cpp +++ b/smb/kio_smb_auth.cpp @@ -119,7 +119,7 @@ strncpy(password, info.password.toUtf8(), pwmaxlen - 1); } -bool SMBSlave::checkPassword(SMBUrl &url) +int SMBSlave::checkPassword(SMBUrl &url) { qCDebug(KIO_SMB) << "checkPassword for " << url; @@ -163,10 +163,10 @@ cacheAuthentication(info); } - return true; + return KJob::NoError; } - qCDebug(KIO_SMB) << "no value from openPasswordDialog\n"; - return false; + qCDebug(KIO_SMB) << "no value from openPasswordDialog; error:" << passwordDialogErrorCode; + return passwordDialogErrorCode; } //-------------------------------------------------------------------------- diff --git a/smb/kio_smb_browse.cpp b/smb/kio_smb_browse.cpp --- a/smb/kio_smb_browse.cpp +++ b/smb/kio_smb_browse.cpp @@ -147,15 +147,20 @@ { SMBUrl smbUrl(url); - if (checkPassword(smbUrl)) + const int passwordError = checkPassword(smbUrl); + if (passwordError == KJob::NoError) { redirection(smbUrl); finished(); } - else + else if (passwordError == KIO::ERR_USER_CANCELED) { reportError(url, ret); } + else + { + error(passwordError, url.toString()); + } return; } @@ -489,11 +494,17 @@ else { if (errNum == EPERM || errNum == EACCES || workaroundEEXIST(errNum)) { - if (checkPassword(m_current_url)) { + const int passwordError = checkPassword(m_current_url); + if (passwordError == KJob::NoError) { redirection( m_current_url ); finished(); - return; + } else if (passwordError == KIO::ERR_USER_CANCELED) { + reportError(m_current_url, errNum); + } else { + error(passwordError, m_current_url.toString()); } + + return; } reportError(m_current_url, errNum); diff --git a/smb/kio_smb_mount.cpp b/smb/kio_smb_mount.cpp --- a/smb/kio_smb_mount.cpp +++ b/smb/kio_smb_mount.cpp @@ -67,7 +67,7 @@ smburl.setHost(host); smburl.setPath('/' + share); - if ( !checkPassword(smburl) ) + if ( checkPassword(smburl) != KJob::NoError ) { finished(); return;