diff --git a/apps/addressbook/web.xml b/apps/addressbook/web.xml
deleted file mode 100644
index d86d32289b..0000000000
--- a/apps/addressbook/web.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
- XSSFilter
- net.i2p.servlet.filters.XSSFilter
-
-
- XSSFilter
- /*
-
-
-
- addressbook
- net.i2p.addressbook.Servlet
-
- home
- ./addressbook
-
- 1
-
-
-
- addressbook
- /*
-
-
-
-
- 30
-
- true
-
-
-
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java
index 183403a9d8..38b6578931 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java
@@ -720,7 +720,13 @@ public class RouterConsoleRunner implements RouterApp {
for (int i = 0; i < fileNames.length; i++) {
String appName = fileNames[i].substring(0, fileNames[i].lastIndexOf(".war"));
String enabled = props.getProperty(PREFIX + appName + ENABLED);
- if (! "false".equals(enabled)) {
+ if (appName.equals("addressbook")) {
+ // addressbook.war is now empty, thread is started by SusiDNS
+ if (enabled != null) {
+ props.remove(PREFIX + "addressbook" + ENABLED);
+ rewrite = true;
+ }
+ } else if (! "false".equals(enabled)) {
try {
String path = new File(dir, fileNames[i]).getCanonicalPath();
WebAppStarter.startWebApp(_context, chColl, appName, path);
diff --git a/apps/susidns/src/WEB-INF/web-template.xml b/apps/susidns/src/WEB-INF/web-template.xml
index 1937a5b14f..a1b019ab72 100644
--- a/apps/susidns/src/WEB-INF/web-template.xml
+++ b/apps/susidns/src/WEB-INF/web-template.xml
@@ -13,6 +13,22 @@
susidns
+
+
+ addressbook-runner
+ net.i2p.addressbook.servlet.Servlet
+
+ home
+ ./addressbook
+
+ 1
+
+
+
+ addressbook-runner
+ /addressbook-runner
+
+
diff --git a/apps/susidns/src/build.xml b/apps/susidns/src/build.xml
index 06582c7769..60d66140fe 100644
--- a/apps/susidns/src/build.xml
+++ b/apps/susidns/src/build.xml
@@ -31,6 +31,7 @@
+
diff --git a/apps/addressbook/java/src/net/i2p/addressbook/Servlet.java b/apps/susidns/src/java/src/net/i2p/addressbook/servlet/Servlet.java
similarity index 91%
rename from apps/addressbook/java/src/net/i2p/addressbook/Servlet.java
rename to apps/susidns/src/java/src/net/i2p/addressbook/servlet/Servlet.java
index c72adef0ae..0f5ba9155a 100644
--- a/apps/addressbook/java/src/net/i2p/addressbook/Servlet.java
+++ b/apps/susidns/src/java/src/net/i2p/addressbook/servlet/Servlet.java
@@ -19,11 +19,10 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
-package net.i2p.addressbook;
+package net.i2p.addressbook.servlet;
import java.io.IOException;
import java.io.PrintWriter;
-import java.util.Random;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
@@ -31,12 +30,15 @@ import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import net.i2p.addressbook.DaemonThread;
+
/**
* A wrapper for addressbook to allow it to be started as a web application.
*
- * This was a GenericServlet, we make it an HttpServlet solely to provide a hook
- * for SusiDNS to wake us up when the subscription list changes.
+ * This was a GenericServlet, we make it an HttpServlet solely to provide a
+ * simple page to display status.
*
+ * @since 0.9.30 moved from addressbook to SusiDNS
* @author Ragnarok
*
*/
@@ -48,8 +50,7 @@ public class Servlet extends HttpServlet {
//private static final String PROP_NONCE = "addressbook.nonce";
/**
- * Hack to allow susidns to kick the daemon when the subscription list changes.
- * URL must be /addressbook/ with wakeup param set, and nonce param set from system property.
+ * Simple output to verify that the addressbook servlet is running.
*
* (non-Javadoc)
* see javax.servlet.Servlet#service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
diff --git a/apps/susidns/src/java/src/net/i2p/addressbook/servlet/package.html b/apps/susidns/src/java/src/net/i2p/addressbook/servlet/package.html
new file mode 100644
index 0000000000..644aab502e
--- /dev/null
+++ b/apps/susidns/src/java/src/net/i2p/addressbook/servlet/package.html
@@ -0,0 +1,8 @@
+
+
+
+The servlet that starts the addressbook DaemonThread.
+Moved from addressbook to SusiDNS in 0.9.30.
+
+
+
diff --git a/build.xml b/build.xml
index 16c8f3ea65..45be9efba6 100644
--- a/build.xml
+++ b/build.xml
@@ -310,7 +310,7 @@