diff --git a/src/plugins/coreplugin/ssh/sshconnection.cpp b/src/plugins/coreplugin/ssh/sshconnection.cpp index 253c949855e540fe63fa7b97696eae6d0674b38e..7433bbebd8dd91f1583c83435c42f904d2ae5101 100644 --- a/src/plugins/coreplugin/ssh/sshconnection.cpp +++ b/src/plugins/coreplugin/ssh/sshconnection.cpp @@ -115,6 +115,7 @@ public: } } + bool isConnected() const { return channel() != -1; } bool hasError() const { return !m_error.isEmpty(); } QString error() const { return m_error; } int channel() const { return m_channel; } @@ -255,6 +256,9 @@ InteractiveSshConnection::~InteractiveSshConnection() bool InteractiveSshConnection::start() { + if (isConnected()) + return true; + if (!d->conn.start(true, wakeupReader, d->outputReader)) return false; @@ -297,6 +301,11 @@ InteractiveSshConnection::Ptr InteractiveSshConnection::create(const SshServerIn return Ptr(new InteractiveSshConnection(server)); } +bool InteractiveSshConnection::isConnected() const +{ + return d->conn.isConnected(); +} + bool InteractiveSshConnection::hasError() const { return d->conn.hasError(); @@ -335,11 +344,14 @@ SftpConnection::~SftpConnection() bool SftpConnection::start() { + if (isConnected()) + return true; if (!d->conn.start(false, 0, 0)) return false; if (!d->conn.ssh->initSftp(d->sftp, d->conn.channel()) || !d->sftp.setTimeout(d->conn.server().timeout)) { d->conn.setError(tr("Error setting up SFTP subsystem"), true); + quit(); return false; } return true; @@ -456,6 +468,11 @@ void SftpConnection::quit() d->conn.quit(); } +bool SftpConnection::isConnected() const +{ + return d->conn.isConnected(); +} + bool SftpConnection::hasError() const { return d->conn.hasError(); diff --git a/src/plugins/coreplugin/ssh/sshconnection.h b/src/plugins/coreplugin/ssh/sshconnection.h index cc2338470169c87a06547bb951d7703fc6a9cf45..8c7b59f594bd7a7db5c1c9e4eec8feca92f962f8 100644 --- a/src/plugins/coreplugin/ssh/sshconnection.h +++ b/src/plugins/coreplugin/ssh/sshconnection.h @@ -81,6 +81,7 @@ public: bool start(); void quit(); + bool isConnected() const; bool sendInput(const QByteArray &input); // Should normally end in newline. QByteArray waitForRemoteOutput(int msecs = -1); bool hasError() const; @@ -124,6 +125,7 @@ public: static Ptr create(const SshServerInfo &server); bool start(); void quit(); + bool isConnected() const; bool hasError() const; QString error() const; bool upload(const QString &localFilePath, const QByteArray &remoteFilePath); diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp index 329d185b3f1af146b492fb0ac139797e89488156..44b1beaa174a8f8e18e02e5515163fe1383518ff 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp @@ -110,7 +110,7 @@ void AbstractMaemoRunControl::handleInitialCleanupFinished() emit appendMessage(this, tr("Initial cleanup canceled by user."), false); emit finished(); } else if (m_initialCleaner->hasError()) { - handleError(tr("Error running initial cleanup: %1.") + handleError(tr("Error running initial cleanup: %1") .arg(m_initialCleaner->error())); emit finished(); } else {