aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2010-10-16 16:13:38 +0300
committerMarcel Holtmann <marcel@holtmann.org>2010-10-16 16:13:38 +0300
commit3b1dd36f27368aae26248c5bfda38af77d2770dc (patch)
treeb06167026c53c10909173720ea771a0e303ae4ff
parent08e9f27cb31fec8fdf92f9d5cd01b38dc3f23bdf (diff)
downloadpacrunner-3b1dd36f27368aae26248c5bfda38af77d2770dc.tar.gz
Add support for enumerating through proxy configurations
-rw-r--r--src/proxy.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/proxy.c b/src/proxy.c
index 05d3755..e02df8e 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -301,11 +301,37 @@ int pacrunner_proxy_disable(struct pacrunner_proxy *proxy)
const char *pacrunner_proxy_lookup(const char *url, const char *host)
{
+ GList *list;
+ struct pacrunner_proxy *selected_proxy = NULL;
+
DBG("url %s host %s", url, host);
if (proxy_list == NULL)
return "DIRECT";
+ for (list = g_list_first(proxy_list); list; list = g_list_next(list)) {
+ struct pacrunner_proxy *proxy = list->data;
+
+ if (proxy->method == PACRUNNER_PROXY_METHOD_MANUAL ||
+ proxy->method == PACRUNNER_PROXY_METHOD_AUTO) {
+ selected_proxy = proxy;
+ break;
+ } else if (proxy->method == PACRUNNER_PROXY_METHOD_DIRECT)
+ selected_proxy = proxy;
+ }
+
+ if (selected_proxy == NULL)
+ return "DIRECT";
+
+ switch (selected_proxy->method) {
+ case PACRUNNER_PROXY_METHOD_UNKNOWN:
+ case PACRUNNER_PROXY_METHOD_DIRECT:
+ return "DIRECT";
+ case PACRUNNER_PROXY_METHOD_MANUAL:
+ case PACRUNNER_PROXY_METHOD_AUTO:
+ break;
+ }
+
return __pacrunner_mozjs_execute(url, host);
}