[tor-commits] [onionoo/master] Handle non-positive offsets and limits.

karsten at torproject.org karsten at torproject.org
Thu Dec 6 08:46:26 UTC 2012


commit b4b90b045c1ef257d08951954bb44ec59aec909f
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date:   Thu Dec 6 09:09:55 2012 +0100

    Handle non-positive offsets and limits.
    
    Non-positive offsets were previously ignored, which is still the case.
    
    However, non-positive limits were ignored, too, which seems wrong.  If
    a client wants even less than none documents, we shouldn't respond with
    all documents we have.  Instead, we should return an empty response.
---
 src/org/torproject/onionoo/ResourceServlet.java |   12 ++++--------
 web/index.html                                  |    4 ++++
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/org/torproject/onionoo/ResourceServlet.java b/src/org/torproject/onionoo/ResourceServlet.java
index bc075b0..0fa9174 100644
--- a/src/org/torproject/onionoo/ResourceServlet.java
+++ b/src/org/torproject/onionoo/ResourceServlet.java
@@ -330,16 +330,12 @@ public class ResourceServlet extends HttpServlet {
         response.sendError(HttpServletResponse.SC_BAD_REQUEST);
         return;
       }
-      if (limit >= 0) {
-        while (limit < orderedRelays.size()) {
-          orderedRelays.remove(orderedRelays.size() - 1);
-        }
+      while (!orderedRelays.isEmpty() && limit < orderedRelays.size()) {
+        orderedRelays.remove(orderedRelays.size() - 1);
       }
       limit -= orderedRelays.size();
-      if (limit >= 0) {
-        while (limit < orderedBridges.size()) {
-          orderedBridges.remove(orderedBridges.size() - 1);
-        }
+      while (!orderedBridges.isEmpty() && limit < orderedBridges.size()) {
+        orderedBridges.remove(orderedBridges.size() - 1);
       }
     }
 
diff --git a/web/index.html b/web/index.html
index e29c0b8..ca87016 100755
--- a/web/index.html
+++ b/web/index.html
@@ -684,10 +684,14 @@ undefined.
 <tr><td><b>offset</b></td><td>Skip the given number of relays and/or
 bridges.
 Relays are skipped first, then bridges.
+Non-positive <b>offset</b> values are treated as zero and don't change the
+result.
 </td></tr>
 <tr><td><b>limit</b></td><td>Limit result to the given number of
 relays and/or bridges.
 Relays are kept first, then bridges.
+Non-positive <b>limit</b> values are treated as zero and lead to an empty
+result.
 When used together with <b>offset</b>, the offsetting step precedes the
 limiting step.
 </td></tr>



More information about the tor-commits mailing list