[prev in list] [next in list] [prev in thread] [next in thread] 

List:       enlightenment-svn
Subject:    E SVN: discomfitor trunk/ecore/src/lib/ecore_con
From:       "Enlightenment SVN" <no-reply () enlightenment ! org>
Date:       2010-09-29 23:53:01
Message-ID: 20100929235301.18A5E1180C6 () e2 ! enlightenment ! org
[Download RAW message or body]

Log:
  set fd handler flags properly from gnutls, update dbg info accordingly
  reminder: do this for openssl later
  
Author:       discomfitor
Date:         2010-09-29 16:53:00 -0700 (Wed, 29 Sep 2010)
New Revision: 52910

Modified:
  trunk/ecore/src/lib/ecore_con/ecore_con.c trunk/ecore/src/lib/ecore_con/ecore_con_ssl.c 

Modified: trunk/ecore/src/lib/ecore_con/ecore_con.c
===================================================================
--- trunk/ecore/src/lib/ecore_con/ecore_con.c	2010-09-29 23:50:33 UTC (rev 52909)
+++ trunk/ecore/src/lib/ecore_con/ecore_con.c	2010-09-29 23:53:00 UTC (rev 52910)
@@ -1809,6 +1809,7 @@
 _ecore_con_cl_handler(void *data, Ecore_Fd_Handler *fd_handler)
 {
    Ecore_Con_Server *svr;
+   Eina_Bool want_read, want_write;
 
    svr = data;
    if (svr->dead)
@@ -1817,21 +1818,17 @@
    if (svr->delete_me)
       return ECORE_CALLBACK_RENEW;
 
-   if (svr->handshaking && ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ | ECORE_FD_WRITE))
+   want_read = ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ);
+   want_write = ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_WRITE);
+
+   if (svr->handshaking && (want_read || want_write))
      {
-        DBG("Continuing ssl handshake");
-        if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ))
-          DBG("Preparing to read handshake data...");
-        else
-          DBG("Preparing to write handshake data...");
+        DBG("Continuing ssl handshake: preparing to %s...", want_read ? "read" : "write");
 #ifdef PRINT_LOTS_OF_DEBUG
-        if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ))
-          {
              char buf[32768];
              ssize_t len;
              len = recv(svr->fd, buf, sizeof(buf), MSG_DONTWAIT | MSG_PEEK);
              DBG("%zu bytes in buffer", len);
-          }
 #endif
         if (!svr->ssl_state)
           {
@@ -1865,9 +1862,9 @@
           }
      }
 
-   else if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ))
+   else if (want_read)
      _ecore_con_cl_read(svr);
-   else if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_WRITE))
+   else if (want_write)
      {
         if (svr->connecting && (!svr_try_connect(svr)))
            return ECORE_CALLBACK_RENEW;

Modified: trunk/ecore/src/lib/ecore_con/ecore_con_ssl.c
===================================================================
--- trunk/ecore/src/lib/ecore_con/ecore_con_ssl.c	2010-09-29 23:50:33 UTC (rev 52909)
+++ trunk/ecore/src/lib/ecore_con/ecore_con_ssl.c	2010-09-29 23:53:00 UTC (rev 52910)
@@ -501,12 +501,15 @@
           {
              svr->handshaking = EINA_FALSE;
              svr->ssl_state = ECORE_CON_SSL_STATE_DONE;
+             if (gnutls_record_get_direction(svr->session))
+               ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_WRITE);
+             else
+               ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_READ);
+             return ECORE_CON_SSL_ERROR_NONE;
           }
       default:
         break;
      }
-   if (svr->ssl_state)
-     return ECORE_CON_SSL_ERROR_NONE;
 
    if (!svr->verify)
      /* not verifying certificates, so we're done! */
@@ -789,6 +792,11 @@
           {
              cl->handshaking = EINA_FALSE;
              cl->ssl_state = ECORE_CON_SSL_STATE_DONE;
+             if (gnutls_record_get_direction(cl->session))
+               ecore_main_fd_handler_active_set(cl->fd_handler, ECORE_FD_WRITE);
+             else
+               ecore_main_fd_handler_active_set(cl->fd_handler, ECORE_FD_READ);
+             return ECORE_CON_SSL_ERROR_NONE;
           }
       default:
         break;


------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
enlightenment-svn mailing list
enlightenment-svn@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-svn
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic