mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-11-24 10:16:00 +03:00
Merge pull request #11182 from Chocobo1/addPeer
Move error logging of adding peers to the proper place
This commit is contained in:
commit
ef8b37f7fa
4 changed files with 40 additions and 13 deletions
|
@ -30,7 +30,9 @@
|
||||||
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
|
||||||
BitTorrent::PeerAddress BitTorrent::PeerAddress::parse(const QString &address)
|
using namespace BitTorrent;
|
||||||
|
|
||||||
|
PeerAddress PeerAddress::parse(const QString &address)
|
||||||
{
|
{
|
||||||
QVector<QStringRef> ipPort;
|
QVector<QStringRef> ipPort;
|
||||||
|
|
||||||
|
@ -55,3 +57,14 @@ BitTorrent::PeerAddress BitTorrent::PeerAddress::parse(const QString &address)
|
||||||
|
|
||||||
return {ip, port};
|
return {ip, port};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString PeerAddress::toString() const
|
||||||
|
{
|
||||||
|
if (ip.isNull())
|
||||||
|
return {};
|
||||||
|
|
||||||
|
const QString ipStr = (ip.protocol() == QAbstractSocket::IPv6Protocol)
|
||||||
|
? ('[' + ip.toString() + ']')
|
||||||
|
: ip.toString();
|
||||||
|
return (ipStr + ':' + QString::number(port));
|
||||||
|
}
|
||||||
|
|
|
@ -40,5 +40,6 @@ namespace BitTorrent
|
||||||
ushort port = 0;
|
ushort port = 0;
|
||||||
|
|
||||||
static PeerAddress parse(const QString &address);
|
static PeerAddress parse(const QString &address);
|
||||||
|
QString toString() const;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -537,11 +537,28 @@ void TorrentHandle::removeUrlSeeds(const QVector<QUrl> &urlSeeds)
|
||||||
bool TorrentHandle::connectPeer(const PeerAddress &peerAddress)
|
bool TorrentHandle::connectPeer(const PeerAddress &peerAddress)
|
||||||
{
|
{
|
||||||
lt::error_code ec;
|
lt::error_code ec;
|
||||||
|
#if (LIBTORRENT_VERSION_NUM < 10200)
|
||||||
const lt::address addr = lt::address::from_string(peerAddress.ip.toString().toStdString(), ec);
|
const lt::address addr = lt::address::from_string(peerAddress.ip.toString().toStdString(), ec);
|
||||||
|
#else
|
||||||
|
const lt::address addr = lt::make_address(peerAddress.ip.toString().toStdString(), ec);
|
||||||
|
#endif
|
||||||
if (ec) return false;
|
if (ec) return false;
|
||||||
|
|
||||||
const boost::asio::ip::tcp::endpoint ep(addr, peerAddress.port);
|
const lt::tcp::endpoint endpoint(addr, peerAddress.port);
|
||||||
m_nativeHandle.connect_peer(ep);
|
try {
|
||||||
|
m_nativeHandle.connect_peer(endpoint);
|
||||||
|
}
|
||||||
|
#if (LIBTORRENT_VERSION_NUM < 10200)
|
||||||
|
catch (const boost::system::system_error &err) {
|
||||||
|
#else
|
||||||
|
catch (const lt::system_error &err) {
|
||||||
|
#endif
|
||||||
|
LogMsg(tr("Failed to add peer \"%1\" to torrent \"%2\". Reason: %3")
|
||||||
|
.arg(peerAddress.toString(), name(), QString::fromLocal8Bit(err.what())), Log::WARNING);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
LogMsg(tr("Peer \"%1\" is added to torrent \"%2\"").arg(peerAddress.toString(), name()));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,8 @@
|
||||||
|
|
||||||
#include "peerlistwidget.h"
|
#include "peerlistwidget.h"
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QClipboard>
|
#include <QClipboard>
|
||||||
#include <QHeaderView>
|
#include <QHeaderView>
|
||||||
|
@ -242,16 +244,10 @@ void PeerListWidget::showPeerListMenu(const QPoint &)
|
||||||
connect(addPeerAct, &QAction::triggered, this, [this, torrent]()
|
connect(addPeerAct, &QAction::triggered, this, [this, torrent]()
|
||||||
{
|
{
|
||||||
const QVector<BitTorrent::PeerAddress> peersList = PeersAdditionDialog::askForPeers(this);
|
const QVector<BitTorrent::PeerAddress> peersList = PeersAdditionDialog::askForPeers(this);
|
||||||
int peerCount = 0;
|
const int peerCount = std::count_if(peersList.cbegin(), peersList.cend(), [torrent](const BitTorrent::PeerAddress &peer)
|
||||||
for (const BitTorrent::PeerAddress &addr : peersList) {
|
{
|
||||||
if (torrent->connectPeer(addr)) {
|
return torrent->connectPeer(peer);
|
||||||
++peerCount;
|
});
|
||||||
LogMsg(tr("Peer \"%1\" added to \"%2\"").arg(addr.ip.toString(), torrent->name()));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
LogMsg(tr("Failed to add peer \"%1\" to \"%2\".").arg(addr.ip.toString(), torrent->name()), Log::WARNING);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (peerCount < peersList.length())
|
if (peerCount < peersList.length())
|
||||||
QMessageBox::information(this, tr("Adding peers"), tr("Some peers cannot be added. Check the Log for details."));
|
QMessageBox::information(this, tr("Adding peers"), tr("Some peers cannot be added. Check the Log for details."));
|
||||||
else if (peerCount > 0)
|
else if (peerCount > 0)
|
||||||
|
|
Loading…
Reference in a new issue