diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2010-10-16 16:13:38 +0300 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2010-10-16 16:13:38 +0300 |
commit | 3b1dd36f27368aae26248c5bfda38af77d2770dc (patch) | |
tree | b06167026c53c10909173720ea771a0e303ae4ff | |
parent | 08e9f27cb31fec8fdf92f9d5cd01b38dc3f23bdf (diff) | |
download | pacrunner-3b1dd36f27368aae26248c5bfda38af77d2770dc.tar.gz |
Add support for enumerating through proxy configurations
-rw-r--r-- | src/proxy.c | 26 |
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); } |