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)); --
