When adding a torrent, the defaultOptions are read and stored in the metadata for the torrent being created if they exist. If they do not exist, the per-torrent metadata contains the defaults.
// Add any default options to the metadata
var defaultOptions = config.get("bittorrent.defaultOptions") || {};
var options = {
seedRatio: (defaultOptions["seedRatio"] || 2.0),
seedTime: (defaultOptions["seedTime"] || 0),
seedAction: (defaultOptions["seedAction"] || "pause")
};
When a torrent state is changed, these values are read from the per-torrent metadata, if and only if a"seedOverride" option is also set. If it is not set, the default values are used. I believe there is no way to actually set this option however. This means the default values are always used regardless of what is specified in the config file.
var options = torrent.metadata("options") || {};
var goalRatio = options.seedOverride ? (options.seedRatio || 2.0) : 2.0;
var goalTime = options.seedOverride ? (options.goalTime || 0) : 0;
I'm not sure I understand what the point of this seedOverride option is. Since the defaults are already copied into the per-torrent metadata any changes would just overwrite those stored values and no extra bool is needed. This variable only seems to make sense if the plan for the future involves not copying the defaults into the per-torrent metadata and instead allowing config file changes to apply retroactively to already-added torrents if this value is not specified. But in that case the mere existence of a seedRatio or goalTime in the metadata could also serve as such a flag that the default is being overridden.
I've changed the code to remove this check for seedOverride, and now my torrents will seed past 2.0. I can create a bug in the issue tracker and send a pull request if desired, but the code change is so simple it might be easier for Viktor to just recreate it.