reorder some handshake events to hopefully reduce overhead slightly
authordiscomfitor <discomfitor@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 29 Sep 2010 05:08:47 +0000 (05:08 +0000)
committerdiscomfitor <discomfitor@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 29 Sep 2010 05:08:47 +0000 (05:08 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/ecore@52878 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/ecore_con/ecore_con.c

index 83e9d8d..48c176e 100644 (file)
@@ -1817,43 +1817,42 @@ _ecore_con_cl_handler(void *data, Ecore_Fd_Handler *fd_handler)
    if (svr->delete_me)
       return ECORE_CALLBACK_RENEW;
 
-   if (svr->handshaking)
+   if (svr->handshaking && ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ | ECORE_FD_WRITE))
      {
         DBG("Continuing ssl handshake");
-        if (ecore_con_ssl_server_init(svr))
+        if (!svr->ssl_state)
           {
-             ERR("ssl handshaking failed!");
-             Ecore_Con_Event_Server_Del *e;
+             /* we got our server! */
+             Ecore_Con_Event_Server_Add *e;
 
-             e = calloc(1, sizeof(Ecore_Con_Event_Server_Del));
+             svr->connecting = EINA_FALSE;
+             e = calloc(1, sizeof(Ecore_Con_Event_Server_Add));
              if (e)
                {
                   svr->event_count++;
+                  svr->start_time = ecore_time_get();
                   e->server = svr;
-                  ecore_event_add(ECORE_CON_EVENT_SERVER_DEL, e,
-                                  _ecore_con_event_server_del_free, NULL);
+                  ecore_event_add(ECORE_CON_EVENT_SERVER_ADD, e,
+                                  _ecore_con_event_server_add_free, NULL);
                }
           }
-        else if (!svr->ssl_state)
+        else if (ecore_con_ssl_server_init(svr))
           {
-             /* we got our server! */
-             Ecore_Con_Event_Server_Add *e;
+             ERR("ssl handshaking failed!");
+             Ecore_Con_Event_Server_Del *e;
 
-             svr->connecting = EINA_FALSE;
-             e = calloc(1, sizeof(Ecore_Con_Event_Server_Add));
+             e = calloc(1, sizeof(Ecore_Con_Event_Server_Del));
              if (e)
                {
                   svr->event_count++;
-                  svr->start_time = ecore_time_get();
                   e->server = svr;
-                  ecore_event_add(ECORE_CON_EVENT_SERVER_ADD, e,
-                                  _ecore_con_event_server_add_free, NULL);
+                  ecore_event_add(ECORE_CON_EVENT_SERVER_DEL, e,
+                                  _ecore_con_event_server_del_free, NULL);
                }
           }
-        return ECORE_CALLBACK_RENEW;
      }
 
-   if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ))
+   else if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ))
      _ecore_con_cl_read(svr);
    else if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_WRITE))
      {
@@ -2163,9 +2162,23 @@ _ecore_con_svr_cl_handler(void *data, Ecore_Fd_Handler *fd_handler)
    if (cl->delete_me)
       return ECORE_CALLBACK_RENEW;
 
-   if (cl->handshaking)
+   if (cl->handshaking && ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ | ECORE_FD_WRITE))
      {
-        if (ecore_con_ssl_client_init(cl))
+        if (!cl->ssl_state)
+          {
+             Ecore_Con_Event_Client_Add *add;
+
+             add = calloc(1, sizeof(Ecore_Con_Event_Client_Add));
+             if(add)
+               {
+/*cl->event_count++;*/
+                  add->client = cl;
+                  _ecore_con_cl_timer_update(cl);
+                  ecore_event_add(ECORE_CON_EVENT_CLIENT_ADD, add,
+                                  _ecore_con_event_client_add_free, NULL);
+               }
+          }
+        else if (ecore_con_ssl_client_init(cl))
           {
              ERR("ssl handshaking failed!");
              /* we lost our client! */
@@ -2183,23 +2196,9 @@ _ecore_con_svr_cl_handler(void *data, Ecore_Fd_Handler *fd_handler)
                }
 
           }
-        else if (!cl->ssl_state)
-          {
-             Ecore_Con_Event_Client_Add *add;
-
-             add = calloc(1, sizeof(Ecore_Con_Event_Client_Add));
-             if(add)
-               {
-/*cl->event_count++;*/
-                  add->client = cl;
-                  _ecore_con_cl_timer_update(cl);
-                  ecore_event_add(ECORE_CON_EVENT_CLIENT_ADD, add,
-                                  _ecore_con_event_client_add_free, NULL);
-               }
-          }        return ECORE_CALLBACK_RENEW;
      }
 
-   if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ))
+   else if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ))
      _ecore_con_svr_cl_read(cl);
 
    else if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_WRITE))