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

Commit 33e17052 authored by Steven Moreland's avatar Steven Moreland Committed by Automerger Merge Worker
Browse files

Merge changes I292b8e32,I689d0838 am: 1488a158 am: cab292d6

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

Change-Id: Ic61191f9de3a4f3c4615a54df283ff242c02193e
parents d4dfe6ff cab292d6
Loading
Loading
Loading
Loading
+15 −18
Original line number Original line Diff line number Diff line
@@ -130,24 +130,21 @@ bool RpcConnection::addVsockClient(unsigned int cid, unsigned int port) {


#endif // __BIONIC__
#endif // __BIONIC__


class SocketAddressImpl : public RpcConnection::SocketAddress {
class InetSocketAddress : public RpcConnection::SocketAddress {
public:
public:
    SocketAddressImpl(const sockaddr* addr, size_t size, const String8& desc)
    InetSocketAddress(const sockaddr* sockAddr, size_t size, const char* addr, unsigned int port)
          : mAddr(addr), mSize(size), mDesc(desc) {}
          : mSockAddr(sockAddr), mSize(size), mAddr(addr), mPort(port) {}
    [[nodiscard]] std::string toString() const override {
    [[nodiscard]] std::string toString() const override {
        return std::string(mDesc.c_str(), mDesc.size());
        return String8::format("%s:%u", mAddr, mPort).c_str();
    }
    }
    [[nodiscard]] const sockaddr* addr() const override { return mAddr; }
    [[nodiscard]] const sockaddr* addr() const override { return mSockAddr; }
    [[nodiscard]] size_t addrSize() const override { return mSize; }
    [[nodiscard]] size_t addrSize() const override { return mSize; }
    void set(const sockaddr* addr, size_t size) {
        mAddr = addr;
        mSize = size;
    }


private:
private:
    const sockaddr* mAddr = nullptr;
    const sockaddr* mSockAddr;
    size_t mSize = 0;
    size_t mSize;
    String8 mDesc;
    const char* mAddr;
    unsigned int mPort;
};
};


AddrInfo GetAddrInfo(const char* addr, unsigned int port) {
AddrInfo GetAddrInfo(const char* addr, unsigned int port) {
@@ -170,14 +167,15 @@ AddrInfo GetAddrInfo(const char* addr, unsigned int port) {
}
}


bool RpcConnection::setupInetServer(unsigned int port) {
bool RpcConnection::setupInetServer(unsigned int port) {
    auto aiStart = GetAddrInfo("127.0.0.1", port);
    const char* kAddr = "127.0.0.1";

    auto aiStart = GetAddrInfo(kAddr, port);
    if (aiStart == nullptr) return false;
    if (aiStart == nullptr) return false;
    SocketAddressImpl socketAddress(nullptr, 0, String8::format("127.0.0.1:%u", port));
    for (auto ai = aiStart.get(); ai != nullptr; ai = ai->ai_next) {
    for (auto ai = aiStart.get(); ai != nullptr; ai = ai->ai_next) {
        socketAddress.set(ai->ai_addr, ai->ai_addrlen);
        InetSocketAddress socketAddress(ai->ai_addr, ai->ai_addrlen, kAddr, port);
        if (setupSocketServer(socketAddress)) return true;
        if (setupSocketServer(socketAddress)) return true;
    }
    }
    ALOGE("None of the socket address resolved for 127.0.0.1:%u can be set up as inet server.",
    ALOGE("None of the socket address resolved for %s:%u can be set up as inet server.", kAddr,
          port);
          port);
    return false;
    return false;
}
}
@@ -185,9 +183,8 @@ bool RpcConnection::setupInetServer(unsigned int port) {
bool RpcConnection::addInetClient(const char* addr, unsigned int port) {
bool RpcConnection::addInetClient(const char* addr, unsigned int port) {
    auto aiStart = GetAddrInfo(addr, port);
    auto aiStart = GetAddrInfo(addr, port);
    if (aiStart == nullptr) return false;
    if (aiStart == nullptr) return false;
    SocketAddressImpl socketAddress(nullptr, 0, String8::format("%s:%u", addr, port));
    for (auto ai = aiStart.get(); ai != nullptr; ai = ai->ai_next) {
    for (auto ai = aiStart.get(); ai != nullptr; ai = ai->ai_next) {
        socketAddress.set(ai->ai_addr, ai->ai_addrlen);
        InetSocketAddress socketAddress(ai->ai_addr, ai->ai_addrlen, addr, port);
        if (addSocketClient(socketAddress)) return true;
        if (addSocketClient(socketAddress)) return true;
    }
    }
    ALOGE("None of the socket address resolved for %s:%u can be added as inet client.", addr, port);
    ALOGE("None of the socket address resolved for %s:%u can be added as inet client.", addr, port);