summaryrefslogtreecommitdiff
path: root/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.cpp
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@nokia.com>2010-10-01 15:49:09 +0200
committerChristian Kandeler <christian.kandeler@nokia.com>2010-10-01 15:50:03 +0200
commit97a56a627ac1f3d7093efb1df255e1ef7b036368 (patch)
treede123f4afefea32252f39f35c6a14c0e188d4e9e /src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.cpp
parentf710584603c9322b57dd3725edbcd1051965e9ad (diff)
downloadqt-creator-97a56a627ac1f3d7093efb1df255e1ef7b036368.tar.gz
Maemo: Fix UTFS timeout timer not being stopped in some cases.
Diffstat (limited to 'src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.cpp')
-rw-r--r--src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.cpp41
1 files changed, 24 insertions, 17 deletions
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.cpp
index 32403854ae..092f478a2c 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.cpp
@@ -89,7 +89,7 @@ void MaemoRemoteMounter::mount()
if (!m_toolChain->allowsRemoteMounts())
m_mountSpecs.clear();
if (m_mountSpecs.isEmpty()) {
- m_state = Inactive;
+ setState(Inactive);
emit reportProgress(tr("No directories to mount"));
emit mounted();
} else {
@@ -121,7 +121,7 @@ void MaemoRemoteMounter::unmount()
SLOT(handleUnmountProcessFinished(int)));
connect(m_unmountProcess.data(), SIGNAL(errorOutputAvailable(QByteArray)),
this, SLOT(handleUmountStderr(QByteArray)));
- m_state = Unmounting;
+ setState(Unmounting);
m_unmountProcess->start();
}
@@ -131,7 +131,7 @@ void MaemoRemoteMounter::handleUnmountProcessFinished(int exitStatus)
if (m_state == Inactive)
return;
- m_state = Inactive;
+ setState(Inactive);
QString errorMsg;
switch (exitStatus) {
@@ -165,7 +165,7 @@ void MaemoRemoteMounter::handleUnmountProcessFinished(int exitStatus)
void MaemoRemoteMounter::stop()
{
- m_state = Inactive;
+ setState(Inactive);
if (m_utfsClientUploader) {
disconnect(m_utfsClientUploader.data(), 0, this, 0);
m_utfsClientUploader->closeChannel();
@@ -190,7 +190,7 @@ void MaemoRemoteMounter::deployUtfsClient()
this, SLOT(handleUploaderInitializationFailed(QString)));
m_utfsClientUploader->initialize();
- m_state = UploaderInitializing;
+ setState(UploaderInitializing);
}
void MaemoRemoteMounter::handleUploaderInitializationFailed(const QString &reason)
@@ -199,7 +199,7 @@ void MaemoRemoteMounter::handleUploaderInitializationFailed(const QString &reaso
if (m_state == UploaderInitializing) {
emit error(tr("Failed to establish SFTP connection: %1").arg(reason));
- m_state = Inactive;
+ setState(Inactive);
}
}
@@ -218,11 +218,11 @@ void MaemoRemoteMounter::handleUploaderInitialized()
m_uploadJobId = m_utfsClientUploader->uploadFile(localFile,
utfsClientOnDevice(), SftpOverwriteExisting);
if (m_uploadJobId == SftpInvalidJob) {
- m_state = Inactive;
+ setState(Inactive);
emit error(tr("Could not upload UTFS client (%1).").arg(localFile));
+ } else {
+ setState(UploadRunning);
}
-
- m_state = UploadRunning;
}
void MaemoRemoteMounter::handleUploadFinished(Core::SftpJobId jobId,
@@ -241,7 +241,7 @@ void MaemoRemoteMounter::handleUploadFinished(Core::SftpJobId jobId,
m_uploadJobId = SftpInvalidJob;
if (!errorMsg.isEmpty()) {
emit error(tr("Could not upload UTFS client: %1").arg(errorMsg));
- m_state = Inactive;
+ setState(Inactive);
return;
}
@@ -285,14 +285,14 @@ void MaemoRemoteMounter::startUtfsClients()
this, SLOT(handleUtfsClientStderr(QByteArray)));
m_mountProcess->start();
- m_state = UtfsClientsStarting;
+ setState(UtfsClientsStarting);
}
void MaemoRemoteMounter::handleUtfsClientsStarted()
{
ASSERT_STATE(QList<State>() << UtfsClientsStarting << Inactive);
if (m_state == UtfsClientsStarting) {
- m_state = UtfsClientsStarted;
+ setState(UtfsClientsStarted);
QTimer::singleShot(250, this, SLOT(startUtfsServers()));
}
}
@@ -305,7 +305,7 @@ void MaemoRemoteMounter::handleUtfsClientsFinished(int exitStatus)
if (m_state == Inactive)
return;
- m_state = Inactive;
+ setState(Inactive);
if (exitStatus == SshRemoteProcess::ExitedNormally
&& m_mountProcess->exitCode() == 0) {
m_utfsServerTimer->stop();
@@ -352,7 +352,7 @@ void MaemoRemoteMounter::startUtfsServers()
utfsServerProc->start(utfsServer(), utfsServerArgs);
}
- m_state = UtfsServersStarted;
+ setState(UtfsServersStarted);
}
void MaemoRemoteMounter::handleUtfsServerStderr()
@@ -377,10 +377,9 @@ void MaemoRemoteMounter::handleUtfsServerError(QProcess::ProcessError)
.arg(QString::fromLocal8Bit(errorOutput));
}
killAllUtfsServers();
- m_utfsServerTimer->stop();
emit error(tr("Error running UTFS server: %1").arg(errorString));
- m_state = Inactive;
+ setState(Inactive);
}
void MaemoRemoteMounter::handleUtfsServerFinished(int /* exitCode */,
@@ -436,8 +435,9 @@ void MaemoRemoteMounter::handleUtfsServerTimeout()
killAllUtfsServers();
emit error(tr("Timeout waiting for UTFS servers to connect."));
+ // TODO: utfs clients are still waiting; kill them here
- m_state = Inactive;
+ setState(Inactive);
}
void MaemoRemoteMounter::assertState(State expectedState, const char *func)
@@ -452,5 +452,12 @@ void MaemoRemoteMounter::assertState(const QList<State> &expectedStates,
qDebug("Unexpected state %d at %s.", m_state, func))
}
+void MaemoRemoteMounter::setState(State newState)
+{
+ if (newState == Inactive)
+ m_utfsServerTimer->stop();
+ m_state = newState;
+}
+
} // namespace Internal
} // namespace Qt4ProjectManager