arvidn / libtorrent

an efficient feature complete C++ bittorrent implementation
http://libtorrent.org
Other
5.15k stars 994 forks source link

Unable to stream when selecting a network interface for listen & outgoing interfaces in Kodi plugin Elementum #7703

Open cavalrymargarine0x1 opened 1 month ago

cavalrymargarine0x1 commented 1 month ago

libtorrent version (or branch): https://github.com/ElementumOrg/libtorrent-go

platform/architecture: Windows 10 x64

compiler and compiler version:

please describe what symptom you see, what you would expect to see instead and how to reproduce it:

I'm using Elementum, a plugin for Kodi. I want to bind it to a specific network interface but I'm having trouble streaming torrent files when doing so by selecting said network interface in the BitTorrent category of the Elementum plugin settings.

If I use the "Select listening interface" & "Select outgoing interface" options and select the network interface I want to bind Elementum to, it cannot stream a torrent file let alone discover peers & seeds.

However, if I manually enter the IPv4 address the interface I want to bind Elementum to is using at the time, then streaming and peer/seed discovery works no problem.

This becomes tedious when the network interface changes IPv4 address every few days. Having Elementum directly bound to the network interface is the goal.

I have tried manually entering the network interface's name in both "Listening interface" & "Outgoing interface", but the result is the same.

qBittorrent also uses libtorrent and I can bind it to the same network interface as I want Elementum to be bound to with no problems.

I'm opening an issue here as Elementum's developer says it could be a libtorrent limitation as Elementum passes interfaces to libtorrent 'as is'. (source)

Any help with my issue here would be greatly appreciated, thanks :relaxed:

elgatito commented 1 month ago

@cavalrymargarine0x1

Elementum is setting listen_interfaces to a name of the interface.

That is the same issue as reported at https://github.com/arvidn/libtorrent/issues/7704

And I see that qBitTorrent is also converting interface name into IP and set it to listen_interfaces - https://github.com/qbittorrent/qBittorrent/blob/8b7fdf0f229d69c63fb0e96780f276fe6c8a620e/src/base/bittorrent/sessionimpl.cpp#L2126

The problem I see is the change of IP address, that can happen on network interface restart.

There are other issues describing same things:

And there are other issues describing