Send abort msg explictly to loopback address

To abort inet receiver thread, an abort
message must be sent explictly to loopback address.
For reciever to receive abort message it must be
open to receive messages on INADDR_ANY and not
just specific IP address.

CRs-Fixed: 2462833

Change-Id: I9ab3266d582bc774655fcabfc086dab33010f7d8
diff --git a/utils/LocIpc.cpp b/utils/LocIpc.cpp
index e857817..f4dd0b4 100644
--- a/utils/LocIpc.cpp
+++ b/utils/LocIpc.cpp
@@ -193,7 +193,8 @@
             mSockType(sockType),
             mSock(make_shared<Sock>((nullptr == name) ? -1 : (::socket(AF_INET, mSockType, 0)))),
             mName((nullptr == name) ? "" : name),
-            mAddr({.sin_family=AF_INET, .sin_port=htons(port), .sin_addr={htonl(INADDR_ANY)}}) {
+            mAddr({.sin_family = AF_INET, .sin_port = htons(port),
+                    .sin_addr = {htonl(INADDR_ANY)}}) {
         if (mSock != nullptr && mSock->isValid() && nullptr != name) {
             struct hostent* hp = gethostbyname(name);
             if (nullptr != hp) {
@@ -222,12 +223,14 @@
 };
 
 class LocIpcInetRecver : public LocIpcInetSender, public LocIpcRecver {
+     int32_t mPort;
 protected:
      virtual ssize_t recv() const = 0;
 public:
     inline LocIpcInetRecver(const shared_ptr<ILocIpcListener>& listener, const char* name,
                                int32_t port, int sockType) :
-            LocIpcInetSender(name, port, sockType), LocIpcRecver(listener, *this) {
+            LocIpcInetSender(name, port, sockType), LocIpcRecver(listener, *this),
+            mPort(port) {
         if (mSock->isValid() && ::bind(mSock->mSid, (struct sockaddr*)&mAddr, sizeof(mAddr)) < 0) {
             LOC_LOGe("bind socket error. sock fd: %d, reason: %s", mSock->mSid, strerror(errno));
             mSock->close();
@@ -237,7 +240,9 @@
     inline virtual const char* getName() const override { return mName.data(); };
     inline virtual void abort() const override {
         if (isSendable()) {
-            mSock->sendAbort(0, (struct sockaddr*)&mAddr, sizeof(mAddr));
+            sockaddr_in loopBackAddr = {.sin_family = AF_INET, .sin_port = htons(mPort),
+                    .sin_addr = {htonl(INADDR_LOOPBACK)}};
+            mSock->sendAbort(0, (struct sockaddr*)&loopBackAddr, sizeof(loopBackAddr));
         }
     }