Skip to content

Commit

Permalink
Add switch to disable relays
Browse files Browse the repository at this point in the history
  • Loading branch information
AudriusButkevicius committed Aug 19, 2015
1 parent 0318048 commit 1e8b185
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 4 deletions.
14 changes: 11 additions & 3 deletions cmd/syncthing/connections.go
Expand Up @@ -45,8 +45,9 @@ type connectionSvc struct {

lastRelayCheck map[protocol.DeviceID]time.Time

mut sync.RWMutex
connType map[protocol.DeviceID]model.ConnectionType
mut sync.RWMutex
connType map[protocol.DeviceID]model.ConnectionType
relaysEnabled bool
}

func newConnectionSvc(cfg *config.Wrapper, myID protocol.DeviceID, mdl *model.Model, tlsCfg *tls.Config) *connectionSvc {
Expand All @@ -59,6 +60,7 @@ func newConnectionSvc(cfg *config.Wrapper, myID protocol.DeviceID, mdl *model.Mo
conns: make(chan model.IntermediateConnection),

connType: make(map[protocol.DeviceID]model.ConnectionType),
relaysEnabled: cfg.Options().RelaysEnabled,
lastRelayCheck: make(map[protocol.DeviceID]time.Time),
}
cfg.Subscribe(svc)
Expand Down Expand Up @@ -239,6 +241,7 @@ func (s *connectionSvc) connect() {

s.mut.RLock()
ct, ok := s.connType[deviceID]
relaysEnabled := s.relaysEnabled
s.mut.RUnlock()
if connected && ok && ct.IsDirect() {
continue
Expand Down Expand Up @@ -296,7 +299,8 @@ func (s *connectionSvc) connect() {
// Also, do not set lastRelayCheck time if we have no relays,
// as otherwise when we do discover relays, we might have to
// wait up to RelayReconnectIntervalM to connect again.
if connected || len(relays) == 0 {
// Also, do not try relays if we are explicitly told not to.
if connected || len(relays) == 0 || !relaysEnabled {
continue nextDevice
}

Expand Down Expand Up @@ -394,6 +398,10 @@ func (s *connectionSvc) VerifyConfiguration(from, to config.Configuration) error
}

func (s *connectionSvc) CommitConfiguration(from, to config.Configuration) bool {
s.mut.Lock()
s.relaysEnabled = to.Options.RelaysEnabled
s.mut.Unlock()

// We require a restart if a device as been removed.

newDevices := make(map[protocol.DeviceID]bool, len(to.Devices))
Expand Down
2 changes: 1 addition & 1 deletion cmd/syncthing/main.go
Expand Up @@ -676,7 +676,7 @@ func syncthingMain() {
connectionSvc := newConnectionSvc(cfg, myID, m, tlsCfg)
mainSvc.Add(connectionSvc)

if opts.GlobalAnnEnabled || opts.RelayWithoutGlobalAnn {
if opts.RelaysEnabled && (opts.GlobalAnnEnabled || opts.RelayWithoutGlobalAnn) {
relaySvc = relay.NewSvc(cfg, tlsCfg, connectionSvc.conns)
connectionSvc.Add(relaySvc)
}
Expand Down
1 change: 1 addition & 0 deletions lib/config/config.go
Expand Up @@ -223,6 +223,7 @@ type OptionsConfiguration struct {
MaxSendKbps int `xml:"maxSendKbps" json:"maxSendKbps"`
MaxRecvKbps int `xml:"maxRecvKbps" json:"maxRecvKbps"`
ReconnectIntervalS int `xml:"reconnectionIntervalS" json:"reconnectionIntervalS" default:"60"`
RelaysEnabled bool `xml:"relaysEnabled" json:"relaysEnabled" default:"true"`
RelayReconnectIntervalM int `xml:"relayReconnectIntervalM" json:"relayReconnectIntervalM" default:"10"`
RelayWithoutGlobalAnn bool `xml:"relayWithoutGlobalAnn" json:"relayWithoutGlobalAnn" default:"false"`
StartBrowser bool `xml:"startBrowser" json:"startBrowser" default:"true"`
Expand Down
2 changes: 2 additions & 0 deletions lib/config/config_test.go
Expand Up @@ -41,6 +41,7 @@ func TestDefaultValues(t *testing.T) {
MaxSendKbps: 0,
MaxRecvKbps: 0,
ReconnectIntervalS: 60,
RelaysEnabled: true,
RelayReconnectIntervalM: 10,
RelayWithoutGlobalAnn: false,
StartBrowser: true,
Expand Down Expand Up @@ -155,6 +156,7 @@ func TestOverriddenValues(t *testing.T) {
MaxSendKbps: 1234,
MaxRecvKbps: 2341,
ReconnectIntervalS: 6000,
RelaysEnabled: false,
RelayReconnectIntervalM: 20,
RelayWithoutGlobalAnn: true,
StartBrowser: false,
Expand Down
1 change: 1 addition & 0 deletions lib/config/testdata/overridenvalues.xml
Expand Up @@ -13,6 +13,7 @@
<maxSendKbps>1234</maxSendKbps>
<maxRecvKbps>2341</maxRecvKbps>
<reconnectionIntervalS>6000</reconnectionIntervalS>
<relaysEnabled>false</relaysEnabled>
<relayReconnectIntervalM>20</relayReconnectIntervalM>
<relayWithoutGlobalAnn>true</relayWithoutGlobalAnn>
<startBrowser>false</startBrowser>
Expand Down

0 comments on commit 1e8b185

Please sign in to comment.