|
Line 0
Link Here
|
|
|
1 |
Revert the following commit until libtorrent 1.1.2 is released: |
| 2 |
|
| 3 |
From 729c80f9104a3d01ec724351bd6910b4b8d14c6c Mon Sep 17 00:00:00 2001 |
| 4 |
From: sledgehammer999 <hammered999@gmail.com> |
| 5 |
Date: Mon, 31 Oct 2016 02:31:56 +0200 |
| 6 |
Subject: [PATCH] Use new libtorrent 1.1.2+ utility function to generate client |
| 7 |
ID instead. |
| 8 |
|
| 9 |
--- src/base/bittorrent/session.cpp.orig 2016-12-17 18:02:06 UTC |
| 10 |
+++ src/base/bittorrent/session.cpp |
| 11 |
@@ -45,6 +45,7 @@ |
| 12 |
#include <QTimer> |
| 13 |
|
| 14 |
#include <cstdlib> |
| 15 |
+#include <sstream> |
| 16 |
#include <queue> |
| 17 |
#include <vector> |
| 18 |
|
| 19 |
@@ -194,6 +195,36 @@ namespace |
| 20 |
|
| 21 |
template <typename T> |
| 22 |
LowerLimited<T> lowerLimited(T limit, T ret) { return LowerLimited<T>(limit, ret); } |
| 23 |
+ |
| 24 |
+#if LIBTORRENT_VERSION_NUM >= 10100 |
| 25 |
+ std::string makeFingerprint(const char* peerId, int major, int minor, int revision, int tag) |
| 26 |
+ { |
| 27 |
+ Q_ASSERT(peerId); |
| 28 |
+ Q_ASSERT(major >= 0); |
| 29 |
+ Q_ASSERT(minor >= 0); |
| 30 |
+ Q_ASSERT(revision >= 0); |
| 31 |
+ Q_ASSERT(tag >= 0); |
| 32 |
+ Q_ASSERT(std::strlen(peerId) == 2); |
| 33 |
+ |
| 34 |
+ auto versionToChar = [](int v) -> char |
| 35 |
+ { |
| 36 |
+ if (v >= 0 && v < 10) return static_cast<char>('0' + v); |
| 37 |
+ if (v >= 10) return static_cast<char>('A' + (v - 10)); |
| 38 |
+ Q_ASSERT(false); |
| 39 |
+ return '0'; |
| 40 |
+ }; |
| 41 |
+ |
| 42 |
+ std::ostringstream buf; |
| 43 |
+ buf << '-' |
| 44 |
+ << peerId |
| 45 |
+ << versionToChar(major) |
| 46 |
+ << versionToChar(minor) |
| 47 |
+ << versionToChar(revision) |
| 48 |
+ << versionToChar(tag) |
| 49 |
+ << '-'; |
| 50 |
+ return buf.str(); |
| 51 |
+ } |
| 52 |
+#endif |
| 53 |
} |
| 54 |
|
| 55 |
// Session |
| 56 |
@@ -334,7 +365,7 @@ Session::Session(QObject *parent) |
| 57 |
dispatchAlerts(alertPtr.release()); |
| 58 |
}); |
| 59 |
#else |
| 60 |
- std::string peerId = libt::generate_fingerprint(PEER_ID, VERSION_MAJOR, VERSION_MINOR, VERSION_BUGFIX, VERSION_BUILD); |
| 61 |
+ std::string peerId = makeFingerprint(PEER_ID, VERSION_MAJOR, VERSION_MINOR, VERSION_BUGFIX, VERSION_BUILD); |
| 62 |
libt::settings_pack pack; |
| 63 |
pack.set_int(libt::settings_pack::alert_mask, alertMask); |
| 64 |
pack.set_str(libt::settings_pack::peer_fingerprint, peerId); |