Ver código fonte

max_data_length for get command

get command only reads 512 bytes at a time
anon 5 anos atrás
pai
commit
157a43f80a
2 arquivos alterados com 6 adições e 4 exclusões
  1. 1 1
      daemon/include/Server.h
  2. 5 3
      daemon/src/Server.cpp

+ 1 - 1
daemon/include/Server.h

@@ -29,7 +29,7 @@ private:
   /**
    * max buffer length
    */
-  enum { max_length = 1024 };
+  enum { max_length = 1024, max_data_length = 512 };
 
   /**
    * data buffer

+ 5 - 3
daemon/src/Server.cpp

@@ -378,11 +378,13 @@ void con_handler::handle_read_command(const boost::system::error_code &err,
             size_t size = this->getFile.tellg();
             this->getFile.seekg(std::ios::beg);
 
-            char fileBuffer[9];
-            while (size_t read = this->getFile.readsome(fileBuffer, 8)) {
+            char fileBuffer[max_data_length + 1];
+            while (size_t read =
+                       this->getFile.readsome(fileBuffer, max_data_length)) {
               fileBuffer[read] = 0;
               size -= read;
-              int remaining = size / 8 + (size % 8 == 0 ? 0 : 1);
+              int remaining = size / max_data_length +
+                              (size % max_data_length == 0 ? 0 : 1);
               answer["remaining"] = remaining;
               answer["cancel"] = false;
               answer["data"] = base64::encode(fileBuffer);