projects
/
yaz-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
SOLR facets: no magic for non-date facets
[yaz-moved-to-github.git]
/
src
/
statserv.c
diff --git
a/src/statserv.c
b/src/statserv.c
index
d340a17
..
487153e
100644
(file)
--- a/
src/statserv.c
+++ b/
src/statserv.c
@@
-1,5
+1,5
@@
/* This file is part of the YAZ toolkit.
/* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2010 Index Data
+ * Copyright (C) 1995-2011 Index Data
* See the file LICENSE for details.
*/
* See the file LICENSE for details.
*/
@@
-8,10
+8,13
@@
* \brief Implements GFS logic
*/
* \brief Implements GFS logic
*/
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <ctype.h>
#ifdef WIN32
#include <process.h>
#ifdef WIN32
#include <process.h>
@@
-60,6
+63,7
@@
#include "session.h"
#include <yaz/statserv.h>
#include <yaz/daemon.h>
#include "session.h"
#include <yaz/statserv.h>
#include <yaz/daemon.h>
+#include <yaz/yaz-iconv.h>
static IOCHAN pListener = NULL;
static IOCHAN pListener = NULL;
@@
-191,7
+195,7
@@
static char *nmem_dup_xml_content(NMEM n, xmlNodePtr ptr)
cp = p->content;
if (first)
{
cp = p->content;
if (first)
{
- while(*cp && isspace(*cp))
+ while(*cp && yaz_isspace(*cp))
cp++;
if (*cp)
first = 0; /* reset if we got non-whitespace out */
cp++;
if (*cp)
first = 0; /* reset if we got non-whitespace out */
@@
-201,7
+205,7
@@
static char *nmem_dup_xml_content(NMEM n, xmlNodePtr ptr)
}
/* remove trailing whitespace */
cp = strlen((const char *)str) + str;
}
/* remove trailing whitespace */
cp = strlen((const char *)str) + str;
- while (cp != str && isspace(cp[-1]))
+ while (cp != str && yaz_isspace(cp[-1]))
cp--;
*cp = '\0';
/* return resulting string */
cp--;
*cp = '\0';
/* return resulting string */
@@
-606,6
+610,8
@@
static void xml_config_bend_stop(void)
}
}
}
}
+static void remove_listeners(void);
+
/*
* handle incoming connect requests.
* The dynamic mode is a bit tricky mostly because we want to avoid
/*
* handle incoming connect requests.
* The dynamic mode is a bit tricky mostly because we want to avoid
@@
-905,6
+911,9
@@
static void listener(IOCHAN h, int event)
return;
}
return;
}
+ if (control_block.one_shot)
+ remove_listeners();
+
yaz_log(log_sessiondetail, "Connect from %s", cs_addrstr(new_line));
no_sessions++;
yaz_log(log_sessiondetail, "Connect from %s", cs_addrstr(new_line));
no_sessions++;
@@
-1125,6
+1134,13
@@
static int add_listener(char *where, int listen_id)
return 0; /* OK */
}
return 0; /* OK */
}
+static void remove_listeners(void)
+{
+ IOCHAN l = pListener;
+ for (; l; l = l->next)
+ iochan_destroy(l);
+}
+
#ifndef WIN32
/* UNIX only (for windows we don't need to catch the signals) */
static void catchchld(int num)
#ifndef WIN32
/* UNIX only (for windows we don't need to catch the signals) */
static void catchchld(int num)