IPBlocklist iplist.Ranger
DisableIPv6 bool `long:"disable-ipv6"`
// Perform logging and any other behaviour that will help debug.
- Debug bool `help:"enable debug logging"`
+ Debug bool `help:"enable debugging"`
+
+ // HTTP client used to query the tracker endpoint. Default is DefaultHTTPClient
+ HTTP *http.Client
+ // Updated occasionally to when there's been some changes to client
+ // behaviour in case other clients are assuming anything of us. See also
+ // `bep20`.
+ ExtendedHandshakeClientVersion string // default "go.torrent dev 20150624"
+ // Peer ID client identifier prefix. We'll update this occasionally to
+ // reflect changes to client behaviour that other clients may depend on.
+ // Also see `extendedHandshakeClientVersion`.
+ Bep20 string // default "-GT0001-"
+
+ NominalDialTimeout time.Duration // default time.Second * 30
+ MinDialTimeout time.Duration // default 5 * time.Second
+ EstablishedConnsPerTorrent int // default 80
+ HalfOpenConnsPerTorrent int // default 80
+ TorrentPeersHighWater int // default 200
+ TorrentPeersLowWater int // default 50
+
+ // Limit how long handshake can take. This is to reduce the lingering
+ // impact of a few bad apples. 4s loses 1% of successful handshakes that
+ // are obtained with 60s timeout, and 5% of unsuccessful handshakes.
+ HandshakesTimeout time.Duration // default 20 * time.Second
+ }
+
+ func (cfg *Config) setDefaults() {
+ if cfg.HTTP == nil {
+ cfg.HTTP = DefaultHTTPClient
+ }
+ if cfg.ExtendedHandshakeClientVersion == "" {
+ cfg.ExtendedHandshakeClientVersion = "go.torrent dev 20150624"
+ }
+ if cfg.Bep20 == "" {
+ cfg.Bep20 = "-GT0001-"
+ }
+ if cfg.NominalDialTimeout == 0 {
+ cfg.NominalDialTimeout = 30 * time.Second
+ }
+ if cfg.MinDialTimeout == 0 {
+ cfg.MinDialTimeout = 5 * time.Second
+ }
+ if cfg.EstablishedConnsPerTorrent == 0 {
+ cfg.EstablishedConnsPerTorrent = 80
+ }
+ if cfg.HalfOpenConnsPerTorrent == 0 {
+ cfg.HalfOpenConnsPerTorrent = 80
+ }
+ if cfg.TorrentPeersHighWater == 0 {
+ cfg.TorrentPeersHighWater = 200
+ }
+ if cfg.TorrentPeersLowWater == 0 {
+ cfg.TorrentPeersLowWater = 50
+ }
+ if cfg.HandshakesTimeout == 0 {
+ cfg.HandshakesTimeout = 20 * time.Second
+ }
}
type EncryptionPolicy struct {