summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Alfredsen <loki_val@gentoo.org>2008-06-28 11:34:23 +0000
committerPeter Alfredsen <loki_val@gentoo.org>2008-06-28 11:34:23 +0000
commit6266b89c6dbe3feb4658aa4b42050d25170f8c59 (patch)
tree542f367a785c55685c2ae5fa31f54c25a087fecb /net-libs/libtorrent
parentRevision bump, fixes bug #229313. Thanks to Thomas Arnett for reporting with ... (diff)
downloadhistorical-6266b89c6dbe3feb4658aa4b42050d25170f8c59.tar.gz
historical-6266b89c6dbe3feb4658aa4b42050d25170f8c59.tar.bz2
historical-6266b89c6dbe3feb4658aa4b42050d25170f8c59.zip
Revision bump to update patchset with newest fixes from Josef Drexler. Also fixes bug #227391
Package-Manager: portage-2.2_rc1/cvs/Linux 2.6.25.8 i686
Diffstat (limited to 'net-libs/libtorrent')
-rw-r--r--net-libs/libtorrent/ChangeLog12
-rw-r--r--net-libs/libtorrent/Manifest7
-rw-r--r--net-libs/libtorrent/files/libtorrent-0.12.2-fix_have_timer.patch47
-rw-r--r--net-libs/libtorrent/files/libtorrent-0.12.2-fix_pex_leak.patch102
-rw-r--r--net-libs/libtorrent/files/libtorrent-0.12.2-fix_write_datagram.patch13
-rw-r--r--net-libs/libtorrent/libtorrent-0.12.2-r3.ebuild (renamed from net-libs/libtorrent/libtorrent-0.12.2-r2.ebuild)7
6 files changed, 184 insertions, 4 deletions
diff --git a/net-libs/libtorrent/ChangeLog b/net-libs/libtorrent/ChangeLog
index 98a8a439b03d..a08402f24fd1 100644
--- a/net-libs/libtorrent/ChangeLog
+++ b/net-libs/libtorrent/ChangeLog
@@ -1,6 +1,16 @@
# ChangeLog for net-libs/libtorrent
# Copyright 1999-2008 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-libs/libtorrent/ChangeLog,v 1.116 2008/06/05 06:41:55 loki_val Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-libs/libtorrent/ChangeLog,v 1.117 2008/06/28 11:34:22 loki_val Exp $
+
+*libtorrent-0.12.2-r3 (28 Jun 2008)
+
+ 28 Jun 2008; Peter Alfredsen <loki_val@gentoo.org>
+ +files/libtorrent-0.12.2-fix_have_timer.patch,
+ +files/libtorrent-0.12.2-fix_pex_leak.patch,
+ +files/libtorrent-0.12.2-fix_write_datagram.patch,
+ -libtorrent-0.12.2-r2.ebuild, +libtorrent-0.12.2-r3.ebuild:
+ Revision bump to update patchset with newest fixes from Josef Drexler.
+ Also fixes bug #227391
*libtorrent-0.12.2-r2 (05 Jun 2008)
diff --git a/net-libs/libtorrent/Manifest b/net-libs/libtorrent/Manifest
index 07d6da3ab467..c87d60351dfc 100644
--- a/net-libs/libtorrent/Manifest
+++ b/net-libs/libtorrent/Manifest
@@ -2,12 +2,15 @@ AUX libtorrent-0.11.9+gcc-4.3.patch 3283 RMD160 bb48b1a0de3101fdc74989efd997a33f
AUX libtorrent-0.12.2-dht_bounds_fix.patch 870 RMD160 05e7d690a0f808ad293f0304f5eb31936b7c5850 SHA1 89b34f3d74140ceab993573c5eb1d6ceab366a21 SHA256 e8754b864b4108e779b8cfc4f49aac0a63fa0dc6702f3e7b0348477319f1ed54
AUX libtorrent-0.12.2-fix_cull.patch 568 RMD160 1f8b970a885df47f512721216dab6245a733e8d1 SHA1 4af00bdcece5bd4a905b8bf6cde016c5add6ffce SHA256 78cb8cdde1c5b98b4c9f2c96f8e192bd9e963f221c51583b57e61b5bde529e32
AUX libtorrent-0.12.2-fix_dht_target.patch 1646 RMD160 7a15d31c1acba41dda0c39f938a2127f02cb8da4 SHA1 47304fca6bd005f396157c3e1cc9e60df92af45e SHA256 21727f361ead79315e971e2729f84eb71d94eec98c0f852842f6e78ce4011dea
+AUX libtorrent-0.12.2-fix_have_timer.patch 2116 RMD160 966f7203d3632adfad8a9be899462b974d9b1cd2 SHA1 9d6f220fe6aad5ea845973d3ab4c5fca98a5c390 SHA256 b4a3ad44765d98dd7dcd4e1361eecd2111ba65aecb123da575ad57cfd1864fbf
+AUX libtorrent-0.12.2-fix_pex_leak.patch 3987 RMD160 3374a25e5e3d41efd8af0704ed895e67924b62ca SHA1 ba32e66305e982a99b8281f14a6e60ad3780f817 SHA256 ebd65f89c9dbae4070c3293f412b96eaffc6eacc3acc7de8b5a9eba04c500f24
AUX libtorrent-0.12.2-fix_start_stop_filter.patch 701 RMD160 6b109e050cc1e66d2d9874bce0fdf599188978c9 SHA1 3289506a9c76d080edbeb3ef1a42694a64da6c4d SHA256 d422c5d9a82a0d799f3b949e4b0d2fd293d98baab1fb293642544895ece75926
+AUX libtorrent-0.12.2-fix_write_datagram.patch 554 RMD160 cbd6d3804fad36b2655f57f6d1fcbb717327bb84 SHA1 828947393e4b17d6b2316e0414f15e7fef434688 SHA256 5b0977562852b49e4557c31b092d822c6081ba25b2c763a16e2ca60c08c4ba1d
AUX libtorrent-0.12.2-lt-ver.patch 578 RMD160 03fc5d5326bd457c6386db791ceda7e187e8bae2 SHA1 2586464297a9ccc0004d99ef99647715e5cd54ff SHA256 14aedb58c898692be6963a582b55d599f93a74733539238a1f2d0f7c14542586
AUX libtorrent-0.12.2-tracker_timer_fix.patch 952 RMD160 ccf4df0575210f95e758ecee92bc9455c6b470d1 SHA1 5f197cf78a80f31c8770d3dcf7fa5eda215bb0a8 SHA256 ac8669a130de34c5ea4a43eef7da439125ca1ff8ccf3c0ac4a77d8717b839d97
DIST libtorrent-0.11.9.tar.gz 545210 RMD160 fb8de66d65791dab67c195356a98de7cf653d3c9 SHA1 d88e754d1c2ff7f8c5fb7544331264bd505870b8 SHA256 71f09218a7784b21ab53cdfcd8fa122da60352e5ca117fda7cd8d2763f908a08
DIST libtorrent-0.12.2.tar.gz 585374 RMD160 88cdc415f98afd8b87fa6d7330906737c3e434fa SHA1 a53d2c671e9f2dd971d0622d5b3672da91c46ef9 SHA256 cf9d2cd667fd6939a3e0bd27e48d0c7f35d9ab2f7affbb3214da03fd2c1360a8
EBUILD libtorrent-0.11.9.ebuild 1092 RMD160 da7b3481dc661adc564d9fe18b1af41bf9020ec0 SHA1 9d45afa155e37477e94dc9b8ff9d97e9f16a8260 SHA256 66270b7da8e7989c851b569e58f4a342d7080db6470be02998cb4c435120aabe
-EBUILD libtorrent-0.12.2-r2.ebuild 1436 RMD160 8f738acbaa5a4418181e70cac930c60cd6a60dc9 SHA1 91736fb5b20f0105e345d815d64d05c09296c676 SHA256 e116b5553f65cf61a1ac83914236a04ba24c3753f4b8be139cbaea546f9dea89
-MISC ChangeLog 17582 RMD160 49ad0b67f234333a093a46c03e938d669bccc48c SHA1 1d09c8da2edf3f2ee5960a6d26c86be281713d18 SHA256 d2a1d68a264825574a8b0db36d1b4f426649116f9aa1743752d3ef8a2d0b4ceb
+EBUILD libtorrent-0.12.2-r3.ebuild 1604 RMD160 db7cf561e93e70f42bd8f616dce2c649c4a6bf66 SHA1 5a058d3b5fc3442d236f569d9e0ab62e0db5d9ea SHA256 bb59b47d7c710c457a99eb67c044c72786a6c436aeff2b534dbdcfdbea4249d8
+MISC ChangeLog 17982 RMD160 905c3070d26eec52a231e9d6094d612dbb221a66 SHA1 a2b03217c0e8d336ae8a447e8a9040f9c8e907fc SHA256 695ae536cff5f1efaaa89149ea8086e41e79f93f7c9d1230bf0356781d5e6d7f
MISC metadata.xml 436 RMD160 4546e998ce9c6303f4c91d7413b1f732bbb2a8aa SHA1 fb1f2cddef7e268bf64572615fbc3c326ed673fd SHA256 936fb95c2c44078d98c0c74d0b148744036d6a18d40b8b482d7656ef0e211bff
diff --git a/net-libs/libtorrent/files/libtorrent-0.12.2-fix_have_timer.patch b/net-libs/libtorrent/files/libtorrent-0.12.2-fix_have_timer.patch
new file mode 100644
index 000000000000..c42c3f925885
--- /dev/null
+++ b/net-libs/libtorrent/files/libtorrent-0.12.2-fix_have_timer.patch
@@ -0,0 +1,47 @@
+Index: libtorrent/src/protocol/handshake_manager.cc
+===================================================================
+--- libtorrent/src/protocol/handshake_manager.cc (revision 1060)
++++ libtorrent/src/protocol/handshake_manager.cc (working copy)
+@@ -208,13 +208,13 @@
+ e_none,
+ &download->info()->hash());
+
++ pcb->peer_chunks()->set_have_timer(handshake->initialized_time());
++
+ if (handshake->unread_size() != 0) {
+ if (handshake->unread_size() > PeerConnectionBase::ProtocolRead::buffer_size)
+ throw internal_error("HandshakeManager::receive_succeeded(...) Unread data won't fit PCB's read buffer.");
+
+ pcb->push_unread(handshake->unread_data(), handshake->unread_size());
+- pcb->peer_chunks()->set_have_timer(handshake->initialized_time());
+-
+ pcb->event_read();
+ }
+
+Index: libtorrent/src/protocol/handshake.cc
+===================================================================
+--- libtorrent/src/protocol/handshake.cc (revision 1060)
++++ libtorrent/src/protocol/handshake.cc (working copy)
+@@ -86,8 +86,6 @@
+ m_uploadThrottle(manager->upload_throttle()->throttle_list()),
+ m_downloadThrottle(manager->download_throttle()->throttle_list()),
+
+- m_initializedTime(cachedTime),
+-
+ m_readDone(false),
+ m_writeDone(false),
+
+@@ -524,6 +522,13 @@
+ if (m_peerInfo->supports_extensions())
+ write_extension_handshake();
+
++ // Replay HAVE messages we receive after starting to send the bitfield.
++ // This avoids replaying HAVEs for pieces received between starting the
++ // handshake and now (e.g. when connecting takes longer). Ideally we
++ // should make a snapshot of the bitfield here in case it changes while
++ // we're sending it (if it can't be sent in one write() call).
++ m_initializedTime = cachedTime;
++
+ // The download is just starting so we're not sending any
+ // bitfield. Pretend we wrote it already.
+ if (m_download->file_list()->bitfield()->is_all_unset() || m_download->initial_seeding() != NULL) {
diff --git a/net-libs/libtorrent/files/libtorrent-0.12.2-fix_pex_leak.patch b/net-libs/libtorrent/files/libtorrent-0.12.2-fix_pex_leak.patch
new file mode 100644
index 000000000000..91bdc5fdfea9
--- /dev/null
+++ b/net-libs/libtorrent/files/libtorrent-0.12.2-fix_pex_leak.patch
@@ -0,0 +1,102 @@
+Index: libtorrent/src/net/data_buffer.h
+===================================================================
+--- libtorrent/src/net/data_buffer.h (revision 1026)
++++ libtorrent/src/net/data_buffer.h (working copy)
+@@ -44,26 +44,28 @@
+
+ // Recipient must call clear() when done with the buffer.
+ struct DataBuffer {
+- DataBuffer() : m_data(NULL), m_end(NULL), m_copied(false) {}
+- DataBuffer(char* data, char* end) : m_data(data), m_end(end), m_copied(false) {}
++ DataBuffer() : m_data(NULL), m_end(NULL), m_owned(true) {}
++ DataBuffer(char* data, char* end) : m_data(data), m_end(end), m_owned(true) {}
+
++ DataBuffer clone() const { DataBuffer d = *this; d.m_owned = false; return d; }
++
+ char* data() const { return m_data; }
+ char* end() const { return m_end; }
+
+- bool copied() const { return m_copied; }
++ bool owned() const { return m_owned; }
+ bool empty() const { return m_data == NULL; }
+ size_t length() const { return m_end - m_data; }
+
+ void clear();
+- void set(char* data, char* end, bool copied);
++ void set(char* data, char* end, bool owned);
+
+ private:
+ char* m_data;
+ char* m_end;
+
+- // Used to indicate if buffer held by PCB is copied and needs to be
+- // deleted after transmission.
+- bool m_copied;
++ // Used to indicate if buffer held by PCB is its own and needs to be
++ // deleted after transmission (false if shared with other connections).
++ bool m_owned;
+ };
+
+ inline void
+@@ -72,14 +74,14 @@
+ delete[] m_data;
+
+ m_data = m_end = NULL;
+- m_copied = false;
++ m_owned = false;
+ }
+
+ inline void
+-DataBuffer::set(char* data, char* end, bool copied) {
++DataBuffer::set(char* data, char* end, bool owned) {
+ m_data = data;
+ m_end = end;
+- m_copied = copied;
++ m_owned = owned;
+ }
+
+ }
+Index: libtorrent/src/protocol/peer_connection_base.cc
+===================================================================
+--- libtorrent/src/protocol/peer_connection_base.cc (revision 1026)
++++ libtorrent/src/protocol/peer_connection_base.cc (working copy)
+@@ -92,7 +92,7 @@
+ if (m_extensions != NULL && !m_extensions->is_default())
+ delete m_extensions;
+
+- if (m_extensionMessage.copied())
++ if (m_extensionMessage.owned())
+ m_extensionMessage.clear();
+ }
+
+@@ -665,7 +665,7 @@
+ bool
+ PeerConnectionBase::up_extension() {
+ if (m_extensionOffset == extension_must_encrypt) {
+- if (m_extensionMessage.copied()) {
++ if (m_extensionMessage.owned()) {
+ m_encryption.encrypt(m_extensionMessage.data(), m_extensionMessage.length());
+
+ } else {
+@@ -690,7 +690,7 @@
+
+ // clear() deletes the buffer, only do that if we made a copy,
+ // otherwise the buffer is shared among all connections.
+- if (m_extensionMessage.copied())
++ if (m_extensionMessage.owned())
+ m_extensionMessage.clear();
+ else
+ m_extensionMessage.set(NULL, NULL, false);
+Index: libtorrent/src/download/download_main.h
+===================================================================
+--- libtorrent/src/download/download_main.h (revision 1026)
++++ libtorrent/src/download/download_main.h (working copy)
+@@ -105,7 +105,7 @@
+ ThrottleList* download_throttle() { return m_downloadThrottle; }
+ void set_download_throttle(ThrottleList* t) { m_downloadThrottle = t; }
+
+- DataBuffer get_ut_pex(bool initial) { return initial ? m_ut_pex_initial : m_ut_pex_delta; }
++ DataBuffer get_ut_pex(bool initial) { return (initial ? m_ut_pex_initial : m_ut_pex_delta).clone(); }
+
+ bool want_pex_msg() { return m_info->is_pex_active() && m_peerList.available_list()->want_more(); };
+
diff --git a/net-libs/libtorrent/files/libtorrent-0.12.2-fix_write_datagram.patch b/net-libs/libtorrent/files/libtorrent-0.12.2-fix_write_datagram.patch
new file mode 100644
index 000000000000..f89cd0f26d39
--- /dev/null
+++ b/net-libs/libtorrent/files/libtorrent-0.12.2-fix_write_datagram.patch
@@ -0,0 +1,13 @@
+Index: libtorrent/src/net/socket_datagram.cc
+===================================================================
+--- libtorrent/src/net/socket_datagram.cc (revision 1060)
++++ libtorrent/src/net/socket_datagram.cc (working copy)
+@@ -73,7 +73,7 @@
+ int r;
+
+ if (sa != NULL) {
+- r = ::sendto(m_fileDesc, buffer, length, 0, sa->c_sockaddr(), sizeof(rak::socket_address));
++ r = ::sendto(m_fileDesc, buffer, length, 0, sa->sa_inet()->c_sockaddr(), sizeof(rak::socket_address_inet));
+ } else {
+ r = ::send(m_fileDesc, buffer, length, 0);
+ }
diff --git a/net-libs/libtorrent/libtorrent-0.12.2-r2.ebuild b/net-libs/libtorrent/libtorrent-0.12.2-r3.ebuild
index f6193d03f5d2..f5dbd6a76d37 100644
--- a/net-libs/libtorrent/libtorrent-0.12.2-r2.ebuild
+++ b/net-libs/libtorrent/libtorrent-0.12.2-r3.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/net-libs/libtorrent/libtorrent-0.12.2-r2.ebuild,v 1.1 2008/06/05 06:41:55 loki_val Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-libs/libtorrent/libtorrent-0.12.2-r3.ebuild,v 1.1 2008/06/28 11:34:22 loki_val Exp $
inherit autotools eutils toolchain-funcs flag-o-matic libtool
@@ -24,8 +24,12 @@ src_unpack() {
epatch "${FILESDIR}"/${P}-dht_bounds_fix.patch
epatch "${FILESDIR}"/${P}-fix_cull.patch
epatch "${FILESDIR}"/${P}-fix_dht_target.patch
+ epatch "${FILESDIR}"/${P}-fix_have_timer.patch
+ epatch "${FILESDIR}"/${P}-fix_pex_leak.patch
+ epatch "${FILESDIR}"/${P}-fix_write_datagram.patch
epatch "${FILESDIR}"/${P}-lt-ver.patch
epatch "${FILESDIR}"/${P}-tracker_timer_fix.patch
+
elibtoolize #Don't remove
eautoreconf
}
@@ -40,6 +44,7 @@ src_compile() {
econf \
$(use_enable debug) \
$(use_enable ipv6) \
+ --enable-aligned \
--enable-static \
--enable-shared \
--disable-dependency-tracking \