This commit is contained in:
@@ -45,9 +45,36 @@ func NewService(id protocol.DeviceID, cfg config.Wrapper) *Service {
|
||||
mut: sync.NewRWMutex(),
|
||||
}
|
||||
s.Service = util.AsService(s.serve, s.String())
|
||||
cfg.Subscribe(s)
|
||||
return s
|
||||
}
|
||||
|
||||
func (s *Service) VerifyConfiguration(from, to config.Configuration) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Service) CommitConfiguration(from, to config.Configuration) bool {
|
||||
if !from.Options.NATEnabled && to.Options.NATEnabled {
|
||||
s.mut.Lock()
|
||||
l.Debugln("Starting NAT service")
|
||||
s.timer.Reset(0)
|
||||
s.mut.Unlock()
|
||||
} else if from.Options.NATEnabled && !to.Options.NATEnabled {
|
||||
s.mut.Lock()
|
||||
l.Debugln("Stopping NAT service")
|
||||
if !s.timer.Stop() {
|
||||
<-s.timer.C
|
||||
}
|
||||
s.mut.Unlock()
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (s *Service) Stop() {
|
||||
s.cfg.Unsubscribe(s)
|
||||
s.Service.Stop()
|
||||
}
|
||||
|
||||
func (s *Service) serve(ctx context.Context) {
|
||||
announce := stdsync.Once{}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user