Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3961b0e5 authored by Jesse Hall's avatar Jesse Hall Committed by android-build-merger
Browse files

Merge "Handle EINTR from sendmsg/recvmsg" into oc-dev

am: 1df013c3

Change-Id: I0f452c592ce7f87b05626f468a5c2ddb989ff242
parents 52b7b5ed 1df013c3
Loading
Loading
Loading
Loading
+17 −8
Original line number Diff line number Diff line
@@ -179,12 +179,17 @@ int AHardwareBuffer_sendHandleToUnixSocket(const AHardwareBuffer* buffer, int so
    memcpy(fdData, fds.get(), sizeof(int) * fdCount);
    msg.msg_controllen = cmsg->cmsg_len;

    int result = sendmsg(socketFd, &msg, 0);
    if (result <= 0) {
    int result;
    do {
        result = sendmsg(socketFd, &msg, 0);
    } while (result == -1 && errno == EINTR);
    if (result == -1) {
        result = errno;
        ALOGE("Error writing AHardwareBuffer to socket: error %#x (%s)",
                result, strerror(errno));
        return result;
                result, strerror(result));
        return -result;
    }

    return NO_ERROR;
}

@@ -206,11 +211,15 @@ int AHardwareBuffer_recvHandleFromUnixSocket(int socketFd, AHardwareBuffer** out
            .msg_iovlen = 1,
    };

    int result = recvmsg(socketFd, &msg, 0);
    if (result <= 0) {
    int result;
    do {
        result = recvmsg(socketFd, &msg, 0);
    } while (result == -1 && errno == EINTR);
    if (result == -1) {
        result = errno;
        ALOGE("Error reading AHardwareBuffer from socket: error %#x (%s)",
                result, strerror(errno));
        return result;
                result, strerror(result));
        return -result;
    }

    if (msg.msg_iovlen != 1) {