diff options
author | Jan-Michael Brummer <jan.brummer@tabos.org> | 2023-03-17 09:05:37 -0400 |
---|---|---|
committer | Jan-Michael Brummer <jan.brummer@tabos.org> | 2023-03-27 16:31:58 +0200 |
commit | 1684613c6126da710d8ed439f87b595f1ac31917 (patch) | |
tree | 7788b769d327da659b9d1c5eafaa6d1565abd793 /src/backend/px-manager.c | |
parent | f20a56d73694ffcf37eccb6c8c31070def74aaba (diff) | |
download | libproxy-git-1684613c6126da710d8ed439f87b595f1ac31917.tar.gz |
Add a duplicate check for proxy arrays (#87)
Co-authored-by: Jan-Michael Brummer <jan-michael.brummer1@volkswagen.de>
Diffstat (limited to 'src/backend/px-manager.c')
-rw-r--r-- | src/backend/px-manager.c | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/backend/px-manager.c b/src/backend/px-manager.c index 618d9fe..1e3bcb0 100644 --- a/src/backend/px-manager.c +++ b/src/backend/px-manager.c @@ -450,10 +450,10 @@ px_manager_run_pac (PeasExtensionSet *set, proxy_string = g_strconcat ("socks://", server, NULL); } - g_strv_builder_add (pac_data->builder, proxy_string); + px_strv_builder_add_proxy (pac_data->builder, proxy_string); } else { /* Syntax not found, returning direct */ - g_strv_builder_add (pac_data->builder, "direct://"); + px_strv_builder_add_proxy (pac_data->builder, "direct://"); } } } @@ -549,7 +549,7 @@ px_manager_get_proxies_sync (PxManager *self, g_debug ("%s: url=%s online=%d", __FUNCTION__, url ? url : "?", self->online); if (!uri || !self->online) { - g_strv_builder_add (builder, "direct://"); + px_strv_builder_add_proxy (builder, "direct://"); return g_strv_builder_end (builder); } @@ -568,16 +568,28 @@ px_manager_get_proxies_sync (PxManager *self, }; peas_extension_set_foreach (self->pacrunner_set, px_manager_run_pac, &pac_data); } else if (!g_str_has_prefix (g_uri_get_scheme (conf_url), "wpad") && !g_str_has_prefix (g_uri_get_scheme (conf_url), "pac+")) { - g_strv_builder_add (builder, g_uri_to_string (conf_url)); + px_strv_builder_add_proxy (builder, g_uri_to_string (conf_url)); } } /* In case no proxy could be found, assume direct connection */ if (((GPtrArray *)builder)->len == 0) - g_strv_builder_add (builder, "direct://"); + px_strv_builder_add_proxy (builder, "direct://"); for (int idx = 0; idx < ((GPtrArray *)builder)->len; idx++) g_debug ("%s: Proxy[%d] = %s", __FUNCTION__, idx, (char *)((GPtrArray *)builder)->pdata[idx]); return g_strv_builder_end (builder); } + +void +px_strv_builder_add_proxy (GStrvBuilder *builder, + const char *value) +{ + for (int idx = 0; idx < ((GPtrArray *)builder)->len; idx++) { + if (strcmp ((char *)((GPtrArray *)builder)->pdata[idx], value) == 0) + return; + } + + g_strv_builder_add (builder, value); +} |