Set FD_CLOEXEC to release FD on exec 06/31606/1
authorLi Zhang <li2012.zhang@samsung.com>
Fri, 9 May 2014 03:28:31 +0000 (11:28 +0800)
committerJihoon Kim <jihoon48.kim@samsung.com>
Mon, 8 Dec 2014 01:07:32 +0000 (10:07 +0900)
Change-Id: I97de0604df81736db5caa3eb53e6c5625d6c4193

ism/modules/frontend/scim_socket_frontend.cpp
ism/src/scim_socket.cpp

index 4f1640f..b7148aa 100644 (file)
@@ -287,8 +287,6 @@ void SocketFrontEnd::run_helper (const Socket &client)
             if (pid < 0) return;
 
             if (pid == 0) {
-                if (m_socket_server.is_running ())
-                    m_socket_server.shutdown ();
 
                 const char *argv [] = { SCIM_HELPER_LAUNCHER_PROGRAM,
                                    "--daemon",
index 8ec97b3..0bdfff3 100644 (file)
@@ -632,7 +632,10 @@ public:
 
         if (ret < 0 && addrlen > 0)
             m_err = errno;
-
+        else {
+            int flag = fcntl (ret, F_GETFD, 0);
+            fcntl (ret, F_SETFD, flag|FD_CLOEXEC);
+        }
         SCIM_DEBUG_SOCKET(1) << "Socket: Accept connection, ret: " << ret << "\n";
 
         return ret;
@@ -657,6 +660,8 @@ public:
             m_err = 0;
             m_family = family;
             m_id = ret;
+            int flag = fcntl (ret, F_GETFD, 0);
+            fcntl (ret, F_SETFD, flag|FD_CLOEXEC);
         } else {
             m_err = errno;
         }