From af3dcdbc3ff6a1ba2ed824b7f20498e806ee1e58 Mon Sep 17 00:00:00 2001 From: Xavier Lamorlette Date: Wed, 12 Aug 2026 16:26:36 +0200 Subject: [PATCH] For agent URL configuration, consider empty environment variables as unset --- src/datadog/datadog_agent_config.cpp | 5 ++++- test/test_tracer_config.cpp | 16 ++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/datadog/datadog_agent_config.cpp b/src/datadog/datadog_agent_config.cpp index 52a80eb9..d5335fd1 100644 --- a/src/datadog/datadog_agent_config.cpp +++ b/src/datadog/datadog_agent_config.cpp @@ -10,12 +10,15 @@ namespace datadog::tracing { namespace { Optional build_agent_url_from_environment_variables() { - if (Optional url_env = lookup(environment::DD_TRACE_AGENT_URL)) { + Optional url_env = lookup(environment::DD_TRACE_AGENT_URL); + if (url_env && !url_env->empty()) { return std::string{*url_env}; } Optional env_host = lookup(environment::DD_AGENT_HOST); + if (env_host && env_host->empty()) env_host = nullopt; Optional env_port = lookup(environment::DD_TRACE_AGENT_PORT); + if (env_port && env_port->empty()) env_port = nullopt; if (env_host || env_port) { std::string agent_url = "http://"; const StringView host = env_host.value_or("localhost"); diff --git a/test/test_tracer_config.cpp b/test/test_tracer_config.cpp index 0bdf5f42..f23f8893 100644 --- a/test/test_tracer_config.cpp +++ b/test/test_tracer_config.cpp @@ -504,18 +504,18 @@ TRACER_CONFIG_TEST("TracerConfig::agent") { }; auto test_case = GENERATE(values({ - {"override host with default port", "dd-agent", nullopt, nullopt, - "http", "dd-agent:8126"}, - {"override port and host", "dd-agent", "8080", nullopt, "http", + {"all defaults", nullopt, nullopt, nullopt, "http", "localhost:8126"}, + {"override host", "dd-agent", nullopt, nullopt, "http", + "dd-agent:8126"}, + {"override port", nullopt, "8080", nullopt, "http", "localhost:8080"}, + {"override host and port", "dd-agent", "8080", nullopt, "http", "dd-agent:8080"}, - {"override port with default host", nullopt, "8080", nullopt, "http", - "localhost:8080"}, + {"empty URL", "dd-agent", "8080", "", "http", "dd-agent:8080"}, + {"empty host", "", nullopt, nullopt, "http", "localhost:8126"}, + {"empty port", nullopt, "", nullopt, "http", "localhost:8126"}, {"IPv6 host", "::1", nullopt, nullopt, "http", "[::1]:8126"}, {"IPv6 host with brackets", "[::1]", nullopt, nullopt, "http", "[::1]:8126"}, - // A bogus port number will cause an error in the TCPClient, not - // during configuration. For the purposes of configuration, any - // value is accepted. {"we don't parse port", nullopt, "bogus", nullopt, "http", "localhost:bogus"}, {"URL", nullopt, nullopt, "http://dd-agent:8080", "http",