From: Mike McCormack <mj.mccormack@samsung.com>
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 16 Dec 2010 04:38:37 +0000 (04:38 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 16 Dec 2010 04:38:37 +0000 (04:38 +0000)
Subject: [E-devel] [PATCH 1/4] ecore_con: Always close fd after remove
fdh from main loop

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/ecore@55570 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/ecore_con/ecore_con.c

index 9e8b50c..49f1fae 100644 (file)
@@ -373,12 +373,12 @@ error:
      free(svr->path);
 
 #ifndef _WIN32
-   if (svr->fd >= 0)
-     close(svr->fd);
-
    if (svr->fd_handler)
      ecore_main_fd_handler_del(svr->fd_handler);
 
+   if (svr->fd >= 0)
+     close(svr->fd);
+
    if (svr->write_buf)
      free(svr->write_buf);
 
@@ -494,12 +494,12 @@ error:
    if (svr->path)
      free(svr->path);
 
-   if (svr->fd >= 0)
-     close(svr->fd);
-
    if (svr->fd_handler)
      ecore_main_fd_handler_del(svr->fd_handler);
 
+   if (svr->fd >= 0)
+     close(svr->fd);
+
    ecore_con_ssl_server_shutdown(svr);
    free(svr);
    return NULL;
@@ -1184,9 +1184,6 @@ _ecore_con_server_free(Ecore_Con_Server *svr)
      unlink(svr->path);
 
    ecore_con_ssl_server_shutdown(svr);
-   if (svr->fd >= 0)
-     close(svr->fd);
-
    if (svr->name)
      free(svr->name);
 
@@ -1199,6 +1196,9 @@ _ecore_con_server_free(Ecore_Con_Server *svr)
    if (svr->fd_handler)
      ecore_main_fd_handler_del(svr->fd_handler);
 
+   if (svr->fd >= 0)
+     close(svr->fd);
+
    servers = eina_list_remove(servers, svr);
    svr->data = NULL;
    free(svr);
@@ -1253,12 +1253,12 @@ _ecore_con_client_free(Ecore_Con_Client *cl)
    if (cl->host_server->type & ECORE_CON_SSL)
      ecore_con_ssl_client_shutdown(cl);
 
-   if (cl->fd >= 0)
-     close(cl->fd);
-
    if (cl->fd_handler)
      ecore_main_fd_handler_del(cl->fd_handler);
 
+   if (cl->fd >= 0)
+     close(cl->fd);
+
    if (cl->client_addr)
      free(cl->client_addr);
    cl->client_addr = NULL;
@@ -1771,9 +1771,12 @@ _ecore_con_svr_tcp_handler(void                        *data,
    return ECORE_CALLBACK_RENEW;
 
 error:
-   close(new_fd);
    if (cl && cl->fd_handler)
-     ecore_main_fd_handler_del(cl->fd_handler);
+     {
+        ecore_main_fd_handler_del(cl->fd_handler);
+        close(cl->fd);
+        free(cl);
+     }
    return ECORE_CALLBACK_RENEW;
 }