summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/btr/proxy/selector/pac/PacProxySelector.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/btr/proxy/selector/pac/PacProxySelector.java')
-rw-r--r--src/main/java/com/btr/proxy/selector/pac/PacProxySelector.java16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/main/java/com/btr/proxy/selector/pac/PacProxySelector.java b/src/main/java/com/btr/proxy/selector/pac/PacProxySelector.java
index 765a376..a8441d6 100644
--- a/src/main/java/com/btr/proxy/selector/pac/PacProxySelector.java
+++ b/src/main/java/com/btr/proxy/selector/pac/PacProxySelector.java
@@ -8,8 +8,11 @@ import java.net.SocketAddress;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
+
+import com.btr.proxy.selector.direct.NoProxySelector;
import com.btr.proxy.util.Logger;
import com.btr.proxy.util.Logger.LogLevel;
+import com.btr.proxy.util.MiscUtil;
import com.btr.proxy.util.ProxyUtil;
@@ -123,6 +126,9 @@ public class PacProxySelector extends ProxySelector {
List<Proxy> proxies = new ArrayList<Proxy>();
String parseResult = this.pacScriptParser.evaluate(uri.toString(),
uri.getHost());
+ if (parseResult == null) {
+ return ProxyUtil.noProxyList();
+ }
String[] proxyDefinitions = parseResult.split("[;]");
for (String proxyDef : proxyDefinitions) {
if (proxyDef.trim().length() > 0) {
@@ -162,19 +168,23 @@ public class PacProxySelector extends ProxySelector {
// Check proxy type.
Proxy.Type type = Proxy.Type.HTTP;
+ Integer port = ProxyUtil.DEFAULT_HTTP_PROXY_PORT;
+
if (proxyDef.toUpperCase().startsWith(PAC_SOCKS)) {
type = Proxy.Type.SOCKS;
+ port = ProxyUtil.DEFAULT_SOCKS_PROXY_PORT;
}
- String host = proxyDef.substring(6);
- Integer port = ProxyUtil.DEFAULT_HTTP_PROXY_PORT;
+ String host = proxyDef.substring(6).trim(); // because PROXY and SOCKS are both 5 chars... ;)
// Split port from host
int indexOfPort = host.indexOf(':');
if (indexOfPort != -1) {
- port = Integer.parseInt(host.substring(indexOfPort+1).trim());
+ port = MiscUtil.parseInt(host.substring(indexOfPort+1).trim());
host = host.substring(0, indexOfPort).trim();
}
+ if (port < 0 || port > 65535)
+ return Proxy.NO_PROXY;
SocketAddress adr = InetSocketAddress.createUnresolved(host, port);
return new Proxy(type, adr);