fix error handling of plaintext connect, print ERR on connect failure
authordiscomfitor <discomfitor@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 17 Nov 2010 09:31:15 +0000 (09:31 +0000)
committerdiscomfitor <discomfitor@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 17 Nov 2010 09:31:15 +0000 (09:31 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/ecore@54624 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/ecore_con/ecore_con.c

index d22580d..23dd6c0 100644 (file)
@@ -1607,28 +1607,30 @@ svr_try_connect_plain(Ecore_Con_Server *svr)
    int so_err = 0;
    unsigned int size = sizeof(int);
 
+   errno = 0;
    res = getsockopt(svr->fd, SOL_SOCKET, SO_ERROR, (void *)&so_err, &size);
 #ifdef _WIN32
    if (res == SOCKET_ERROR)
-     so_err = -1;
+     so_err = WSAGetLastError();
 
-   if (so_err == WSAEINPROGRESS && !svr->dead)
+   if ((so_err == WSAEINPROGRESS) && !svr->dead)
      return ECORE_CON_INPROGRESS;
 
 #else
    if (res < 0)
-     so_err = -1;
+     so_err = errno;
 
-   if (so_err == EINPROGRESS && !svr->dead)
+   if ((so_err == EINPROGRESS) && !svr->dead)
      return ECORE_CON_INPROGRESS;
 
 #endif
 
-   if (so_err != 0)
+   if (so_err)
      {
         /* we lost our server! */
-         _ecore_con_server_kill(svr);
-         return ECORE_CON_DISCONNECTED;
+        ERR("Connection lost: %s", strerror(so_err));
+        _ecore_con_server_kill(svr);
+        return ECORE_CON_DISCONNECTED;
      }
 
    if ((!svr->delete_me) && (!svr->handshaking) && svr->connecting)