Add more error codes 39/60239/2
authorKyungwook Tak <k.tak@samsung.com>
Wed, 24 Feb 2016 08:20:42 +0000 (17:20 +0900)
committerKyungwook Tak <k.tak@samsung.com>
Thu, 25 Feb 2016 01:41:35 +0000 (10:41 +0900)
Change-Id: Ib95f5dd37ed0f3a816909266bc2b83038c788a8f
Signed-off-by: Kyungwook Tak <k.tak@samsung.com>
src/common/include/tpkp_error.h
src/common/ui/connection.cpp
src/common/ui/popup-bin/popup.cpp
src/common/ui/popup_common.cpp

index cb8776b..0c74670 100644 (file)
@@ -36,6 +36,10 @@ typedef enum {
        TPKP_E_INVALID_PEER_CERT_CHAIN  = -6,
        TPKP_E_PUBKEY_MISMATCH          = -7,
        TPKP_E_CERT_VERIFICATION_FAILED = -8,
+       TPKP_E_INVALID_PARAMETER        = -9,
+       TPKP_E_IO                       = -10,
+       TPKP_E_TIMEOUT                  = -11,
+       TPKP_E_PERMISSION_DENIED        = -12,
        TPKP_E_STD_EXCEPTION            = -99,
        TPKP_E_INTERNAL                 = -100
 } tpkp_e;
index 9f52c26..1660411 100644 (file)
@@ -43,14 +43,14 @@ SockRaii::~SockRaii()
 void SockRaii::connect(const std::string &interface)
 {
        TPKP_CHECK_THROW_EXCEPTION(!interface.empty(),
-               TPKP_E_INTERNAL, "No valid interface address given.");
+               TPKP_E_INVALID_PARAMETER, "No valid interface address given.");
 
        int sock = socket(AF_UNIX, SOCK_STREAM, 0);
 
        SLOGD("make client sock: %d", sock);
 
        TPKP_CHECK_THROW_EXCEPTION(sock >= 0,
-               TPKP_E_INTERNAL, "Error to create sock");
+               TPKP_E_IO, "Error to create sock");
 
        connectWrapper(sock, interface);
 
@@ -62,27 +62,25 @@ void SockRaii::connectWrapper(int sock, const std::string &interface)
 {
        sockaddr_un clientaddr;
 
-       /*
-        * TODO(k.tak): add more error codes (at least internal) to represent
-        *              various error cases
-        */
        TPKP_CHECK_THROW_EXCEPTION(
                interface.length() < sizeof(clientaddr.sun_path),
-               TPKP_E_INTERNAL, "Error: interface name[" << interface << "] is too long");
+               TPKP_E_INVALID_PARAMETER,
+               "Error: interface name[" << interface << "] is too long");
 
        memset(&clientaddr, 0, sizeof(clientaddr));
        clientaddr.sun_family = AF_UNIX;
        strcpy(clientaddr.sun_path, interface.c_str());
 
-       int ret = TEMP_FAILURE_RETRY(::connect(sock, (struct sockaddr *)&clientaddr, SUN_LEN(&clientaddr)));
+       int ret = TEMP_FAILURE_RETRY(
+                       ::connect(sock, (struct sockaddr *)&clientaddr, SUN_LEN(&clientaddr)));
 
        const int err = errno;
        if (ret == -1) {
                if (err == EACCES)
-                       TPKP_THROW_EXCEPTION(TPKP_E_INTERNAL,
+                       TPKP_THROW_EXCEPTION(TPKP_E_PERMISSION_DENIED,
                                "Access denied to interface: " << interface);
 
-               TPKP_THROW_EXCEPTION(TPKP_E_INTERNAL,
+               TPKP_THROW_EXCEPTION(TPKP_E_IO,
                        "Error on connect socket. errno: " << err);
        }
 }
@@ -117,9 +115,9 @@ void SockRaii::waitForStreamIn(int timeout)
        }
 
        if (ret == 0)
-               TPKP_THROW_EXCEPTION(TPKP_E_INTERNAL, "Poll timeout[" << timeout << "]!!");
+               TPKP_THROW_EXCEPTION(TPKP_E_TIMEOUT, "Poll timeout[" << timeout << "]!!");
        else if (ret == -1)
-               TPKP_THROW_EXCEPTION(TPKP_E_INTERNAL, "Error in poll! errno: " << errno);
+               TPKP_THROW_EXCEPTION(TPKP_E_IO, "Error in poll! errno: " << errno);
 }
 
 int SockRaii::get(void) const
@@ -147,7 +145,7 @@ void ServiceConnection::send(const BinaryStream &stream)
 BinaryStream ServiceConnection::receive(void)
 {
        TPKP_CHECK_THROW_EXCEPTION(m_socket.isConnected(),
-               TPKP_E_INTERNAL, "Not connected!");
+               TPKP_E_IO, "Not connected!");
 
        m_socket.waitForStreamIn(m_timeout);
 
index d898946..b417aad 100644 (file)
@@ -97,7 +97,7 @@ void answerAllowCb(void *data, Evas_Object * /* obj */, void * /* event_info */)
        SLOGD("allow answer");
 
        TPKP_CHECK_THROW_EXCEPTION(data != nullptr,
-               TPKP_E_INTERNAL, "data shouldn't be null on evas callbacks");
+               TPKP_E_INVALID_PARAMETER, "data shouldn't be null on evas callbacks");
 
        TpkpPopup *pdp = static_cast<TpkpPopup *>(data);
        pdp->result = Response::ALLOW;
