barbieri pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=e8a59ab6c24af84161c2fce7a988503a741366e8
commit e8a59ab6c24af84161c2fce7a988503a741366e8 Author: Gustavo Sverzut Barbieri <[email protected]> Date: Sat Apr 8 19:19:42 2017 -0300 efl_net_socket_ssl (dialer): emit "resolved" for dialers we should also monitor "resolved" from inner TCP socket and emit that ourselves, letting people know that we have an IP address. this is important for ecore_con_legacy.c, since the svr->ip is only decoded and stored once when this signal is emitted. --- src/lib/ecore_con/efl_net_socket_ssl.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/lib/ecore_con/efl_net_socket_ssl.c b/src/lib/ecore_con/efl_net_socket_ssl.c index 77f9620..9b4a512 100644 --- a/src/lib/ecore_con/efl_net_socket_ssl.c +++ b/src/lib/ecore_con/efl_net_socket_ssl.c @@ -218,6 +218,17 @@ EFL_CALLBACKS_ARRAY_DEFINE(efl_net_socket_ssl_sock_cbs, {EFL_EVENT_DEL, efl_net_socket_ssl_sock_del}); static void +efl_net_socket_ssl_sock_resolved(void *data, const Efl_Event *event EINA_UNUSED) +{ + Eo *o = data; + Efl_Net_Socket_Ssl_Data *pd = efl_data_scope_get(o, MY_CLASS); + + if (pd->torndown) return; + + efl_event_callback_call(o, EFL_NET_DIALER_EVENT_RESOLVED, NULL); +} + +static void efl_net_socket_ssl_sock_connected(void *data, const Efl_Event *event EINA_UNUSED) { Eo *o = data; @@ -239,6 +250,10 @@ efl_net_socket_ssl_sock_connected(void *data, const Efl_Event *event EINA_UNUSED efl_unref(o); } +EFL_CALLBACKS_ARRAY_DEFINE(efl_net_socket_ssl_sock_dialer_cbs, + {EFL_NET_DIALER_EVENT_RESOLVED, efl_net_socket_ssl_sock_resolved}, + {EFL_NET_DIALER_EVENT_CONNECTED, efl_net_socket_ssl_sock_connected}); + static void _efl_net_socket_ssl_context_del(void *data, const Efl_Event *event EINA_UNUSED) { @@ -305,7 +320,7 @@ _efl_net_socket_ssl_adopt(Eo *o, Efl_Net_Socket_Ssl_Data *pd, Efl_Net_Socket *so efl_event_callback_array_add(sock, efl_net_socket_ssl_sock_cbs(), o); if (efl_isa(sock, EFL_NET_DIALER_INTERFACE)) - efl_event_callback_add(sock, EFL_NET_DIALER_EVENT_CONNECTED, efl_net_socket_ssl_sock_connected, o); + efl_event_callback_array_add(sock, efl_net_socket_ssl_sock_dialer_cbs(), o); efl_net_socket_ssl_sock_can_read_changed(o, NULL); efl_net_socket_ssl_sock_can_write_changed(o, NULL); @@ -448,9 +463,7 @@ _efl_net_socket_ssl_efl_object_destructor(Eo *o, Efl_Net_Socket_Ssl_Data *pd) { efl_event_callback_array_del(pd->sock, efl_net_socket_ssl_sock_cbs(), o); if (efl_isa(pd->sock, EFL_NET_DIALER_INTERFACE)) - { - efl_event_callback_del(pd->sock, EFL_NET_DIALER_EVENT_CONNECTED, efl_net_socket_ssl_sock_connected, o); - } + efl_event_callback_array_del(pd->sock, efl_net_socket_ssl_sock_dialer_cbs(), o); efl_unref(pd->sock); pd->sock = NULL; } --
