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

Commit 5c78b180 authored by Steven Moreland's avatar Steven Moreland Committed by Automerger Merge Worker
Browse files

Merge changes I4894c2dd,Id2977f05 am: 22a54f6a am: 1cfbd1bc am: 8b56fe84...

Merge changes I4894c2dd,Id2977f05 am: 22a54f6a am: 1cfbd1bc am: 8b56fe84 am: ddf8d799 am: bc910fa3

Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1788928

Change-Id: I8680a7371125355ba758564d0ee3762c67c35100
parents c6e856f1 bc910fa3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ status_t FdTrigger::triggerablePoll(base::borrowed_fd fd, int16_t event) {
            continue;
        }
        if (pfd[1].revents & POLLHUP) {
            return -ECANCELED;
            return DEAD_OBJECT;
        }
        return pfd[0].revents & event ? OK : DEAD_OBJECT;
    }
+5 −3
Original line number Diff line number Diff line
@@ -323,6 +323,7 @@ status_t RpcState::rpcRec(const sp<RpcSession::RpcConnection>& connection,
        status != OK) {
        LOG_RPC_DETAIL("Failed to read %s (%zu bytes) on RpcTransport %p, error: %s", what, size,
                       connection->rpcTransport.get(), statusToString(status).c_str());
        (void)session->shutdownAndWait(false);
        return status;
    }

@@ -531,8 +532,8 @@ status_t RpcState::waitForReply(const sp<RpcSession::RpcConnection>& connection,
                                const sp<RpcSession>& session, Parcel* reply) {
    RpcWireHeader command;
    while (true) {
        if (status_t status =
                    rpcRec(connection, session, "command header", &command, sizeof(command));
        if (status_t status = rpcRec(connection, session, "command header (for reply)", &command,
                                     sizeof(command));
            status != OK)
            return status;

@@ -601,7 +602,8 @@ status_t RpcState::getAndExecuteCommand(const sp<RpcSession::RpcConnection>& con
    LOG_RPC_DETAIL("getAndExecuteCommand on RpcTransport %p", connection->rpcTransport.get());

    RpcWireHeader command;
    if (status_t status = rpcRec(connection, session, "command header", &command, sizeof(command));
    if (status_t status = rpcRec(connection, session, "command header (for server)", &command,
                                 sizeof(command));
        status != OK)
        return status;

+3 −3
Original line number Diff line number Diff line
@@ -241,7 +241,7 @@ private:
    status_t handlePoll(int event, android::base::borrowed_fd fd, FdTrigger* fdTrigger,
                        const char* fnString) {
        status_t ret = fdTrigger->triggerablePoll(fd, event);
        if (ret != OK && ret != DEAD_OBJECT && ret != -ECANCELED) {
        if (ret != OK && ret != DEAD_OBJECT) {
            ALOGE("triggerablePoll error while poll()-ing after %s(): %s", fnString,
                  statusToString(ret).c_str());
        }
@@ -348,7 +348,7 @@ status_t RpcTransportTls::interruptableWriteFully(FdTrigger* fdTrigger, const vo

    // Before doing any I/O, check trigger once. This ensures the trigger is checked at least
    // once. The trigger is also checked via triggerablePoll() after every SSL_write().
    if (fdTrigger->isTriggered()) return -ECANCELED;
    if (fdTrigger->isTriggered()) return DEAD_OBJECT;

    while (buffer < end) {
        size_t todo = std::min<size_t>(end - buffer, std::numeric_limits<int>::max());
@@ -379,7 +379,7 @@ status_t RpcTransportTls::interruptableReadFully(FdTrigger* fdTrigger, void* dat

    // Before doing any I/O, check trigger once. This ensures the trigger is checked at least
    // once. The trigger is also checked via triggerablePoll() after every SSL_write().
    if (fdTrigger->isTriggered()) return -ECANCELED;
    if (fdTrigger->isTriggered()) return DEAD_OBJECT;

    while (buffer < end) {
        size_t todo = std::min<size_t>(end - buffer, std::numeric_limits<int>::max());
+3 −3
Original line number Diff line number Diff line
@@ -1794,9 +1794,9 @@ TEST_P(RpcTransportTest, Trigger) {
        }

        status = serverTransport->interruptableWriteFully(fdTrigger, msg2.data(), msg2.size());
        if (status != -ECANCELED)
        if (status != DEAD_OBJECT)
            return AssertionFailure() << "When FdTrigger is shut down, interruptableWriteFully "
                                         "should return -ECANCELLED, but it is "
                                         "should return DEAD_OBJECT, but it is "
                                      << statusToString(status);
        return AssertionSuccess();
    };
@@ -1830,7 +1830,7 @@ TEST_P(RpcTransportTest, Trigger) {
    }
    writeCv.notify_all();
    // After this line, server thread unblocks and attempts to write the second message, but
    // shutdown is triggered, so write should failed with -ECANCELLED. See |serverPostConnect|.
    // shutdown is triggered, so write should failed with DEAD_OBJECT. See |serverPostConnect|.
    // On the client side, second read fails with DEAD_OBJECT
    ASSERT_FALSE(client.readMessage(msg2));
}