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