cedric pushed a commit to branch master.
commit 1821c91d1076e5350fce7ed92d2ea670518338e1
Author: Jean-Philippe Andre <[email protected]>
Date: Tue Jun 18 20:50:17 2013 +0900
cserve2: prevent infinite loop during connection
In case of EACCESS, there is no point trying forever
In case of EINTR (interrupt), we can consider for now
that any signal will prevent the use of cserve2.
If we don't do that, Ctrl+C simply won't work :)
---
src/lib/evas/cserve2/evas_cs2_client.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/lib/evas/cserve2/evas_cs2_client.c
b/src/lib/evas/cserve2/evas_cs2_client.c
index 646cd83..2212955 100644
--- a/src/lib/evas/cserve2/evas_cs2_client.c
+++ b/src/lib/evas/cserve2/evas_cs2_client.c
@@ -107,10 +107,22 @@ _server_connect(void)
len = strlen(remote.sun_path) + sizeof(remote.sun_family);
for (;;)
{
+ errno = 0;
if (connect(s, (struct sockaddr *)&remote, len) != -1) break;
+ if (errno == EACCES)
+ {
+ ERR("not authorized to connect to cserve2!");
+ return EINA_FALSE;
+ }
ERR("cserve2 connect failed: [%d] %s. Retrying...", errno,
strerror(errno));
- usleep(1000);
+ errno = 0;
+ usleep(10000);
+ if (errno == EINTR)
+ {
+ WRN("received interruption while trying to connect to cserve2!");
+ return EINA_FALSE;
+ }
/* FIXME: Here we should identify the error, maybe signal the daemon
manager
* that we need cserve2 to [re]start or just quit and return false.
--
------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:
Build for Windows Store.
http://p.sf.net/sfu/windows-dev2dev