diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java
index 81fa555fcc5f8a219649c18c96218e431d22044e..453f7491b783d11e3380c30d9b70299c3d593620 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java
@@ -418,20 +418,45 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
                 }
             }
 
-            if (Boolean.parseBoolean(opts.getProperty(OPT_REJECT_USER_AGENTS)) &&
-                headers.containsKey("User-Agent")) {
-                String ua = headers.get("User-Agent").get(0);
-                if (!ua.startsWith("MYOB")) {
+            if (Boolean.parseBoolean(opts.getProperty(OPT_REJECT_USER_AGENTS))) {
+                if (headers.containsKey("User-Agent")) {
+                    String ua = headers.get("User-Agent").get(0);
+                    if (!ua.startsWith("MYOB")) {
+                        String blockAgents = opts.getProperty(OPT_USER_AGENTS);
+                        if (blockAgents != null) {
+                            String[] agents = DataHelper.split(blockAgents, ",");
+                            for (int i = 0; i < agents.length; i++) {
+                                String ag = agents[i].trim();
+                                if (ag.equals("none"))
+                                    continue;
+                                if (ag.length() > 0 && ua.contains(ag)) {
+                                    if (_log.shouldLog(Log.WARN))
+                                        _log.warn("Refusing access from: " +
+                                                  Base32.encode(peerHash.getData()) + ".b32.i2p" +
+                                                  " with User-Agent: " + ua);
+                                    try {
+                                        socket.getOutputStream().write(ERR_INPROXY.getBytes("UTF-8"));
+                                    } catch (IOException ioe) {}
+                                    try {
+                                        socket.close();
+                                    } catch (IOException ioe) {}
+                                    return;
+                                }
+                            }
+                        }
+                    }
+                } else {
+                    // no user-agent, block if blocklist contains "none"
                     String blockAgents = opts.getProperty(OPT_USER_AGENTS);
                     if (blockAgents != null) {
                         String[] agents = DataHelper.split(blockAgents, ",");
                         for (int i = 0; i < agents.length; i++) {
                             String ag = agents[i].trim();
-                            if (ag.length() > 0 && ua.contains(ag)) {
+                            if (ag.equals("none")) {
                                 if (_log.shouldLog(Log.WARN))
                                     _log.warn("Refusing access from: " +
                                               Base32.encode(peerHash.getData()) + ".b32.i2p" +
-                                              " with User-Agent: " + ua);
+                                              " with empty User-Agent");
                                 try {
                                     socket.getOutputStream().write(ERR_INPROXY.getBytes("UTF-8"));
                                 } catch (IOException ioe) {}