aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/service/ipc_server.go
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--service/ipc_server.go17
1 files changed, 17 insertions, 0 deletions
diff --git a/service/ipc_server.go b/service/ipc_server.go
index 17ea67c2..6d576846 100644
--- a/service/ipc_server.go
+++ b/service/ipc_server.go
@@ -71,6 +71,18 @@ func (s *ManagerService) RuntimeConfig(tunnelName string, config *conf.Config) e
}
func (s *ManagerService) Start(tunnelName string, unused *uintptr) error {
+ // For now, enforce only one tunnel at a time. Later we'll remove this silly restriction.
+ trackedTunnelsLock.Lock()
+ tt := make([]string, 0, len(trackedTunnels))
+ for t := range trackedTunnels {
+ tt = append(tt, t)
+ }
+ trackedTunnelsLock.Unlock()
+ for _, t := range tt {
+ s.Stop(t, unused)
+ }
+
+ // After that process is started -- it's somewhat asynchronous -- we install the new one.
c, err := conf.LoadFromName(tunnelName)
if err != nil {
return err
@@ -156,6 +168,11 @@ func (s *ManagerService) State(tunnelName string, state *TunnelState) error {
return nil
}
+func (s *ManagerService) GlobalState(unused uintptr, state *TunnelState) error {
+ *state = trackedTunnelsGlobalState()
+ return nil
+}
+
func (s *ManagerService) Create(tunnelConfig conf.Config, tunnel *Tunnel) error {
err := tunnelConfig.Save()
if err != nil {