diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp
index 889076d828ae930471449b889199e771d2d7fcdd..c1d94b21309a9244534d402f2e5735ff5ab92b76 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp
@@ -88,6 +88,7 @@ void MaemoDeployStep::run(QFutureInterface<bool> &fi)
     QTimer::singleShot(0, this, SLOT(start()));
 
     MaemoDeployEventHandler eventHandler(this, fi);
+    connect (&eventHandler, SIGNAL(destroyed()), this, SLOT(stop()));
 }
 
 BuildStepConfigWidget *MaemoDeployStep::createConfigWidget()
@@ -176,8 +177,8 @@ void MaemoDeployStep::stop()
     } else if (!m_uploadsInProgress.isEmpty() || !m_linksInProgress.isEmpty()) {
         m_uploadsInProgress.clear();
         m_linksInProgress.clear();
-        m_uploader->closeChannel();
         disconnect(m_uploader.data(), 0, this, 0);
+        m_uploader->closeChannel();
     }
     if (m_connection)
         disconnect(m_connection.data(), 0, this, 0);
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.h b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.h
index 95331c1cd96dadbb34548000a49575908c21c49e..9d2fb076df2bb66216c4df67daf88a4ecfcebf05 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.h
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.h
@@ -74,6 +74,7 @@ signals:
 
 private slots:
     void start();
+    void stop();
     void handleConnected();
     void handleConnectionFailure();
     void handleSftpChannelInitialized();
@@ -95,7 +96,6 @@ private:
     virtual bool fromMap(const QVariantMap &map);
 
     void ctor();
-    void stop();
     void raiseError(const QString &error);
     void writeOutput(const QString &text,
         const QTextCharFormat &format = QTextCharFormat());