Enlightenment CVS committal

Author  : tsauerbeck
Project : e17
Module  : libs/ecore

Dir     : e17/libs/ecore/src/lib/ecore_con


Modified Files:
        ecore_con.c 


Log Message:
try to connect the socket in the write branch of the fd handler, too. this seems to 
fix a bug where a SERVER_DATA event was delivered before/without a SERVER_ADD event
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_con/ecore_con.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -3 -r1.30 -r1.31
--- ecore_con.c 9 May 2004 07:55:40 -0000       1.30
+++ ecore_con.c 9 May 2004 20:23:23 -0000       1.31
@@ -19,7 +19,6 @@
 #include <stdlib.h>
 #include <fcntl.h>
 #include <netdb.h>
-#include <assert.h>
 
 #if USE_OPENSSL
 #include <time.h>
@@ -765,7 +764,7 @@
 }
 
 static int
-svr_try_connect(Ecore_Con_Server *svr)
+svr_try_connect_plain(Ecore_Con_Server *svr)
 {
    int so_err = 0, size = sizeof(int);
 
@@ -795,6 +794,29 @@
    return (!svr->dead);
 }
 
+/* returns 1 on success, 0 on failure */
+static int svr_try_connect (Ecore_Con_Server *svr)
+{
+#if USE_OPENSSL
+   if (!svr->ssl)
+   {
+#endif
+      return svr_try_connect_plain(svr);
+#if USE_OPENSSL
+   }
+   else
+      switch (svr_try_connect_ssl(svr)) {
+        case 1:
+           return svr_try_connect_plain(svr);
+        case -1:
+           kill_server(svr);
+           return 0;
+        default:
+           return 0;
+      }
+#endif
+}
+
 
 static int
 _ecore_con_cl_handler(void *data, Ecore_Fd_Handler *fd_handler)
@@ -811,22 +833,9 @@
        unsigned char *inbuf = NULL;
        int            inbuf_num = 0;
 
-#if USE_OPENSSL
-       if (svr->ssl && svr->connecting) {
-          switch (svr_try_connect_ssl(svr)) {
-             case 1:
-                if (!svr_try_connect(svr))
-                   return 1;
-                break;
-             case -1:
-                kill_server(svr);
-                return 1;
-             default:
-                return 1;
-          }
-       }
-#endif
-       
+       if (svr->connecting && !svr_try_connect(svr))
+          return 1;
+
        for (;;)
          {
             int num, lost_server = 0;
@@ -895,29 +904,9 @@
      }
    else if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_WRITE))
      {
-       if (svr->connecting)
-         {
-#if USE_OPENSSL
-            if (!svr->ssl)
-              {
-#endif
-                 if (!svr_try_connect(svr))
-                      return 1;
-#if USE_OPENSSL
-              }
-            else
-               switch (svr_try_connect_ssl(svr)) {
-                  case 1:
-                     if (!svr_try_connect(svr))
-                        return 1;
-                  case -1:
-                     kill_server(svr);
-                     return 1;
-                  default:
-                     return 1;
-               }
-#endif
-         }
+       if (svr->connecting && !svr_try_connect (svr))
+          return 1;
+
        _ecore_con_server_flush(svr);
      }
 




-------------------------------------------------------
This SF.Net email is sponsored by Sleepycat Software
Learn developer strategies Cisco, Motorola, Ericsson & Lucent use to 
deliver higher performing products faster, at low TCO.
http://www.sleepycat.com/telcomwpreg.php?From=osdnemail3
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to