Internal
Public Access
Fix connect-time username prompt never reaching SSH/RDP authentication
The username entered at the connect-time prompt (added for issue #21) was updating SessionTab's own in-memory Profile copy, but SshSessionBackend/RdpSessionBackend are constructed with -- and only ever read from -- their own separate Profile copy on a worker thread, which never saw that edit. Authentication was still built from the original (blank) username regardless of what was typed into the prompt. SessionConnectOptions gains a username field, populated by SessionTab on every connect attempt and threaded through the same way password already is; both backends now prefer options.username over profile().username. Covered by a new SSH regression test using an exact-match fixture host that only succeeds for a specific user@host target. Bump version to v2026.9.16.5. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
0cdf930303
commit
b3cedcfa48
8 files changed
+93
-6
No files matched your search
@@ -1640,7 +1640,13 @@ void RdpSessionBackend::workerMain()
|
||||
const Profile& p = profile();
|
||||
|
||||
const QString host = p.host.trimmed();
|
||||
QString username = p.username.trimmed();
|
||||
// m_activeOptions.username carries a value prompted for at connect time
|
||||
// (see SessionTab::requestConnectOptions()) when the saved profile's
|
||||
// own username was blank; profile().username never sees that edit
|
||||
// since this backend's Profile copy was captured at construction time.
|
||||
QString username = m_activeOptions.username.trimmed().isEmpty()
|
||||
? p.username.trimmed()
|
||||
: m_activeOptions.username.trimmed();
|
||||
QString domain = p.domain.trimmed();
|
||||
if (domain.isEmpty()) {
|
||||
const int domainSeparator = username.indexOf(QLatin1Char('\\'));
|
||||
|
||||
Reference in new issue
Block a user