There has been a bit of confusion as to what the states actually mean so I’ll try and shed some light on this here.
Implemetation
In an under the hood sense, libtorrent knows only two of the state; paused and active. The stopped state is exclusively a Halite notion and torrent in that state are effectively frozen in a networking sense. While stopped a number of torrent properties can be changed but the vast majority of those changes don’t happen until the torrent resumes activity inside libtorrent. The broader or global play and pause commands, on a low level, are also libtorrent concepts.
User Management
Some of the specifics of how torrents behave depends on if they are managed or not. So I’ll discuss non-managed torrents first.
Non-managed Torrents
When a torrent is paused no network activity will take place; data won’t be transfered and trackers announces won’t occur. In the event of an unclean shutdown of Halite paused torrents won’t need to be rechecked. Active torrents, either downloading, seeding or finished work away transferring data and announcing to trackers.
Managed Torrents
Managed torrents in either the active or paused states can be switched between those state by the libtorrent manager, see Managed Torrents for more details. Stopped torrent will remain stopped until the user manually changes that.
Global Play and Pause
There are two ways to initiate a global play or pause action; either via the toolbar buttons, or through the tray icon right-click menu. A pause is designed to stop all active torrents. All such torrent will enter the paused state, and all data transfers will stop. Managed torrent will also not be resumed by the queue manager.
Performing a global resume will return Halite to the state it was in before the pause, this means stopped torrents will not be affected, they will activate!
