-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SSH Agent: Show error messages if there are problems with agent communication #1614
SSH Agent: Show error messages if there are problems with agent communication #1614
Conversation
src/sshagent/SSHAgent.h
Outdated
@@ -68,6 +70,8 @@ public slots: | |||
#endif | |||
|
|||
QMap<QString, QSet<OpenSSHKey>> m_keys; | |||
QString m_error; | |||
MessageWidget* m_messageWidget; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be a QPointer.
src/sshagent/SSHAgent.cpp
Outdated
{ | ||
m_instance = new SSHAgent(parent); | ||
m_instance = new SSHAgent(messageWidget); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It don't like parenting the SSH agent to a single GUI widget. You should continue using the MainWindow or, even better, the application itself. Either pass in the MessageWidget as a second mandatory parameter or, even better, remove tight coupling altogether and only emit signals which you can connect to the MessageWidget from the outside.
Connected to global MessageWidget with signals now. Still keeping the in-class error string because the same instance is shared between EditEntryWidget and it should be able to feed the error strings to its own MessageWidget. |
src/sshagent/SSHAgent.h
Outdated
|
||
const QString errorString() const; | ||
bool isAgentRunning() const; | ||
bool addIdentity(OpenSSHKey& key, quint32 lifetime = 0, bool confirm = false); | ||
bool removeIdentity(OpenSSHKey& key); | ||
void removeIdentityAtLock(const OpenSSHKey& key, const Uuid& uuid); | ||
|
||
signals: | ||
void showMessage(const QString& message, MessageWidget::MessageType); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't this signal rather be called error or connectionFailed or something?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can't directly map it to MessageWidget slot if it doesn't include the second argument so I made it compatible. Can I somehow create a glue between argument incompatible signal/slot easily?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would simply use a separate signal for each type of event (if you have multiple) and then create a function that consumes this event and shows a message with the correct MessageType.
9e9bc5a
to
a30f33a
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fab! Please rebase!
a30f33a
to
8d37f49
Compare
- Fix unnecessary automatic upgrade to KDBX 4.0 and prevent challenge-response key being stripped [#1568] - Abort saving and show an error message when challenge-response fails [#1659] - Support inner stream protection on all string attributes [#1646] - Fix favicon downloads not finishing on some websites [#1657] - Fix freeze due to invalid STDIN data [#1628] - Correct issue with encrypted RSA SSH keys [#1587] - Fix crash on macOS due to QTBUG-54832 [#1607] - Show error message if ssh-agent communication fails [#1614] - Fix --pw-stdin and filename parameters being ignored [#1608] - Fix Auto-Type syntax check not allowing spaces and special characters [#1626] - Fix reference placeholders in combination with Auto-Type [#1649] - Fix qtbase translations not being loaded [#1611] - Fix startup crash on Windows due to missing SVG libraries [#1662] - Correct database tab order regression [#1610] - Fix GCC 8 compilation error [#1612] - Fix copying of advanced attributes on KDE [#1640] - Fix member initialization of CategoryListWidgetDelegate [#1613] - Fix inconsistent toolbar icon sizes and provide higher-quality icons [#1616] - Improve preview panel geometry [#1609]
Implements in-entry messages when using manual add/removal and messages on lock/unlock.
Motivation and context
Error handling is currently silent and is a blocker for a user to figure out what's wrong. Considering this a UX bug.
How has this been tested?
Manually.
Types of changes
Checklist: