Hey,
we are using Mender alongside other services on devices at customer sites. When a customer needs a proxy, we’d like a single, centralized configuration file with the proxy-related environment variables that we inject into all services that need them.
Most HTTP client libraries (libcurl, Go’s net/http, .NET) expect no_proxy as a comma-separated list, e.g.:
no_proxy=localhost,.example.com,foo.bar
The Mender documentation, however, states that the client only supports a whitespace-separated list:
Configuration | Mender documentation
Which matches the implementation here:
Is there a reason not to also support comma-separated lists?
A whitespace-separated list never contains a comma, and vice versa, so the code could check for a comma and split on , if present, otherwise on whitespace. This wouldn’t break existing configurations.
bool HostNameMatchesNoProxy(const string &host, const string &no_proxy) {
- auto entries = common::SplitString(no_proxy, " ");
+ auto entries = common::SplitString(no_proxy, no_proxy.find(',') != string::npos ? "," : " ");
for (string &entry : entries) {
Edit: Since mender-update only accepts a whitespace-separated no_proxy, its child processes inherit that value too. Since most HTTP libraries expect commas, they then fail to parse it and effectively ignore no_proxy.