Merge "adb: split up reads longer than 16k." am: 56d7d4e85f
am: bf2c482b56

* commit 'bf2c482b5625d7f0722e85415221a02795cb72ca':
  adb: split up reads longer than 16k.
diff --git a/adb/usb_linux_client.cpp b/adb/usb_linux_client.cpp
index ceed8fa..151c0aa 100644
--- a/adb/usb_linux_client.cpp
+++ b/adb/usb_linux_client.cpp
@@ -481,7 +481,8 @@
 
     char* buf = static_cast<char*>(data);
     while (len > 0) {
-        int n = adb_read(h->bulk_out, buf, len);
+        int read_len = (len > 16384) ? 16384 : len;
+        int n = adb_read(h->bulk_out, buf, read_len);
         if (n < 0) {
             D("ERROR: fd = %d, n = %d: %s", h->bulk_out, n, strerror(errno));
             return -1;