diff --git a/src/compat/plugins/daemon/core/service/rpc/sendrpcservice.cpp b/src/compat/plugins/daemon/core/service/rpc/sendrpcservice.cpp index 36dcc7b1..10e632e0 100644 --- a/src/compat/plugins/daemon/core/service/rpc/sendrpcservice.cpp +++ b/src/compat/plugins/daemon/core/service/rpc/sendrpcservice.cpp @@ -47,7 +47,7 @@ void SendRpcWork::handleDoSendProtoMsg(const uint32 type, const QString appName, { if (_stoped) return; - DLOG << "000000 " << appName.toStdString() << type << msg.toStdString(); + DLOG << "compat: " << appName.toStdString() << " type:" << type << " msg:" << msg.toStdString(); auto sender = this->rpcSender(appName); SendResult res; diff --git a/src/lib/cooperation/core/net/helper/sharehelper.cpp b/src/lib/cooperation/core/net/helper/sharehelper.cpp index 11fd9b29..1cd688a2 100644 --- a/src/lib/cooperation/core/net/helper/sharehelper.cpp +++ b/src/lib/cooperation/core/net/helper/sharehelper.cpp @@ -91,7 +91,7 @@ void ShareHelperPrivate::initConnect() void ShareHelperPrivate::cancelShareApply() { taskDialog()->hide(); - NetworkUtil::instance()->cancelApply("share"); + NetworkUtil::instance()->cancelApply("share", targetDeviceInfo->ipAddress()); } void ShareHelperPrivate::notifyMessage(const QString &body, const QStringList &actions, int expireTimeout) @@ -159,9 +159,9 @@ void ShareHelperPrivate::onActionTriggered(const QString &action) { isReplied = true; if (action == NotifyRejectAction) { - NetworkUtil::instance()->replyShareRequest(false, selfFingerPrint); + NetworkUtil::instance()->replyShareRequest(false, selfFingerPrint, senderDeviceIp); } else if (action == NotifyAcceptAction) { - NetworkUtil::instance()->replyShareRequest(true, selfFingerPrint); + NetworkUtil::instance()->replyShareRequest(true, selfFingerPrint, senderDeviceIp); auto client = ShareCooperationServiceManager::instance()->client(); // remove "--disable-crypto" if receive server has fingerprint. diff --git a/src/lib/cooperation/core/net/helper/transferhelper.cpp b/src/lib/cooperation/core/net/helper/transferhelper.cpp index 90204fd7..40a79e9d 100644 --- a/src/lib/cooperation/core/net/helper/transferhelper.cpp +++ b/src/lib/cooperation/core/net/helper/transferhelper.cpp @@ -165,6 +165,7 @@ void TransferHelper::registBtn() void TransferHelper::sendFiles(const QString &ip, const QString &devName, const QStringList &fileList) { d->who = devName; + d->targetDeviceIp = ip; d->readyToSendFiles = fileList; if (fileList.isEmpty()) return; @@ -315,12 +316,12 @@ void TransferHelper::onActionTriggered(const QString &action) d->transferInfo.clear(); if (action == NotifyCancelAction) { cancelTransfer(true); // do UI first - NetworkUtil::instance()->cancelTrans(); + NetworkUtil::instance()->cancelTrans(d->targetDeviceIp); } else if (action == NotifyRejectAction) { - NetworkUtil::instance()->replyTransRequest(false); + NetworkUtil::instance()->replyTransRequest(false, d->targetDeviceIp); } else if (action == NotifyAcceptAction) { d->role = Client; - NetworkUtil::instance()->replyTransRequest(true); + NetworkUtil::instance()->replyTransRequest(true, d->targetDeviceIp); } else if (action == NotifyCloseAction) { #ifdef __linux__ d->notice->closeNotification(); @@ -354,6 +355,7 @@ void TransferHelper::notifyTransferRequest(const QString &nick, const QString &i static QString msg(tr("\"%1\" send some files to you")); d->who = nick; + d->targetDeviceIp = ip; #ifdef __linux__ QStringList actions { NotifyRejectAction, tr("Reject"), @@ -500,7 +502,7 @@ void TransferHelper::accepted() d->role = Server; d->status.storeRelease(Transfering); updateProgress(1, tr("calculating")); - NetworkUtil::instance()->doSendFiles(d->readyToSendFiles); + NetworkUtil::instance()->doSendFiles(d->readyToSendFiles, d->targetDeviceIp); } void TransferHelper::rejected() @@ -533,7 +535,7 @@ void TransferHelper::cancelTransferApply() d->status.storeRelease(Idle); d->confirmTimer.stop(); d->transDialog()->hide(); - NetworkUtil::instance()->cancelApply("transfer"); + NetworkUtil::instance()->cancelApply("transfer", d->targetDeviceIp); } // ----------compat the old protocol----------- @@ -618,7 +620,7 @@ void TransferHelper::onTransferExcepted(int type, const QString &remote) cancelTransfer(true); // hide dialog first and show exception // cancel transfer and hide progress - NetworkUtil::instance()->cancelTrans(); + NetworkUtil::instance()->cancelTrans(remote); switch (type) { case EX_NETWORK_PINGOUT: diff --git a/src/lib/cooperation/core/net/helper/transferhelper_p.h b/src/lib/cooperation/core/net/helper/transferhelper_p.h index 895730fd..2ad7bce0 100644 --- a/src/lib/cooperation/core/net/helper/transferhelper_p.h +++ b/src/lib/cooperation/core/net/helper/transferhelper_p.h @@ -63,6 +63,8 @@ class TransferHelperPrivate : public QObject QString recvFilesSavePath; QTimer confirmTimer; + // 作为接收方时,发送方的ip; 作为发送方时,接收方的ip + QString targetDeviceIp; #ifdef __linux__ NoticeUtil *notice { nullptr }; diff --git a/src/lib/cooperation/core/net/networkutil.cpp b/src/lib/cooperation/core/net/networkutil.cpp index c99972d3..e21572ea 100644 --- a/src/lib/cooperation/core/net/networkutil.cpp +++ b/src/lib/cooperation/core/net/networkutil.cpp @@ -675,9 +675,9 @@ void NetworkUtil::sendDisconnectShareEvents(const QString &ip) } } -void NetworkUtil::replyTransRequest(bool agree) +void NetworkUtil::replyTransRequest(bool agree, const QString &targetIp) { - if (!d->confirmTargetAddress.isEmpty()) { + if (d->confirmTargetAddress == targetIp) { // send transfer reply, skip result ApplyMessage msg; msg.flag = agree ? REPLY_ACCEPT : REPLY_REJECT; @@ -699,9 +699,9 @@ void NetworkUtil::replyTransRequest(bool agree) } } -void NetworkUtil::replyShareRequest(bool agree, const QString &selfprint) +void NetworkUtil::replyShareRequest(bool agree, const QString &selfprint, const QString &targetIp) { - if (!d->confirmTargetAddress.isEmpty()) { + if (d->confirmTargetAddress == targetIp) { // send transfer reply, skip result ApplyMessage msg; msg.flag = agree ? REPLY_ACCEPT : REPLY_REJECT; @@ -721,9 +721,9 @@ void NetworkUtil::replyShareRequest(bool agree, const QString &selfprint) } } -void NetworkUtil::cancelApply(const QString &type) +void NetworkUtil::cancelApply(const QString &type, const QString &targetIp) { - if (!d->confirmTargetAddress.isEmpty()) { + if (d->confirmTargetAddress == targetIp) { ApplyMessage msg; msg.nick = type.toStdString(); QString jsonMsg = msg.as_json().serialize().c_str(); @@ -738,9 +738,9 @@ void NetworkUtil::cancelApply(const QString &type) } } -void NetworkUtil::cancelTrans() +void NetworkUtil::cancelTrans(const QString &targetIp) { - if (!d->confirmTargetAddress.isEmpty()) { + if (d->confirmTargetAddress == targetIp) { d->sessionManager->cancelSyncFile(d->confirmTargetAddress); } else { #ifdef ENABLE_COMPAT @@ -753,9 +753,9 @@ void NetworkUtil::cancelTrans() } } -void NetworkUtil::doSendFiles(const QStringList &fileList) +void NetworkUtil::doSendFiles(const QStringList &fileList, const QString &targetIp) { - if (!d->confirmTargetAddress.isEmpty()) { + if (d->confirmTargetAddress == targetIp) { int ranport = deepin_cross::CommonUitls::getAvailablePort(); d->sessionManager->sendFiles(d->confirmTargetAddress, ranport, fileList); } else { diff --git a/src/lib/cooperation/core/net/networkutil.h b/src/lib/cooperation/core/net/networkutil.h index a6d3f956..ccfca154 100644 --- a/src/lib/cooperation/core/net/networkutil.h +++ b/src/lib/cooperation/core/net/networkutil.h @@ -34,16 +34,16 @@ class NetworkUtil : public QObject //transfer void tryTransApply(const QString &ip); void sendTransApply(const QString &ip, bool compat); - void replyTransRequest(bool agree); - void cancelTrans(); - void doSendFiles(const QStringList &fileList); + void replyTransRequest(bool agree, const QString &targetIp); + void cancelTrans(const QString &targetIp); + void doSendFiles(const QStringList &fileList, const QString &targetIp); //Keymouse sharing void tryShareApply(const QString &ip, const QString &selfprint); void sendShareApply(const QString &ip, bool compat); void sendDisconnectShareEvents(const QString &ip); - void replyShareRequest(bool agree, const QString &selfprint); - void cancelApply(const QString &type); + void replyShareRequest(bool agree, const QString &selfprint, const QString &targetIp); + void cancelApply(const QString &type, const QString &targetIp); QString deviceInfoStr();