forked from premiere/premiere-libtorrent
added build notes for vs.net 2005, removed old code from ip_filter.cpp, fixed problem where the stats could become incorrect in case of very high cpu load, added asserts in storage::read() to make sure one is not trying to read out of bounds.
This commit is contained in:
parent
8234e9c12f
commit
00df2b5bc3
|
@ -1,3 +1,7 @@
|
|||
|
||||
* Added more clients to the identifiable list
|
||||
* Fixed fingerprint parser to cope with latest Mainline versions
|
||||
|
||||
release 0.10
|
||||
|
||||
* fixed a bug where the requested number of peers in a tracker request could
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
|
||||
<meta name="generator" content="Docutils 0.3.9: http://docutils.sourceforge.net/" />
|
||||
<title>client_test example program</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
@ -26,7 +26,7 @@ client and has the metadata (.torrent file). The metadata extension in
|
|||
libtorrent will then download it from that peer (or from those peers if more
|
||||
than one).</p>
|
||||
<p>While running, the <tt class="docutils literal"><span class="pre">client_test</span></tt> sample will look something like this:</p>
|
||||
<img alt="client_test.png" src="client_test.png" />
|
||||
<div class="image"><img alt="client_test.png" src="client_test.png" /></div>
|
||||
<p>The commands available in the client are:</p>
|
||||
<ul class="simple">
|
||||
<li><tt class="docutils literal"><span class="pre">q</span></tt> quits the client (there will be a delay while the client waits
|
||||
|
@ -47,7 +47,7 @@ been requested from which peer. The green background means that it has been
|
|||
downloaded. It shows that fast peers will prefer to request whole pieces
|
||||
instead of dowloading parts of pieces. It may make it easier to determine
|
||||
which peer that sent the corrupt data if a piece fails the hash test.</p>
|
||||
<img alt="unicode_support.png" src="unicode_support.png" />
|
||||
<div class="image"><img alt="unicode_support.png" src="unicode_support.png" /></div>
|
||||
<p>There's unicode support on linux, MacOS X and Windows.</p>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
|
||||
<meta name="generator" content="Docutils 0.3.9: http://docutils.sourceforge.net/" />
|
||||
<title></title>
|
||||
<meta name="author" content="Arvid Norberg, arvid@rasterbar.com Ludvig Strigeus, ludde@utorrent.com" />
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
|
@ -19,8 +19,8 @@
|
|||
Ludvig Strigeus, <a class="last reference" href="mailto:ludde@utorrent.com">ludde@utorrent.com</a></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="section">
|
||||
<h1><a id="extension-protocol-for-bittorrent" name="extension-protocol-for-bittorrent">extension protocol for bittorrent</a></h1>
|
||||
<div class="section" id="extension-protocol-for-bittorrent">
|
||||
<h1><a name="extension-protocol-for-bittorrent">extension protocol for bittorrent</a></h1>
|
||||
<p>The intention of this protocol is to provide a simple and thin transport
|
||||
for extensions to the bittorrent protocol. Supporting this protocol makes
|
||||
it easy to add new extensions without interfering with the standard
|
||||
|
@ -87,8 +87,8 @@ message as specified by the handshake.</td>
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="section">
|
||||
<h2><a id="handshake-message" name="handshake-message">handshake message</a></h2>
|
||||
<div class="section" id="handshake-message">
|
||||
<h2><a name="handshake-message">handshake message</a></h2>
|
||||
<p>The payload of the handshake message is a bencoded dictionary. All items
|
||||
in the dictionary are optional. Any unknown names should be ignored
|
||||
by the client. All parts of the dictionary are case sensitive.
|
||||
|
@ -218,8 +218,8 @@ for the actual extensions to the bittorrent protocol and the extensions
|
|||
named in the example above (such as <tt class="docutils literal"><span class="pre">p</span></tt>) are just examples of possible
|
||||
extensions.</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2><a id="rationale" name="rationale">rationale</a></h2>
|
||||
<div class="section" id="rationale">
|
||||
<h2><a name="rationale">rationale</a></h2>
|
||||
<p>The reason why the extension messages' IDs would be defined in the handshake
|
||||
is to avoid having a global registry somewhere, where ID's are assigned
|
||||
global identifiers. Now the extensions have unique names.</p>
|
||||
|
|
136
docs/index.html
136
docs/index.html
|
@ -3,129 +3,9 @@
|
|||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
|
||||
<meta name="generator" content="Docutils 0.3.9: http://docutils.sourceforge.net/" />
|
||||
<title>libtorrent</title>
|
||||
<style type="text/css">
|
||||
|
||||
body
|
||||
{
|
||||
background-color: white;
|
||||
color: black;
|
||||
margin: 1em 2em 1em 2em;
|
||||
}
|
||||
|
||||
h1 { font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; text-align: left; font-size: 140%; }
|
||||
h2 { font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; text-align: left; font-size: 110%; }
|
||||
h3 { font-family: "courier new", courier, monospace; font-weight: bold; text-align: left; font-size: 100%; }
|
||||
|
||||
pre
|
||||
{
|
||||
border: gray 1pt solid;
|
||||
padding: 2pt;
|
||||
|
||||
display: block;
|
||||
font-family: "courier new", courier, monospace;
|
||||
background-color: #eeeeee;
|
||||
color: black;
|
||||
font-size: small
|
||||
}
|
||||
|
||||
code
|
||||
{
|
||||
white-space: pre;
|
||||
border: gray 1pt solid;
|
||||
padding: 2pt;
|
||||
|
||||
display: block;
|
||||
font-family: "courier new", courier, monospace;
|
||||
color: black;
|
||||
font-size: small
|
||||
}
|
||||
|
||||
tt
|
||||
{
|
||||
display: inline;
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
}
|
||||
|
||||
p
|
||||
{
|
||||
text-align: justify;
|
||||
font-family: Georgia, "Times New Roman", Times, serif
|
||||
}
|
||||
|
||||
ul
|
||||
{
|
||||
font-family: Georgia, "Times New Roman", Times, serif
|
||||
}
|
||||
|
||||
ol
|
||||
{
|
||||
font-family: Georgia, "Times New Roman", Times, serif
|
||||
}
|
||||
|
||||
a:link
|
||||
{
|
||||
font-weight: bold;
|
||||
color: #003366;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:visited
|
||||
{
|
||||
font-weight: bold;
|
||||
color: #003366;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
|
||||
table
|
||||
{
|
||||
border: 1px solid black;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
table td
|
||||
{
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
table th
|
||||
{
|
||||
border: 3px solid black;
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
table.menu
|
||||
{
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
table.menu td
|
||||
{
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
padding-top: 7px;
|
||||
padding-bottom: 7px;
|
||||
}
|
||||
|
||||
|
||||
td
|
||||
{
|
||||
border: 1px solid black
|
||||
}
|
||||
|
||||
div.warning, div.note, div.important {
|
||||
width: 80%;
|
||||
margin: 1.5em auto;
|
||||
background: #C1E5F6;
|
||||
background: #F1FFF5;
|
||||
border: solid 1px #D1DFD5;
|
||||
padding: 5px 10px 5px 10px;
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="document" id="libtorrent">
|
||||
|
@ -159,8 +39,8 @@ library and not a full featured client, although it comes with a working
|
|||
<li>to be very easy to use</li>
|
||||
</ul>
|
||||
</blockquote>
|
||||
<div class="section">
|
||||
<h1><a id="donate" name="donate">Donate</a></h1>
|
||||
<div class="section" id="donate">
|
||||
<h1><a name="donate">Donate</a></h1>
|
||||
<p>Support the development of libtorrent</p>
|
||||
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
|
||||
<input type="hidden" name="cmd" value="_xclick">
|
||||
|
@ -172,13 +52,13 @@ library and not a full featured client, although it comes with a working
|
|||
<input type="image" src="https://www.paypal.com/images/x-click-but04.gif"
|
||||
border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
|
||||
</form></div>
|
||||
<div class="section">
|
||||
<h1><a id="feedback" name="feedback">Feedback</a></h1>
|
||||
<div class="section" id="feedback">
|
||||
<h1><a name="feedback">Feedback</a></h1>
|
||||
<p>There's a <a class="reference" href="http://lists.sourceforge.net/lists/listinfo/libtorrent-discuss">mailing list</a>, general libtorrent discussion.</p>
|
||||
<p>You can usually find me as hydri in <tt class="docutils literal"><span class="pre">#libtorrent</span></tt> on <tt class="docutils literal"><span class="pre">irc.freenode.net</span></tt>.</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h1><a id="acknowledgements" name="acknowledgements">Acknowledgements</a></h1>
|
||||
<div class="section" id="acknowledgements">
|
||||
<h1><a name="acknowledgements">Acknowledgements</a></h1>
|
||||
<p>Written by Arvid Norberg. Copyright (c) 2003</p>
|
||||
<p>Contributions by Magnus Jonsson, Daniel Wallin and Cory Nelson</p>
|
||||
<p>Thanks to Reimond Retz for bugfixes, suggestions and testing</p>
|
||||
|
|
|
@ -504,7 +504,8 @@ filenames, so if your target is Windows 2000 and up, you may want to use
|
|||
<tt class="docutils literal"><span class="pre">file_win.cpp</span></tt> which supports unicode filenames.</p>
|
||||
<p>If you're building in MS Visual Studio, you may have to set the compiler
|
||||
options "force conformance in for loop scope", "treat wchar_t as built-in
|
||||
type" and "Enable Run-Time Type Info" to Yes.</p>
|
||||
type" and "Enable Run-Time Type Info" to Yes. For a detailed description
|
||||
on how to build libtorrent with VS 2005, see <a class="reference" href="vs2005_build_notes.html">this document</a>.</p>
|
||||
</div>
|
||||
<div class="section" id="build-configurations">
|
||||
<h2><a name="build-configurations">build configurations</a></h2>
|
||||
|
|
|
@ -410,7 +410,10 @@ filenames, so if your target is Windows 2000 and up, you may want to use
|
|||
|
||||
If you're building in MS Visual Studio, you may have to set the compiler
|
||||
options "force conformance in for loop scope", "treat wchar_t as built-in
|
||||
type" and "Enable Run-Time Type Info" to Yes.
|
||||
type" and "Enable Run-Time Type Info" to Yes. For a detailed description
|
||||
on how to build libtorrent with VS 2005, see `this document`_.
|
||||
|
||||
.. _`this document`: vs2005_build_notes.html
|
||||
|
||||
|
||||
build configurations
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
|
||||
<meta name="generator" content="Docutils 0.3.9: http://docutils.sourceforge.net/" />
|
||||
<title>Bittorrent udp-tracker protocol extension</title>
|
||||
<meta name="author" content="Arvid Norberg, arvid@rasterbar.com" />
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
|
@ -35,8 +35,8 @@
|
|||
<li><a class="reference" href="#credits" id="id10" name="id10">credits</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h1><a id="introduction" name="introduction">introduction</a></h1>
|
||||
<div class="section" id="introduction">
|
||||
<h1><a name="introduction">introduction</a></h1>
|
||||
<p>A tracker with the protocol "udp://" in its URI
|
||||
is supposed to be contacted using this protocol.</p>
|
||||
<p>This protocol is supported by
|
||||
|
@ -50,8 +50,8 @@ are specified with ANSI-C standard types.</p>
|
|||
the request. If no reply has been received after 60 seconds, stop
|
||||
retrying.</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h1><a id="connecting" name="connecting">connecting</a></h1>
|
||||
<div class="section" id="connecting">
|
||||
<h1><a name="connecting">connecting</a></h1>
|
||||
<p>Client sends packet:</p>
|
||||
<table border="1" class="docutils">
|
||||
<colgroup>
|
||||
|
@ -120,8 +120,8 @@ anymore.</td>
|
|||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h1><a id="announcing" name="announcing">announcing</a></h1>
|
||||
<div class="section" id="announcing">
|
||||
<h1><a name="announcing">announcing</a></h1>
|
||||
<p>Client sends packet:</p>
|
||||
<table border="1" class="docutils">
|
||||
<colgroup>
|
||||
|
@ -282,8 +282,8 @@ seeding.</td>
|
|||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h1><a id="scraping" name="scraping">scraping</a></h1>
|
||||
<div class="section" id="scraping">
|
||||
<h1><a name="scraping">scraping</a></h1>
|
||||
<p>Client sends packet:</p>
|
||||
<table border="1" class="docutils">
|
||||
<colgroup>
|
||||
|
@ -401,8 +401,8 @@ leechers.</td>
|
|||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h1><a id="errors" name="errors">errors</a></h1>
|
||||
<div class="section" id="errors">
|
||||
<h1><a name="errors">errors</a></h1>
|
||||
<p>In case of a tracker error,</p>
|
||||
<p>server replies packet:</p>
|
||||
<table border="1" class="docutils">
|
||||
|
@ -436,8 +436,8 @@ describing the error.</td>
|
|||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h1><a id="actions" name="actions">actions</a></h1>
|
||||
<div class="section" id="actions">
|
||||
<h1><a name="actions">actions</a></h1>
|
||||
<p>The action fields has the following encoding:</p>
|
||||
<blockquote>
|
||||
<ul class="simple">
|
||||
|
@ -448,8 +448,8 @@ describing the error.</td>
|
|||
</ul>
|
||||
</blockquote>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h1><a id="extensions" name="extensions">extensions</a></h1>
|
||||
<div class="section" id="extensions">
|
||||
<h1><a name="extensions">extensions</a></h1>
|
||||
<p>The extensions field is a bitmask. The following
|
||||
bits are assigned:</p>
|
||||
<blockquote>
|
||||
|
@ -457,8 +457,8 @@ bits are assigned:</p>
|
|||
<li>1 = <a class="reference" href="#authentication">authentication</a>.</li>
|
||||
</ul>
|
||||
</blockquote>
|
||||
<div class="section">
|
||||
<h2><a id="authentication" name="authentication">authentication</a></h2>
|
||||
<div class="section" id="authentication">
|
||||
<h2><a name="authentication">authentication</a></h2>
|
||||
<p>The packet will have an authentication part
|
||||
appended to it. It has the following format:</p>
|
||||
<table border="1" class="docutils">
|
||||
|
@ -497,8 +497,8 @@ from the 20 bytes hash calculated.</td>
|
|||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h1><a id="credits" name="credits">credits</a></h1>
|
||||
<div class="section" id="credits">
|
||||
<h1><a name="credits">credits</a></h1>
|
||||
<p>Protocol designed by Olaf van der Spek</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,117 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="generator" content="Docutils 0.3.9: http://docutils.sourceforge.net/" />
|
||||
<title>libtorrent setup for VS.NET 2005 Development</title>
|
||||
<meta name="author" content="THOMAS GODDARD" />
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="document" id="libtorrent-setup-for-vs-net-2005-development">
|
||||
<h1 class="title">libtorrent setup for VS.NET 2005 Development</h1>
|
||||
<table class="docinfo" frame="void" rules="none">
|
||||
<col class="docinfo-name" />
|
||||
<col class="docinfo-content" />
|
||||
<tbody valign="top">
|
||||
<tr><th class="docinfo-name">Author:</th>
|
||||
<td>THOMAS GODDARD</td></tr>
|
||||
<tr><th class="docinfo-name">Contact:</th>
|
||||
<td>www.thomasgoddard.com</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="section" id="prerequisites">
|
||||
<h1><a name="prerequisites">Prerequisites</a></h1>
|
||||
<ol class="arabic simple">
|
||||
<li>Download boost from boost.org</li>
|
||||
<li>Download libtorrent</li>
|
||||
<li>Extract both to a folder called libtorrent</li>
|
||||
</ol>
|
||||
</div>
|
||||
<div class="section" id="compiling-boost-for-vs-net-2005">
|
||||
<h1><a name="compiling-boost-for-vs-net-2005">Compiling boost for VS.NET 2005</a></h1>
|
||||
<ol class="arabic simple">
|
||||
<li>Copy bjam.exe to libtorrent\boost_[version]\tools\build</li>
|
||||
<li>Add the path "libtorrent\boost_[version]\tools\build" to the windows path environment variable</li>
|
||||
<li>Log off / log back on</li>
|
||||
<li>Open the file "libtorrent\boost_[version]\tools\build\user-config.jam" in notepad</li>
|
||||
<li>Uncomment the <tt class="docutils literal"><span class="pre">#</span> <span class="pre">using</span> <span class="pre">msvc;</span></tt> line by removing the #</li>
|
||||
<li>Replace the line with: <tt class="docutils literal"><span class="pre">using</span> <span class="pre">vc-8_0</span> <span class="pre">;</span></tt></li>
|
||||
<li>Save the file and close it</li>
|
||||
<li>Open the visual studio .net command line in the VS.net 2005 folder in your start menu</li>
|
||||
<li>CD to the "libtorrent\boost_[version]" folder</li>
|
||||
<li>Type: <tt class="docutils literal"><span class="pre">bjam</span> <span class="pre">"-sTOOLS=vc-8_0"</span> <span class="pre">install</span></tt> and hit enter</li>
|
||||
<li>Be patient and wait for it to finish</li>
|
||||
</ol>
|
||||
<div class="section" id="troubleshooting">
|
||||
<h2><a name="troubleshooting">Troubleshooting</a></h2>
|
||||
<ul class="simple">
|
||||
<li>Make sure to CD to the root of the boost directory before running the install.</li>
|
||||
<li>For additional details and information on using Visual Studio 2005 Express addition, see the Boost Getting Started Guide.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="setting-up-and-compiling-libtorrent-with-vs-net-2005">
|
||||
<h1><a name="setting-up-and-compiling-libtorrent-with-vs-net-2005">Setting up and compiling libtorrent with VS.NET 2005</a></h1>
|
||||
<ol class="arabic">
|
||||
<li><p class="first">Create a new vs.net 2005 MFC project and solution file in the root of the libtorrent folder where you extracted all of the libtorrent files.</p>
|
||||
</li>
|
||||
<li><p class="first">Include the files contained in the src folder, excluding the makefiles.
|
||||
<strong>NOTE:</strong>
|
||||
Only include either file.cpp or file_win.cpp. Read here to determine which file to include:
|
||||
<a class="reference" href="http://www.rasterbar.com/products/libtorrent/docs.html#building-with-other-build-systems">http://www.rasterbar.com/products/libtorrent/docs.html#building-with-other-build-systems</a></p>
|
||||
</li>
|
||||
<li><p class="first">Include all .c files in the zlib folder.</p>
|
||||
</li>
|
||||
<li><p class="first">Add the following Additional Include Header Files:</p>
|
||||
<pre class="literal-block">
|
||||
"libtorrent\include"
|
||||
"C:\Boost\include\boost-1_33_1"
|
||||
"libtorrent\zlib"
|
||||
"libtorrent\include\libtorrent"
|
||||
</pre>
|
||||
</li>
|
||||
<li><p class="first">Add the following Preprocessor Definitions:</p>
|
||||
<pre class="literal-block">
|
||||
WIN32
|
||||
WIN32_LEAN_AND_MEAN
|
||||
_WIN32_WINNT=0x0500
|
||||
BOOST_ALL_NO_LIB
|
||||
_FILE_OFFSET_BITS=64
|
||||
BOOST_THREAD_USE_LIB
|
||||
TORRENT_BUILDING_SHARED
|
||||
TORRENT_LINKING_SHARED
|
||||
UNICODE
|
||||
</pre>
|
||||
</li>
|
||||
<li><p class="first">Add <tt class="docutils literal"><span class="pre">C:\Boost\lib</span></tt> to Additional Library Directories</p>
|
||||
</li>
|
||||
<li><p class="first">Add the following Additional Dependencies:</p>
|
||||
<pre class="literal-block">
|
||||
wsock32.lib
|
||||
libboost_thread-vc80-mt.lib
|
||||
libboost_filesystem-vc80-mt.lib
|
||||
libboost_date_time-vc80-mt.lib
|
||||
</pre>
|
||||
</li>
|
||||
<li><p class="first">Set the Runtime Library to Multi-threaded Debug DLL (/MDd) under the code generation section.</p>
|
||||
</li>
|
||||
</ol>
|
||||
<div class="section" id="id1">
|
||||
<h2><a name="id1">Troubleshooting</a></h2>
|
||||
<dl class="docutils">
|
||||
<dt>Error: error LNK2005:already defined etc...</dt>
|
||||
<dd>Make sure you use the Multi-threaded Debug DLL (/MDd)</dd>
|
||||
<dt>Error: error linking zlib related files...</dt>
|
||||
<dd>Make sure to include all .c files in the zlib folder.</dd>
|
||||
<dt>Runtime error in client_test.exe</dt>
|
||||
<dd>If you're using boost-1.33.1, there is a bug in the program options
|
||||
library which will make VS.NET 2005 assert. For a patch, see:
|
||||
<a class="reference" href="http://thread.gmane.org/gmane.comp.lib.boost.devel/140932/focus=140932">http://thread.gmane.org/gmane.comp.lib.boost.devel/140932/focus=140932</a></dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,92 @@
|
|||
============================================
|
||||
libtorrent setup for VS.NET 2005 Development
|
||||
============================================
|
||||
|
||||
:Author: THOMAS GODDARD
|
||||
:Contact: www.thomasgoddard.com
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
1. Download boost from boost.org
|
||||
2. Download libtorrent
|
||||
3. Extract both to a folder called libtorrent
|
||||
|
||||
Compiling boost for VS.NET 2005
|
||||
-------------------------------
|
||||
|
||||
1. Copy bjam.exe to libtorrent\\boost_[version]\\tools\\build
|
||||
2. Add the path "libtorrent\\boost_[version]\\tools\\build" to the windows path environment variable
|
||||
3. Log off / log back on
|
||||
4. Open the file "libtorrent\\boost_[version]\\tools\\build\\user-config.jam" in notepad
|
||||
5. Uncomment the ``# using msvc;`` line by removing the #
|
||||
6. Replace the line with: ``using vc-8_0 ;``
|
||||
7. Save the file and close it
|
||||
8. Open the visual studio .net command line in the VS.net 2005 folder in your start menu
|
||||
9. CD to the "libtorrent\\boost_[version]" folder
|
||||
10. Type: ``bjam "-sTOOLS=vc-8_0" install`` and hit enter
|
||||
11. Be patient and wait for it to finish
|
||||
|
||||
Troubleshooting
|
||||
...............
|
||||
|
||||
* Make sure to CD to the root of the boost directory before running the install.
|
||||
|
||||
* For additional details and information on using Visual Studio 2005 Express addition, see the Boost Getting Started Guide.
|
||||
|
||||
Setting up and compiling libtorrent with VS.NET 2005
|
||||
-----------------------------------------------------
|
||||
|
||||
1. Create a new vs.net 2005 MFC project and solution file in the root of the libtorrent folder where you extracted all of the libtorrent files.
|
||||
2. Include the files contained in the src folder, excluding the makefiles.
|
||||
**NOTE:**
|
||||
Only include either file.cpp or file_win.cpp. Read here to determine which file to include:
|
||||
http://www.rasterbar.com/products/libtorrent/docs.html#building-with-other-build-systems
|
||||
|
||||
3. Include all .c files in the zlib folder.
|
||||
|
||||
4. Add the following Additional Include Header Files::
|
||||
|
||||
"libtorrent\include"
|
||||
"C:\Boost\include\boost-1_33_1"
|
||||
"libtorrent\zlib"
|
||||
"libtorrent\include\libtorrent"
|
||||
|
||||
5. Add the following Preprocessor Definitions::
|
||||
|
||||
WIN32
|
||||
WIN32_LEAN_AND_MEAN
|
||||
_WIN32_WINNT=0x0500
|
||||
BOOST_ALL_NO_LIB
|
||||
_FILE_OFFSET_BITS=64
|
||||
BOOST_THREAD_USE_LIB
|
||||
TORRENT_BUILDING_SHARED
|
||||
TORRENT_LINKING_SHARED
|
||||
UNICODE
|
||||
|
||||
6. Add ``C:\Boost\lib`` to Additional Library Directories
|
||||
|
||||
7. Add the following Additional Dependencies::
|
||||
|
||||
wsock32.lib
|
||||
libboost_thread-vc80-mt.lib
|
||||
libboost_filesystem-vc80-mt.lib
|
||||
libboost_date_time-vc80-mt.lib
|
||||
|
||||
8. Set the Runtime Library to Multi-threaded Debug DLL (/MDd) under the code generation section.
|
||||
|
||||
|
||||
Troubleshooting
|
||||
...............
|
||||
|
||||
Error: error LNK2005:already defined etc...
|
||||
Make sure you use the Multi-threaded Debug DLL (/MDd)
|
||||
|
||||
Error: error linking zlib related files...
|
||||
Make sure to include all .c files in the zlib folder.
|
||||
|
||||
Runtime error in client_test.exe
|
||||
If you're using boost-1.33.1, there is a bug in the program options
|
||||
library which will make VS.NET 2005 assert. For a patch, see:
|
||||
http://thread.gmane.org/gmane.comp.lib.boost.devel/140932/focus=140932
|
||||
|
|
@ -512,6 +512,7 @@ int main(int ac, char* av[])
|
|||
|
||||
session_settings settings;
|
||||
settings.user_agent = "client_test " LIBTORRENT_VERSION;
|
||||
settings.sequenced_download_threshold = 15;
|
||||
|
||||
std::deque<std::string> events;
|
||||
|
||||
|
|
|
@ -71,6 +71,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
|||
#include "libtorrent/ip_filter.hpp"
|
||||
#include "libtorrent/config.hpp"
|
||||
#include "libtorrent/session_settings.hpp"
|
||||
#include "libtorrent/version.hpp"
|
||||
|
||||
#if !defined(NDEBUG) && defined(_MSC_VER)
|
||||
# include <float.h>
|
||||
|
@ -343,7 +344,8 @@ namespace libtorrent
|
|||
{
|
||||
public:
|
||||
|
||||
session(fingerprint const& print = fingerprint("LT", 0, 10, 0, 0));
|
||||
session(fingerprint const& print = fingerprint("LT"
|
||||
, LIBTORRENT_VERSION_MAJOR, LIBTORRENT_VERSION_MINOR, 0, 0));
|
||||
session(
|
||||
fingerprint const& print
|
||||
, std::pair<int, int> listen_port_range
|
||||
|
|
|
@ -60,14 +60,7 @@ namespace libtorrent
|
|||
assert(j != i);
|
||||
|
||||
int first_access = i->access;
|
||||
/*
|
||||
std::cout << "flags: " << flags << "\n";
|
||||
std::cout << "first_access: " << first_access << "\n";
|
||||
std::cout << "i->start: " << i->start.as_string() << "\n";
|
||||
std::cout << "first: " << first.as_string() << "\n";
|
||||
*/
|
||||
int last_access = prior(j)->access;
|
||||
// std::cout << "last_access: " << last_access << "\n";
|
||||
|
||||
if (i->start != first && first_access != flags)
|
||||
{
|
||||
|
@ -78,20 +71,11 @@ namespace libtorrent
|
|||
--i;
|
||||
first_access = i->access;
|
||||
}
|
||||
/*
|
||||
std::cout << "distance(i, j): " << std::distance(i, j) << "\n";
|
||||
std::cout << "size(): " << m_access_list.size() << "\n";
|
||||
*/
|
||||
assert(!m_access_list.empty());
|
||||
assert(i != m_access_list.end());
|
||||
|
||||
if (i != j)
|
||||
m_access_list.erase(next(i), j);
|
||||
/*
|
||||
std::cout << "size(): " << m_access_list.size() << "\n";
|
||||
std::cout << "last: " << last.as_string() << "\n";
|
||||
std::cout << "last.ip(): " << last.ip() << " " << 0xffffffff << "\n";
|
||||
*/
|
||||
if (i->start == first)
|
||||
{
|
||||
// we can do this const-cast because we know that the new
|
||||
|
@ -108,7 +92,6 @@ namespace libtorrent
|
|||
|| (j == m_access_list.end() && last.to_ulong() != 0xffffffff))
|
||||
{
|
||||
assert(j == m_access_list.end() || last.to_ulong() < j->start.to_ulong() - 1);
|
||||
// std::cout << " -- last_access: " << last_access << "\n";
|
||||
if (last_access != flags)
|
||||
j = m_access_list.insert(j, range(address(last.to_ulong() + 1), last_access));
|
||||
}
|
||||
|
|
|
@ -1453,6 +1453,9 @@ namespace libtorrent
|
|||
m_download_queue.clear();
|
||||
m_request_queue.clear();
|
||||
|
||||
// TODO: If we have a limited number of upload
|
||||
// slots, choke this peer
|
||||
|
||||
m_assume_fifo = true;
|
||||
|
||||
// this will trigger new picking of pieces
|
||||
|
|
|
@ -93,7 +93,6 @@ namespace
|
|||
// the last argument is if we should prefer whole pieces
|
||||
// for this peer. If we're downloading one piece in 20 seconds
|
||||
// then use this mode.
|
||||
// TODO: 20 seconds has to be customizable
|
||||
bool prefer_whole_pieces = c.statistics().download_payload_rate()
|
||||
* t.settings().whole_pieces_threshold
|
||||
> t.torrent_file().piece_length();
|
||||
|
|
|
@ -866,7 +866,7 @@ namespace libtorrent { namespace detail
|
|||
// don't pass in the tick_interval here, because
|
||||
// the stats have already been adjusted in
|
||||
// the peer's second tick.
|
||||
m_stat.second_tick(1.f);
|
||||
m_stat.second_tick(tick_interval);
|
||||
|
||||
// distribute the maximum upload rate among the torrents
|
||||
|
||||
|
|
|
@ -627,6 +627,7 @@ namespace libtorrent
|
|||
#endif
|
||||
|
||||
size_type start = slot * (size_type)m_pimpl->info.piece_length() + offset;
|
||||
assert(start + size <= m_pimpl->info.total_size());
|
||||
|
||||
// find the file iterator and file offset
|
||||
size_type file_offset = start;
|
||||
|
|
|
@ -1566,10 +1566,7 @@ namespace libtorrent
|
|||
m_dl_bandwidth_quota.max = resource_request::inf;
|
||||
|
||||
accumulator += m_stat;
|
||||
// don't pass the tick interval in here, because
|
||||
// the stats have already been adjusted in the
|
||||
// peer's stats.
|
||||
m_stat.second_tick(1.f);
|
||||
m_stat.second_tick(tick_interval);
|
||||
}
|
||||
|
||||
void torrent::distribute_resources()
|
||||
|
|
|
@ -638,6 +638,7 @@ namespace libtorrent
|
|||
std::vector<file_slice> ret;
|
||||
|
||||
size_type start = piece * (size_type)m_piece_length + offset;
|
||||
assert(start + size <= m_total_size);
|
||||
|
||||
// find the file iterator and file offset
|
||||
// TODO: make a vector that can map piece -> file index in O(1)
|
||||
|
|
Loading…
Reference in New Issue