From 62f01907bf326df0d62e39a663d559af97316b11 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 3 Jul 2018 12:42:00 -0400 Subject: [PATCH] ecore-con/legacy: kill server with DEL event if a dialer error occurs Summary: in the course of the efl-net rewrite, the previous relied-upon behavior sequence of error -> disconnect -> del was broken, and error events no longer triggered disconnects or server deletion. the failure was caused by a check for the 'connecting' flag, preventing DEL events from being triggered further, the ordering of the events was flipped from ERROR -> DEL to DEL -> ERROR; this is also fixed now this caused any failed connection to leak the entire server connection since existing handlers for the del event were never triggered and the server was never destroyed @fix fix T6330 Reviewers: devilhorns Reviewed By: devilhorns Subscribers: cedric, #committers Tags: #efl Maniphest Tasks: T6330 Differential Revision: https://phab.enlightenment.org/D6481 --- src/lib/ecore_con/ecore_con_legacy.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lib/ecore_con/ecore_con_legacy.c b/src/lib/ecore_con/ecore_con_legacy.c index 27ae3af..59d30d6 100644 --- a/src/lib/ecore_con/ecore_con_legacy.c +++ b/src/lib/ecore_con/ecore_con_legacy.c @@ -983,6 +983,7 @@ _ecore_con_server_new(Eina_Bool is_dialer, Ecore_Con_Type type, const char *name static void _ecore_con_server_dialer_close(Ecore_Con_Server *svr) { + svr->connecting = EINA_FALSE; if (!svr->dialer) return; if (!efl_io_closer_closed_get(svr->dialer)) @@ -1345,8 +1346,8 @@ _ecore_con_server_dialer_error(void *data, const Efl_Event *event) WRN("error reaching server %s: %s", efl_net_dialer_address_dial_get(svr->dialer), eina_error_msg_get(*perr)); - _ecore_con_server_dialer_close(svr); _ecore_con_post_event_server_error(svr, eina_error_msg_get(*perr)); + _ecore_con_server_dialer_close(svr); } static void -- 2.7.4