forked from premiere/premiere-libtorrent
0a9e2c965d
The seq and pid parameter are apparently used as a safety check in case a stream of netlink messages is not properly terminated. I initially thought that they represented the expected values of the incoming messages. Instead seq is set to one-past the expected value and the loop aborts when seq and pid match the message. Inverting the logic so that reading continues as long as the seq and pid match the incoming messages is, to me at least, more intuitive. It is also more reliable since it does not rely on the next seq being strictly sequential. It also catches unexpected messages preceding or interleaved with the expected messages. There seems to be a lot of confusion all across the internet over the nlmsg_pid field. The changes here were made based on examination of the kernel source and iproute2 (a common user of netlink). The kernel does not read nlmsg_pid at all for routing messages. Iproute2 sets it to zero unconditionally so I changed this code to do the same. |
||
---|---|---|
.github | ||
bindings | ||
cmake/Modules | ||
docs | ||
ed25519 | ||
examples | ||
include/libtorrent | ||
m4 | ||
simulation | ||
src | ||
test | ||
tools | ||
.gitignore | ||
.gitmodules | ||
.travis.yml | ||
AUTHORS | ||
CMakeLists.txt | ||
CONTRIBUTING.rst | ||
COPYING | ||
ChangeLog | ||
Jamfile | ||
Jamroot.jam | ||
LICENSE | ||
Makefile.am | ||
NEWS | ||
README.rst | ||
appveyor.yml | ||
autotool.sh | ||
bootstrap.sh | ||
build_dist.sh | ||
configure.ac | ||
libtorrent-rasterbar-cmake.pc.in | ||
libtorrent-rasterbar.pc.in | ||
setup.py |
README.rst
libtorrent ---------- .. image:: https://travis-ci.org/arvidn/libtorrent.svg?branch=master :target: https://travis-ci.org/arvidn/libtorrent .. image:: https://ci.appveyor.com/api/projects/status/w7teauvub5813mew/branch/master?svg=true :target: https://ci.appveyor.com/project/arvidn/libtorrent/branch/master .. image:: https://codecov.io/github/arvidn/libtorrent/coverage.svg?branch=master :target: https://codecov.io/github/arvidn/libtorrent?branch=master&view=all#sort=missing&dir=desc .. image:: https://www.openhub.net/p/rasterbar-libtorrent/widgets/project_thin_badge.gif :target: https://www.openhub.net/p/rasterbar-libtorrent?ref=sample libtorrent is an open source C++ library implementing the BitTorrent protocol, along with most popular extensions, making it suitable for real world deployment. It is configurable to be able to fit both servers and embedded devices. The main goals of libtorrent are to be efficient and easy to use. See `libtorrent.org`__ for more detailed build and usage instructions. .. __: http://libtorrent.org To build with boost-build, make sure boost and boost-build is installed and run: b2 In the libtorrent root. To build the examples, run ``b2`` in the ``examples`` directory. See `building.html`__ for more details on how to build and which configuration options are available. For python bindings, see `the python docs`__. .. __: docs/building.rst .. __: docs/python_binding.rst