Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: src/org/adblockplus/android/ProxyService.java

Issue 9811019: ABP/Android Remember lart port used (Closed)
Patch Set: Created March 13, 2013, 10:13 a.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « res/values/sysstrings.xml ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/org/adblockplus/android/ProxyService.java
===================================================================
--- a/src/org/adblockplus/android/ProxyService.java
+++ b/src/org/adblockplus/android/ProxyService.java
@@ -74,7 +74,8 @@
private static final boolean logRequests = true;
// Do not use 8080 because it is a "dirty" port, Android uses it if something goes wrong
- private static final int[] portVariants = new int[] {2020, 3030, 4040, 5050, 6060, 7070, 9090, 1234, 12345, 4321, 0};
+ // First element is reserved for previously used port
+ private static final int[] portVariants = new int[] {-1, 2020, 3030, 4040, 5050, 6060, 7070, 9090, 1234, 12345, 4321, 0};
private final static int DEFAULT_TIMEOUT = 3000;
private final static int NO_TRAFFIC_TIMEOUT = 5 * 60 * 1000; // 5 minutes
@@ -212,7 +213,7 @@
registerReceiver(connectionReceiver, new IntentFilter(Proxy.PROXY_CHANGE_ACTION));
}
}
-
+
// Save current native proxy situation. The service is always started on the first run so
// we will always have a correct value from the box
SharedPreferences.Editor editor = prefs.edit();
@@ -226,10 +227,14 @@
// Start proxy
if (proxy == null)
{
+ // Select available port and bind to it, use previously selected port by default
+ portVariants[0] = prefs.getInt(getString(R.string.pref_lastport), -1);
Felix Dahlke 2013/03/13 13:16:49 I think it would be more elegant here to convert t
Andrey Novikov 2013/03/13 13:22:38 This was the first what I thought about but constr
Felix Dahlke 2013/03/13 13:24:57 But it's less error-prone (this would fall apart i
ServerSocket listen = null;
String msg = null;
for (int p : portVariants)
{
+ if (p < 0)
+ continue;
try
{
listen = new ServerSocket(p, 1024);
@@ -248,6 +253,11 @@
return;
}
+ // Save selected port
+ editor.putInt(getString(R.string.pref_lastport), port);
+ editor.commit();
+
+ // Initialize proxy
proxyConfiguration.put("handler", "main");
proxyConfiguration.put("main.prefix", "");
proxyConfiguration.put("main.class", "sunlabs.brazil.server.ChainHandler");
@@ -272,7 +282,7 @@
proxy.setup(listen, proxyConfiguration.getProperty("handler"), proxyConfiguration);
proxy.start();
}
-
+
if (transparent)
{
// Redirect traffic via iptables
@@ -525,7 +535,7 @@
{
return !transparent && !nativeProxyAutoConfigured;
}
-
+
/**
* Checks whether traffic check is pending
*/
@@ -718,7 +728,7 @@
builder.setContentTitle(getText(R.string.app_name));
builder.setContentText(getString(msgId, port));
builder.setOngoing(true);
-
+
Notification notification = builder.getNotification();
return notification;
}
« no previous file with comments | « res/values/sysstrings.xml ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld