X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Feventl.c;h=29a621c175431f8e554a10796bf1ccac4cd76f9b;hb=cc178327044177f177d0474b757f53bcd86b4d42;hp=c9ecbd4c07093750977c0638cda155a3be4c45d5;hpb=7cb18e001c719f24b9f440f91fc44ddaaeda3303;p=pazpar2-moved-to-github.git diff --git a/src/eventl.c b/src/eventl.c index c9ecbd4..29a621c 100644 --- a/src/eventl.c +++ b/src/eventl.c @@ -1,12 +1,30 @@ +/* This file is part of Pazpar2. + Copyright (C) 2006-2008 Index Data + +Pazpar2 is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Pazpar2 is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + /* - * ParaZ - a simple tool for harvesting performance data for parallel - * operations using Z39.50. + * Based on ParaZ - a simple tool for harvesting performance data for + * parallel operations using Z39.50. * Copyright (c) 2000-2004 Index Data ApS * See LICENSE file for details. */ /* - * $Id: eventl.c,v 1.4 2007-04-08 23:04:20 adam Exp $ * Based on revision YAZ' server/eventl.c 1.29. */ @@ -14,7 +32,7 @@ #include #if HAVE_CONFIG_H -#include +#include #endif #ifdef WIN32 @@ -22,6 +40,10 @@ #else #include #endif +#if HAVE_SYS_TIME_H +#include +#endif + #include #include #include @@ -63,7 +85,7 @@ int event_loop(IOCHAN *iochans) FD_ZERO(&out); FD_ZERO(&except); timeout = &to; /* hang on select */ - to.tv_sec = 30; + to.tv_sec = 15; to.tv_usec = 0; max = 0; for (p = *iochans; p; p = p->next) @@ -80,6 +102,8 @@ int event_loop(IOCHAN *iochans) FD_SET(p->fd, &except); if (p->fd > max) max = p->fd; + if (p->max_idle && p->max_idle < to.tv_sec) + to.tv_sec = p->max_idle; } if ((res = select(max + 1, &in, &out, &except, timeout)) < 0) {