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

Commit 23c74229 authored by Pawan Wagh's avatar Pawan Wagh
Browse files

Delete command objects in DnsProxyListener destructor

Command objects created in DnsProxyListener are never deleted.
Adding members to hold pointer to created command objects and deleting
them in destructor.

Test: atest resolv_integration_test
Bug: 277511730
Change-Id: I329af8ef7b23ba70f24a85cf575d19ad2f6449a6
parent c7f1d4ef
Loading
Loading
Loading
Loading
+14 −5
Original line number Diff line number Diff line
@@ -659,11 +659,20 @@ std::string makeThreadName(unsigned netId, uint32_t uid) {
}  // namespace

DnsProxyListener::DnsProxyListener() : FrameworkListener(SOCKET_NAME) {
    registerCmd(new GetAddrInfoCmd());
    registerCmd(new GetHostByAddrCmd());
    registerCmd(new GetHostByNameCmd());
    registerCmd(new ResNSendCommand());
    registerCmd(new GetDnsNetIdCommand());
    mGetAddrInfoCmd = std::make_unique<GetAddrInfoCmd>();
    registerCmd(mGetAddrInfoCmd.get());

    mGetHostByAddrCmd = std::make_unique<GetHostByAddrCmd>();
    registerCmd(mGetHostByAddrCmd.get());

    mGetHostByNameCmd = std::make_unique<GetHostByNameCmd>();
    registerCmd(mGetHostByNameCmd.get());

    mResNSendCommand = std::make_unique<ResNSendCommand>();
    registerCmd(mResNSendCommand.get());

    mGetDnsNetIdCommand = std::make_unique<GetDnsNetIdCommand>();
    registerCmd(mGetDnsNetIdCommand.get());
}

void DnsProxyListener::Handler::spawn() {
+6 −0
Original line number Diff line number Diff line
@@ -164,6 +164,12 @@ class DnsProxyListener : public FrameworkListener {
        virtual ~GetDnsNetIdCommand() {}
        int runCommand(SocketClient* c, int argc, char** argv) override;
    };

    std::unique_ptr<GetAddrInfoCmd> mGetAddrInfoCmd;
    std::unique_ptr<GetHostByAddrCmd> mGetHostByAddrCmd;
    std::unique_ptr<GetHostByNameCmd> mGetHostByNameCmd;
    std::unique_ptr<ResNSendCommand> mResNSendCommand;
    std::unique_ptr<GetDnsNetIdCommand> mGetDnsNetIdCommand;
};

}  // namespace net