diff options
| author | bohu <bohu@google.com> | 2017-03-28 14:51:23 -0700 |
|---|---|---|
| committer | bohu <bohu@google.com> | 2017-03-28 15:04:38 -0700 |
| commit | ec768709cc029d307b9e57e8dce193b7ee8c2321 (patch) | |
| tree | 79368499d4a988a034006579fb088a389b44d9bf /qemu_pipe/qemu_pipe.cpp | |
| parent | 79b30058992ddf678a261a59172a009d6a0db0ed (diff) | |
| download | system_core-ec768709cc029d307b9e57e8dce193b7ee8c2321.tar.gz system_core-ec768709cc029d307b9e57e8dce193b7ee8c2321.tar.bz2 system_core-ec768709cc029d307b9e57e8dce193b7ee8c2321.zip | |
Revert "Emulator: Enhance qemu_pipe.h to handle partial rw"
It broke master
BUG: 36695011
This reverts commit 7b60bd95dfa07e86325b432465fb0043648f6c97.
Change-Id: Idd45acb63b2e6112b4230de2c0609aa8f2092f45
Diffstat (limited to 'qemu_pipe/qemu_pipe.cpp')
| -rw-r--r-- | qemu_pipe/qemu_pipe.cpp | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/qemu_pipe/qemu_pipe.cpp b/qemu_pipe/qemu_pipe.cpp index ca3b79578..a4529deb8 100644 --- a/qemu_pipe/qemu_pipe.cpp +++ b/qemu_pipe/qemu_pipe.cpp @@ -22,10 +22,6 @@ #include <errno.h> #include <stdio.h> -#include <android-base/file.h> - -using android::base::ReadFully; -using android::base::WriteFully; // Define QEMU_PIPE_DEBUG if you want to print error messages when an error // occurs during pipe operations. The macro should simply take a printf-style @@ -70,10 +66,15 @@ int qemu_pipe_open(const char* pipeName) { // Write the pipe name, *including* the trailing zero which is necessary. size_t pipeNameLen = strlen(pipeName); - if (!WriteFully(fd, pipeName, pipeNameLen + 1U)) { + ssize_t ret = TEMP_FAILURE_RETRY(write(fd, pipeName, pipeNameLen + 1U)); + if (ret != (ssize_t)pipeNameLen + 1) { QEMU_PIPE_DEBUG("%s: Could not connect to %s pipe service: %s", __FUNCTION__, pipeName, strerror(errno)); - close(fd); + if (ret == 0) { + errno = ECONNRESET; + } else if (ret > 0) { + errno = EINVAL; + } return -1; } return fd; @@ -85,11 +86,13 @@ int qemu_pipe_open(const char* pipeName) { int qemu_pipe_frame_send(int fd, const void* buff, size_t len) { char header[5]; snprintf(header, sizeof(header), "%04zx", len); - if (!WriteFully(fd, header, 4)) { + ssize_t ret = TEMP_FAILURE_RETRY(write(fd, header, 4)); + if (ret != 4) { QEMU_PIPE_DEBUG("Can't write qemud frame header: %s", strerror(errno)); return -1; } - if (!WriteFully(fd, buff, len)) { + ret = TEMP_FAILURE_RETRY(write(fd, buff, len)); + if (ret != (ssize_t)len) { QEMU_PIPE_DEBUG("Can't write qemud frame payload: %s", strerror(errno)); return -1; } @@ -103,7 +106,8 @@ int qemu_pipe_frame_send(int fd, const void* buff, size_t len) { // end-of-stream. int qemu_pipe_frame_recv(int fd, void* buff, size_t len) { char header[5]; - if (!ReadFully(fd, header, 4)) { + ssize_t ret = TEMP_FAILURE_RETRY(read(fd, header, 4)); + if (ret != 4) { QEMU_PIPE_DEBUG("Can't read qemud frame header: %s", strerror(errno)); return -1; } @@ -118,7 +122,8 @@ int qemu_pipe_frame_recv(int fd, void* buff, size_t len) { len); return -1; } - if (!ReadFully(fd, buff, size)) { + ret = TEMP_FAILURE_RETRY(read(fd, buff, size)); + if (ret != (ssize_t)size) { QEMU_PIPE_DEBUG("Could not read qemud frame payload: %s", strerror(errno)); return -1; |
