diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java b/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java
index ae17622e85661daa443b47d4ecc795cc6ca4de67..72b6835eaae6272397e306d65e602b97f600ed82 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java
@@ -508,8 +508,15 @@ class BuildHandler {
          * Being a IBGW or OBEP generally leads to more connections, so if we are
          * approaching our connection limit (i.e. !haveCapacity()),
          * reject this request.
+         *
+         * Don't do this for class O, under the assumption that they are already talking
+         * to most of the routers, so there's no reason to reject. This may drive them
+         * to their conn. limits, but it's hopefully a temporary solution to the
+         * tunnel build congestion. As the net grows this will have to be revisited.
          */
+        RouterInfo ri = _context.router().getRouterInfo();
         if (response == 0 &&
+            (ri == null || ri.getBandwidthTier().charAt(0) != 'O') &&
             ((isInGW && ! _context.commSystem().haveInboundCapacity(87)) ||
              (isOutEnd && ! _context.commSystem().haveOutboundCapacity(87)))) {
                 _context.throttle().setTunnelStatus("Rejecting tunnels: Connection limit");