Fix #173
This commit is contained in:
@@ -136,7 +136,11 @@ func _main(background context.Context, args []string) int {
|
|||||||
err = firewallConf.AcceptAll(ctx)
|
err = firewallConf.AcceptAll(ctx)
|
||||||
fatalOnError(err)
|
fatalOnError(err)
|
||||||
|
|
||||||
connected, signalConnected := context.WithCancel(context.Background())
|
connectedCh := make(chan struct{})
|
||||||
|
signalConnected := func() {
|
||||||
|
connectedCh <- struct{}{}
|
||||||
|
}
|
||||||
|
defer close(connectedCh)
|
||||||
go collectStreamLines(ctx, streamMerger, logger, signalConnected)
|
go collectStreamLines(ctx, streamMerger, logger, signalConnected)
|
||||||
|
|
||||||
waiter := command.NewWaiter()
|
waiter := command.NewWaiter()
|
||||||
@@ -283,9 +287,17 @@ func _main(background context.Context, args []string) int {
|
|||||||
})
|
})
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
<-connected.Done() // blocks until openvpn is connected
|
firstRun := true
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
return
|
||||||
|
case <-connectedCh: // blocks until openvpn is connected
|
||||||
onConnected(ctx, allSettings, logger, dnsConf, fileManager, waiter,
|
onConnected(ctx, allSettings, logger, dnsConf, fileManager, waiter,
|
||||||
streamMerger, httpServer, routingConf, defaultInterface, piaConf)
|
streamMerger, httpServer, routingConf, defaultInterface, piaConf, firstRun)
|
||||||
|
firstRun = false
|
||||||
|
}
|
||||||
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
signalsCh := make(chan os.Signal, 1)
|
signalsCh := make(chan os.Signal, 1)
|
||||||
@@ -423,15 +435,14 @@ func onConnected(ctx context.Context, allSettings settings.Settings,
|
|||||||
logger logging.Logger, dnsConf dns.Configurator, fileManager files.FileManager,
|
logger logging.Logger, dnsConf dns.Configurator, fileManager files.FileManager,
|
||||||
waiter command.Waiter, streamMerger command.StreamMerger, httpServer server.Server,
|
waiter command.Waiter, streamMerger command.StreamMerger, httpServer server.Server,
|
||||||
routingConf routing.Routing, defaultInterface string,
|
routingConf routing.Routing, defaultInterface string,
|
||||||
piaConf pia.Configurator,
|
piaConf pia.Configurator, firstRun bool,
|
||||||
) {
|
) {
|
||||||
if allSettings.PIA.PortForwarding.Enabled {
|
if allSettings.PIA.PortForwarding.Enabled {
|
||||||
time.AfterFunc(5*time.Second, func() {
|
time.AfterFunc(5*time.Second, func() {
|
||||||
setupPortForwarding(logger, piaConf, allSettings.PIA, allSettings.System.UID, allSettings.System.GID)
|
setupPortForwarding(logger, piaConf, allSettings.PIA, allSettings.System.UID, allSettings.System.GID)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
if allSettings.DNS.Enabled && firstRun {
|
||||||
if allSettings.DNS.Enabled {
|
|
||||||
go unboundRunLoop(ctx, logger, dnsConf, allSettings.DNS, allSettings.System.UID, allSettings.System.GID, waiter, streamMerger, httpServer)
|
go unboundRunLoop(ctx, logger, dnsConf, allSettings.DNS, allSettings.System.UID, allSettings.System.GID, waiter, streamMerger, httpServer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user