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

-- 


Reply via email to