Check EOF exception 17/253517/1
authorHwankyu Jhun <h.jhun@samsung.com>
Sun, 14 Feb 2021 22:56:18 +0000 (07:56 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Sun, 14 Feb 2021 22:56:18 +0000 (07:56 +0900)
When a socket peer has performed an orderly shutdown, recv() returns 0.

Change-Id: Ie93b44f2e4682403def921e68de371aba25075a6
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/lib/common/src/launchpad_common.c

index 6e370ef..d4e0622 100644 (file)
@@ -359,9 +359,10 @@ app_pkt_t *_recv_pkt_raw(int fd)
 retry_recv:
        /* receive header(cmd, datalen) */
        len = recv(fd, buf, AUL_PKT_HEADER_SIZE, 0);
-       if (len < 0)
+       if (len < 0) {
                if (errno == EINTR)
                        goto retry_recv;
+       }
 
        if (len < AUL_PKT_HEADER_SIZE) {
                _E("recv error");
@@ -389,8 +390,16 @@ retry_recv:
        len = 0;
        while (len != pkt->len) {
                ret = recv(fd, pkt->data + len, pkt->len - len, 0);
+               if (ret == 0) {
+                       _E("EOF. fd(%d), len(%d), pkt->len(%d)",
+                                       fd, len, pkt->len);
+                       free(pkt);
+                       return NULL;
+               }
+
                if (ret < 0) {
-                       _E("recv error %d %d", len, pkt->len);
+                       _E("recv() is failed. fd(%d), len(%d), pkt->len(%d)",
+                                       fd, len, pkt->len);
                        free(pkt);
                        return NULL;
                }