Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/ecore

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


Modified Files:
        ecore_con.c 


Log Message:


limit flushiness.

===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_con/ecore_con.c,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -3 -r1.64 -r1.65
--- ecore_con.c 19 Apr 2006 07:27:52 -0000      1.64
+++ ecore_con.c 19 May 2006 03:52:24 -0000      1.65
@@ -841,11 +841,26 @@
 static void
 _ecore_con_server_free(Ecore_Con_Server *svr)
 {
+   double t_start, t;
+   
    ECORE_MAGIC_SET(svr, ECORE_MAGIC_NONE);   
-   while ((svr->write_buf) && (!svr->dead)) _ecore_con_server_flush(svr);
+   t_start = ecore_time_get();
+   while ((svr->write_buf) && (!svr->dead))
+     {
+       _ecore_con_server_flush(svr);
+       t = ecore_time_get();
+       if ((t - t_start) > 5.0)
+         {
+            printf("ECORE_CON: EEK - stuck in _ecore_con_server_free() 
trying\n"
+                   "  to flush data out from the server, and have been for\n"
+                   "  %1.1f seconds. This is taking too long. Aborting 
flush.\n",
+                   (t - t_start));
+            break;
+         }
+     }
    if (svr->write_buf) free(svr->write_buf);
    while (!ecore_list_is_empty(svr->clients))
-      _ecore_con_client_free(ecore_list_remove_first(svr->clients));
+     _ecore_con_client_free(ecore_list_remove_first(svr->clients));
    ecore_list_destroy(svr->clients);
    if ((svr->created) && (svr->path) && (svr->ppid == getpid())) 
unlink(svr->path);
    if (svr->fd >= 0) close(svr->fd);
@@ -867,8 +882,23 @@
 static void
 _ecore_con_client_free(Ecore_Con_Client *cl)
 {
+   double t_start, t;
+   
    ECORE_MAGIC_SET(cl, ECORE_MAGIC_NONE);   
-   while ((cl->buf) && (!cl->dead)) _ecore_con_client_flush(cl);
+   t_start = ecore_time_get();
+   while ((cl->buf) && (!cl->dead))
+     {
+       _ecore_con_client_flush(cl);
+       t = ecore_time_get();
+       if ((t - t_start) > 5.0)
+         {
+            printf("ECORE_CON: EEK - stuck in _ecore_con_client_free() 
trying\n"
+                   "  to flush data out from the client, and have been for\n"
+                   "  %1.1f seconds. This is taking too long. Aborting 
flush.\n",
+                   (t - t_start));
+            break;
+         }
+     }
    if (cl->buf) free(cl->buf);
    if (cl->fd >= 0) close(cl->fd);
    if (cl->fd_handler) ecore_main_fd_handler_del(cl->fd_handler);




-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to