raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=963c1b9adf4438ff26dcb4e132884058698b1330

commit 963c1b9adf4438ff26dcb4e132884058698b1330
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Sun Apr 12 18:30:36 2020 +0100

    ecore con - clean up file lock andunlock on failed bind
    
    didnt do this if bind failed... so do it now.
---
 src/lib/ecore_con/efl_net_server_unix.c | 31 +++++++++++++++++++------------
 1 file changed, 19 insertions(+), 12 deletions(-)

diff --git a/src/lib/ecore_con/efl_net_server_unix.c 
b/src/lib/ecore_con/efl_net_server_unix.c
index 37d2c7302d..68f97a7619 100644
--- a/src/lib/ecore_con/efl_net_server_unix.c
+++ b/src/lib/ecore_con/efl_net_server_unix.c
@@ -111,20 +111,19 @@ _efl_net_server_unix_efl_object_destructor(Eo *o, 
Efl_Net_Server_Unix_Data *pd E
    if (fd != INVALID_SOCKET)
      {
         const char *address = efl_net_server_address_get(o);
-        if ((address) && (strncmp(address, "abstract:", strlen("abstract:")) 
!= 0))
-          {
-             unlink(address);
+        if ((address) &&
+            (strncmp(address, "abstract:", strlen("abstract:")) != 0))
+          unlink(address);
+     }
 #ifdef BIND_HANG_WORKAROUND
-             if ((pd->have_lock_fd) && (pd->lock_fd >= 0))
-               {
-                  _efl_net_server_unix_bind_hang_lock_workaround
-                    (address, EINA_FALSE, pd->lock_fd);
-                  pd->lock_fd = -1;
-                  pd->have_lock_fd = EINA_FALSE;
-               }
-#endif
-          }
+   if ((pd->have_lock_fd) && (pd->lock_fd >= 0))
+     {
+        _efl_net_server_unix_bind_hang_lock_workaround
+          (address, EINA_FALSE, pd->lock_fd);
+        pd->lock_fd = -1;
+        pd->have_lock_fd = EINA_FALSE;
      }
+#endif
 
    efl_destructor(efl_super(o, MY_CLASS));
 }
@@ -264,6 +263,14 @@ _efl_net_server_unix_bind(Eo *o, Efl_Net_Server_Unix_Data 
*pd)
  error:
    if (err)
      {
+#ifdef BIND_HANG_WORKAROUND
+        if ((pd->have_lock_fd) && (pd->lock_fd >= 0))
+          {
+             pd->lock_fd = _efl_net_server_unix_bind_hang_lock_workaround
+               (addr.sun_path, EINA_FALSE, -1);
+             pd->have_lock_fd = EINA_TRUE;
+          }
+#endif
         efl_event_callback_call(o, EFL_NET_SERVER_EVENT_SERVER_ERROR, &err);
         if (fd != INVALID_SOCKET) closesocket(fd);
         efl_loop_fd_set(o, SOCKET_TO_LOOP_FD(INVALID_SOCKET));

-- 


Reply via email to