struct conf_server *servers;
int no_threads;
+ int max_sockets;
WRBUF confdir;
char *path;
iochan_man_t iochan_man;
- database_hosts_t database_hosts;
};
struct service_xslt
server->charsets = 0;
server->http_server = 0;
server->iochan_man = 0;
- server->database_hosts = config->database_hosts;
server->settings_fname = 0;
if (server_id)
case Metadata_type_position:
wrbuf_puts(w, "position");
break;
+ case Metadata_type_retrieval:
+ wrbuf_puts(w, "retrieval");
+ break;
default:
wrbuf_puts(w, "yes");
break;
case Metadata_type_float:
wrbuf_puts(w, " type=\"float\"");
break;
- case Metadata_type_relevance:
- case Metadata_type_position:
+ default:
break;
}
switch (md->merge)
static void info_service_databases(struct conf_service *service, WRBUF w)
{
- struct database *db;
- struct setting *s;
- int i;
if (service->databases)
{
+ struct database *db;
wrbuf_puts(w, " <databases>\n");
- for(db = service->databases; db; db = db->next)
+ for (db = service->databases; db; db = db->next)
{
+ int i;
wrbuf_puts(w, " <database");
if (db->id)
{
wrbuf_puts(w, ">\n");
for (i = 0; i < db->num_settings; i++)
{
- s = db->settings[i];
- while (s != NULL)
+ struct setting *s = db->settings[i];
+ for (; s; s = s->next)
{
- wrbuf_puts(w, " <setting");
- wrbuf_puts(w, " name=\"");
+ wrbuf_puts(w, " <setting name=\"");
wrbuf_xmlputs(w, s->name);
wrbuf_puts(w, "\"");
wrbuf_puts(w, " value=\"");
wrbuf_xmlputs(w, s->value);
wrbuf_puts(w, "\"");
wrbuf_puts(w, " />\n");
- s = s->next;
}
}
wrbuf_puts(w, " </database>\n");
{
struct conf_service *s = server->service;
int i;
- struct setting *S;
wrbuf_puts(w, " <services>\n");
for (; s; s = s->next)
wrbuf_puts(w, ">\n");
if (s->settings)
{
- for (i=0; i<s->settings->num_settings; i++)
+ for (i = 0; i < s->settings->num_settings; i++)
{
- S = s->settings->settings[i];
- while (S != NULL) {
- wrbuf_puts(w, " <setting");
- wrbuf_puts(w, " name=\"");
+ struct setting *S = s->settings->settings[i];
+ for (; S; S = S->next)
+ {
+ wrbuf_puts(w, " <setting name=\"");
wrbuf_xmlputs(w, S->name);
wrbuf_puts(w, "\"");
wrbuf_puts(w, " value=\"");
wrbuf_xmlputs(w, S->value);
wrbuf_puts(w, "\"");
- if (S->target) {
+ if (S->target)
+ {
wrbuf_puts(w, " target=\"");
wrbuf_xmlputs(w, S->target);
wrbuf_puts(w, "\"");
}
-
wrbuf_puts(w, " />\n");
-
- S = S->next;
}
}
}
info_service_metadata(s, w);
info_service_databases(s, w);
- wrbuf_puts(w, " </service>");
-
- wrbuf_puts(w, "\n");
+ wrbuf_puts(w, " </service>\n");
}
wrbuf_puts(w, " </services>\n");
}
xmlFree(number);
}
}
+ else if (!strcmp((const char *) n->name, "sockets"))
+ {
+ xmlChar *number = xmlGetProp(n, (xmlChar *) "max");
+ if (number)
+ {
+ config->max_sockets = atoi((const char *) number);
+ xmlFree(number);
+ }
+ }
else if (!strcmp((const char *) n->name, "file"))
{
xmlChar *path = xmlGetProp(n, (xmlChar *) "path");
config->servers = 0;
config->path = nmem_strdup(nmem, ".");
config->no_threads = 0;
+ config->max_sockets = 0;
config->iochan_man = 0;
- config->database_hosts = database_hosts_create();
config->confdir = wrbuf_alloc();
if ((p = strrchr(fname,
r = yaz_xml_include_simple(n, wrbuf_cstr(config->confdir));
if (r == 0) /* OK */
{
+#ifndef WIN32
yaz_log(YLOG_LOG, "Configuration %s after include processing",
fname);
#if LIBXML_VERSION >= 20600
#else
xmlDocDump(yaz_log_file(), doc);
#endif
+#endif
r = parse_config(config, n);
}
xmlFreeDoc(doc);
struct conf_server *s_next = server->next;
server_destroy(server);
server = s_next;
- database_hosts_destroy(&config->database_hosts);
}
wrbuf_destroy(config->confdir);
nmem_destroy(config->nmem);
{
struct conf_server *ser;
- conf->iochan_man = iochan_man_create(conf->no_threads);
+ conf->iochan_man = iochan_man_create(conf->no_threads, conf->max_sockets);
for (ser = conf->servers; ser; ser = ser->next)
{
WRBUF w;