@@ -110,7 +110,7 @@ void answerDenyCb(void *data, Evas_Object * /* obj */, void * /* event_info */)
        SLOGD("deny answer");
 
        TPKP_CHECK_THROW_EXCEPTION(data != nullptr,
-               TPKP_E_INTERNAL, "data shouldn't be null on evas callbacks");
+               TPKP_E_INVALID_PARAMETER, "data shouldn't be null on evas callbacks");
 
        TpkpPopup *pdp = static_cast<TpkpPopup *>(data);
        pdp->result = Response::DENY;
@@ -121,7 +121,7 @@ void answerDenyCb(void *data, Evas_Object * /* obj */, void * /* event_info */)
 Eina_Bool timeoutCb(void *data)
 {
        TPKP_CHECK_THROW_EXCEPTION(data != nullptr,
-               TPKP_E_INTERNAL, "data shouldn't be null on timeout callback");
+               TPKP_E_INVALID_PARAMETER, "data shouldn't be null on timeout callback");
        TpkpPopup *pdp = static_cast<TpkpPopup *>(data);
        pdp->result = Response::DENY;
 
@@ -138,7 +138,8 @@ std::unique_ptr<char> getPopupContentString(TpkpPopup *pdp)
        char *content = nullptr;
 
        if (asprintf(&content, contentFormat, pdp->hostname.c_str()) == -1)
-               TPKP_THROW_EXCEPTION(TPKP_E_INTERNAL, "Failed to alloc memory for popup text");
+               TPKP_THROW_EXCEPTION(TPKP_E_MEMORY,
+                       "Failed to alloc memory for popup text");
 
        return std::unique_ptr<char>(content);
 }
@@ -167,7 +168,7 @@ void showPopup(TpkpPopup *pdp)
        SLOGD("Start to make popup");
 
        TPKP_CHECK_THROW_EXCEPTION(pdp != nullptr,
-               TPKP_E_INTERNAL, "pdp shouldn't be null");
+               TPKP_E_INVALID_PARAMETER, "pdp shouldn't be null");
 
        /* create win */
        Evas_Object *win = elm_win_add(nullptr, "tpkp popup", ELM_WIN_NOTIFICATION);
@@ -182,7 +183,8 @@ void showPopup(TpkpPopup *pdp)
        Evas_Object *popup = elm_popup_add(win);
        evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
        elm_object_text_set(popup, contentString.get());
-       elm_object_part_text_set(popup, "title,text", dgettext(PROJECT_NAME, "SID_TITLE_PUBLIC_KEY_MISMATCHED"));
+       elm_object_part_text_set(popup, "title,text",
+                       dgettext(PROJECT_NAME, "SID_TITLE_PUBLIC_KEY_MISMATCHED"));
        evas_object_show(popup);
 
        /* create allow button */
@@ -201,9 +203,8 @@ void showPopup(TpkpPopup *pdp)
        evas_object_smart_callback_add(buttonDeny, "clicked", answerDenyCb, pdp);
        evas_object_show(buttonDeny);
 
-       if (pdp->timeout > 0) {
+       if (pdp->timeout > 0)
                ecore_timer_add(pdp->timeout / 1000, timeoutCb, pdp);
-       }
 
        pdp->win = win;
 
@@ -246,7 +247,7 @@ int getSockFromSystemd(void)
                        return fd;
                }
        }
-       TPKP_THROW_EXCEPTION(TPKP_E_INTERNAL, "Failed to get sock from systemd.");
+       TPKP_THROW_EXCEPTION(TPKP_E_IO, "Failed to get sock from systemd.");
 }
 
 } // namespace anonymous
@@ -273,10 +274,9 @@ int main(int argc, char **argv)
                while (true) {
                        /* non blocking poll */
                        int ret = poll(fds, 1, 0);
-                       TPKP_CHECK_THROW_EXCEPTION(ret >= 0,
-                               TPKP_E_INTERNAL, "poll() error. errno: " << errno);
-
-                       if (ret == 0) {
+                       if (ret < 0) {
+                               TPKP_THROW_EXCEPTION(TPKP_E_IO, "poll() error. errno: " << errno);
+                       } else if (ret == 0) {
                                SLOGD("tpkp-popup backend service timeout. Let's be deactivated");
                                return 0;
                        }
@@ -286,7 +286,7 @@ int main(int argc, char **argv)
                        memset(&clientaddr, 0, client_len);
 
                        int clientFd = accept(fds[0].fd, (struct sockaddr *)&clientaddr, (socklen_t *)&client_len);
-                       TPKP_CHECK_THROW_EXCEPTION(clientFd >= 0, TPKP_E_INTERNAL, "Error in func accept()");
+                       TPKP_CHECK_THROW_EXCEPTION(clientFd >= 0, TPKP_E_IO, "Error in func accept()");
                        SLOGD("client accepted with fd: %d", clientFd);
 
                        SockRaii clientSock(clientFd);
index 4c3dbd7..01bd8f8 100644 (file)
@@ -94,7 +94,7 @@ void sendStream(int fd, const BinaryStream &stream)
                        if (err == EINTR)
                                continue;
                        else
-                               TPKP_THROW_EXCEPTION(TPKP_E_INTERNAL,
+                               TPKP_THROW_EXCEPTION(TPKP_E_IO,
                                        "write failed with errno: " << err);
                }
                offset += ret;
@@ -116,7 +116,7 @@ BinaryStream receiveStream(int fd)
                        if (err == EINTR)
                                continue;
                        else
-                               TPKP_THROW_EXCEPTION(TPKP_E_INTERNAL,
+                               TPKP_THROW_EXCEPTION(TPKP_E_IO,
                                        "read failed with errno: " << err);
                }
        }