Merge "enable support for frames > 64k" am: 5779be9ce7
Original change: https://android-review.googlesource.com/c/device/generic/goldfish/+/2154629
Change-Id: I42d003f31f0d81277e515dac57360773ef754bfe
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/qemud/qemud.cpp b/qemud/qemud.cpp
index 9d4cb1e..13a2413 100644
--- a/qemud/qemud.cpp
+++ b/qemud/qemud.cpp
@@ -23,6 +23,8 @@
#include <qemu_pipe_bp.h>
#include <unistd.h>
+#include <arpa/inet.h>
+
int qemud_channel_open(const char* name) {
return qemu_pipe_open_ns("qemud", name, O_RDWR);
}
@@ -36,7 +38,13 @@
if (size == 0)
return 0;
- snprintf(header, sizeof(header), "%04x", size);
+ if(size >= 64 * 1024) { // use binary encoding
+ uint32_t length32be = htonl(size | (1U << 31));
+ memcpy(header, &length32be, 4);
+ } else { // use hex digit encoding
+ snprintf(header, sizeof(header), "%04x", size);
+ }
+
if (qemu_pipe_write_fully(pipe, header, 4)) {
return -1;
}