diff --git a/cmd/cloudflared/tunnel/cmd.go b/cmd/cloudflared/tunnel/cmd.go index 8bb331aa..f9407c8f 100644 --- a/cmd/cloudflared/tunnel/cmd.go +++ b/cmd/cloudflared/tunnel/cmd.go @@ -296,7 +296,7 @@ func StartServer( }() // Serve DNS proxy stand-alone if no hostname or tag or app is going to run - if dnsProxyStandAlone(c) { + if dnsProxyStandAlone(c, namedTunnel) { connectedSignal.Notify() // no grace period, handle SIGINT/SIGTERM immediately return waitToShutdown(&wg, cancel, errC, graceShutdownC, 0, log) diff --git a/cmd/cloudflared/tunnel/configuration.go b/cmd/cloudflared/tunnel/configuration.go index 38b74d7c..c2be5784 100644 --- a/cmd/cloudflared/tunnel/configuration.go +++ b/cmd/cloudflared/tunnel/configuration.go @@ -85,8 +85,8 @@ func logClientOptions(c *cli.Context, log *zerolog.Logger) { } } -func dnsProxyStandAlone(c *cli.Context) bool { - return c.IsSet("proxy-dns") && (!c.IsSet("hostname") && !c.IsSet("tag") && !c.IsSet("hello-world")) +func dnsProxyStandAlone(c *cli.Context, namedTunnel *connection.NamedTunnelConfig) bool { + return c.IsSet("proxy-dns") && (!c.IsSet("hostname") && !c.IsSet("tag") && !c.IsSet("hello-world") && namedTunnel == nil) } func findOriginCert(originCertPath string, log *zerolog.Logger) (string, error) { diff --git a/component-tests/conftest.py b/component-tests/conftest.py index 799914b5..386fc1dc 100644 --- a/component-tests/conftest.py +++ b/component-tests/conftest.py @@ -20,11 +20,21 @@ def component_tests_config(): LOGGER.info(f"component tests base config {config}") def _component_tests_config(additional_config={}, named_tunnel=True): + + # Regression test for TUN-4177, running with proxy-dns should not prevent tunnels from running + additional_config["proxy-dns"] = True + additional_config["proxy-dns-port"] = 9053 + if named_tunnel: return NamedTunnelConfig(additional_config=additional_config, - cloudflared_binary=config['cloudflared_binary'], tunnel=config['tunnel'], credentials_file=config['credentials_file'], ingress=config['ingress']) + cloudflared_binary=config['cloudflared_binary'], + tunnel=config['tunnel'], + credentials_file=config['credentials_file'], + ingress=config['ingress']) + return ClassicTunnelConfig( - additional_config=additional_config, cloudflared_binary=config['cloudflared_binary'], hostname=config['classic_hostname'], origincert=config['origincert']) + additional_config=additional_config, cloudflared_binary=config['cloudflared_binary'], + hostname=config['classic_hostname'], origincert=config['origincert']) return _component_tests_config diff --git a/component-tests/test_logging.py b/component-tests/test_logging.py index dcee7989..d464d5ca 100644 --- a/component-tests/test_logging.py +++ b/component-tests/test_logging.py @@ -11,13 +11,13 @@ expect_message = "Starting Hello World server" def assert_log_to_terminal(cloudflared): - stderr = cloudflared.stderr.read(1250) + stderr = cloudflared.stderr.read(1500) assert expect_message.encode() in stderr, f"{stderr} doesn't contain {expect_message}" def assert_log_in_file(file): with open(file, "r") as f: - log = f.read(1500) + log = f.read(1850) assert expect_message in log, f"{log} doesn't contain {expect_message}"