Browse Source

zero accepts length parameter

Martin Kunz 5 years ago
parent
commit
624dc1ae67
1 changed files with 16 additions and 4 deletions
  1. 16 4
      src/main/java/com/acdp/transceivr/WebServer.java

+ 16 - 4
src/main/java/com/acdp/transceivr/WebServer.java

@@ -19,6 +19,7 @@ public class WebServer {
     private int nextID = 1;
     private ConcurrentHashMap<Integer, Transfer> uploads = new ConcurrentHashMap<>();
     private Timer t=new Timer("cleanup",true);
+    private final static int BS=2014;
 
     public WebServer(Params params) {
         this.params = params;
@@ -32,13 +33,24 @@ public class WebServer {
             staticFiles.location("/webroot");
         get("/zero", (req, res) -> {
             var os = res.raw().getOutputStream();
-            var ba = new byte[1024];
-            while (true)
-                os.write(ba);
+            var ba = new byte[BS];
+            var lengthParam=req.queryParams("length");
+            if(lengthParam!=null) {
+                res.header("Content-Length",lengthParam);
+                int length=Integer.parseInt(lengthParam);
+                for(;length>BS;length-=BS)
+                    os.write(ba);
+                os.write(ba,0,length);
+            }
+            else {
+                while (true)
+                    os.write(ba);
+            }
+            return "";
         });
         post("/null", (req, res) -> {
             var is = req.raw().getInputStream();
-            var ba = new byte[1024];
+            var ba = new byte[BS];
             while (is.read(ba)!=-1);
             res.status(200);
             return "";