summaryrefslogtreecommitdiff
path: root/src/lib/elementary/efl_ui_scroll_manager.c
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2017-12-20 21:10:53 +0900
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2017-12-20 21:10:53 +0900
commitb22b2ded1d72e63f7e3c3be425e973e6d8d3fb6c (patch)
tree6b784aad9e752373c43db323560446d17ecb02ff /src/lib/elementary/efl_ui_scroll_manager.c
parent9c88bc4933560c74fd97a1cccc29fe6542f71755 (diff)
ecore_con: bug workaround SO_REUSEADDR and EADDRINUSE from bind (fix)
what i'm seeing is this with local unix sockets: 1. server process not cleanly shut down (kill -9 for example). 2. run server process again and bind fails due to EADDRINUSE 3. we ARE doing setsockopt() with SO_REUSEADDR set to 1 ... this just makes no sense because setsockopt() SHOULD allow use to re-use... the previous efreetd process for example is gone. no such process, yet socket is not re-usable. this should just not happen due to SO_REUSEADDR, but it does. this has nasty consequences like efreetd maybe never running because of stale sockets. this should never have happened, but it does. odd. so a hacky workaround: 1. try bind. 2. if bind fails with EADDRINUSE and its a socket path AND pd->unlink_before_bind is NOT set... then try a connect to the socket. 3. if connect succeeds then fail as normal (close socket and error on bind'ing) if connect fails then we have a stale socket, so unlink it forcibly. create the socket again and try bind again. hacky but... fixes the core issue. @fix
Diffstat (limited to '')
0 files changed, 0 insertions, 0 deletions