diff --git a/src/plugins/remotelinux/genericdirectuploadservice.cpp b/src/plugins/remotelinux/genericdirectuploadservice.cpp index e72e77e07b3..9839adccb7f 100644 --- a/src/plugins/remotelinux/genericdirectuploadservice.cpp +++ b/src/plugins/remotelinux/genericdirectuploadservice.cpp @@ -191,6 +191,8 @@ void GenericDirectUploadService::handleUploadFinished(SftpJobId jobId, const QSt this, &GenericDirectUploadService::handleStdOutData); connect(d->chmodProc.data(), &SshRemoteProcess::readyReadStandardError, this, &GenericDirectUploadService::handleStdErrData); + connect(d->chmodProc.data(), &SshRemoteProcess::readChannelFinished, + this, &GenericDirectUploadService::handleReadChannelFinished); d->chmodProc->start(); } else { uploadNextFile(); @@ -275,6 +277,8 @@ void GenericDirectUploadService::handleMkdirFinished(int exitStatus) this, &GenericDirectUploadService::handleStdOutData); connect(d->lnProc.data(), &SshRemoteProcess::readyReadStandardError, this, &GenericDirectUploadService::handleStdErrData); + connect(d->lnProc.data(), &SshRemoteProcess::readChannelFinished, + this, &GenericDirectUploadService::handleReadChannelFinished); d->lnProc->start(); } else { const SftpJobId job = d->uploader->uploadFile(df.localFilePath().toString(), @@ -310,6 +314,13 @@ void GenericDirectUploadService::handleStdErrData() emit stdErrData(QString::fromUtf8(process->readAllStandardError())); } +void GenericDirectUploadService::handleReadChannelFinished() +{ + SshRemoteProcess * const process = qobject_cast(sender()); + if (process && process->atEnd()) + process->close(); +} + void GenericDirectUploadService::stopDeployment() { QTC_ASSERT(d->state == InitializingSftp || d->state == Uploading, setFinished(); return); @@ -383,6 +394,8 @@ void GenericDirectUploadService::uploadNextFile() this, &GenericDirectUploadService::handleStdOutData); connect(d->mkdirProc.data(), &SshRemoteProcess::readyReadStandardError, this, &GenericDirectUploadService::handleStdErrData); + connect(d->mkdirProc.data(), &SshRemoteProcess::readChannelFinished, + this, &GenericDirectUploadService::handleReadChannelFinished); emit progressMessage(tr("Uploading file \"%1\"...") .arg(df.localFilePath().toUserOutput())); d->mkdirProc->start(); diff --git a/src/plugins/remotelinux/genericdirectuploadservice.h b/src/plugins/remotelinux/genericdirectuploadservice.h index e10f8a0b569..853b274af75 100644 --- a/src/plugins/remotelinux/genericdirectuploadservice.h +++ b/src/plugins/remotelinux/genericdirectuploadservice.h @@ -68,6 +68,7 @@ private: void handleChmodFinished(int exitStatus); void handleStdOutData(); void handleStdErrData(); + void handleReadChannelFinished(); void checkDeploymentNeeded(const ProjectExplorer::DeployableFile &file) const; void setFinished();