X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=blobdiff_plain;f=src%2Fpazpar2_config.c;h=d6053ae43d596e35fe3b04de44ec3a46f8061fc1;hb=1c320abd379ba19f7ab6ff3ed3a31fb72873990b;hp=22e047dc5aa93c5665ed1d876dfa9673b942b8dc;hpb=e18d3fb3e64bf310040848a7202d4f89a989581b;p=pazpar2-moved-to-github.git diff --git a/src/pazpar2_config.c b/src/pazpar2_config.c index 22e047d..d6053ae 100644 --- a/src/pazpar2_config.c +++ b/src/pazpar2_config.c @@ -782,7 +782,7 @@ static struct conf_server *server_create(struct conf_config *config, struct conf_server *server = nmem_malloc(nmem, sizeof(struct conf_server)); xmlChar *server_id = xmlGetProp(node, (xmlChar *) "id"); - server->host = 0; + server->host = "@"; server->port = 0; server->proxy_host = 0; server->proxy_port = 0; @@ -811,10 +811,12 @@ static struct conf_server *server_create(struct conf_config *config, { xmlChar *port = xmlGetProp(n, (xmlChar *) "port"); xmlChar *host = xmlGetProp(n, (xmlChar *) "host"); + if (port) - server->port = atoi((const char *) port); + server->port = nmem_strdup(nmem, (const char *) port); if (host) server->host = nmem_strdup(nmem, (const char *) host); + xmlFree(port); xmlFree(host); } @@ -918,6 +920,11 @@ static struct conf_server *server_create(struct conf_config *config, return 0; } } + if (!server->port) + { + yaz_log(YLOG_FATAL, "No listening port given"); + return 0; + } if (server->service) { struct conf_service *s; @@ -1139,28 +1146,27 @@ int config_start_listeners(struct conf_config *conf, conf->iochan_man = iochan_man_create(conf->no_threads); for (ser = conf->servers; ser; ser = ser->next) { - WRBUF w = wrbuf_alloc(); + WRBUF w; int r; ser->iochan_man = conf->iochan_man; if (listener_override) { - wrbuf_puts(w, listener_override); - listener_override = 0; /* only first server is overriden */ - } - else - { - if (ser->host) - wrbuf_puts(w, ser->host); - if (ser->port) + const char *cp = strrchr(listener_override, ':'); + if (cp) { - if (wrbuf_len(w)) - wrbuf_puts(w, ":"); - wrbuf_printf(w, "%d", ser->port); + ser->host = nmem_strdupn(conf->nmem, listener_override, + cp - listener_override); + ser->port = nmem_strdup(conf->nmem, cp + 1); + } + else + { + ser->host = "@"; + ser->port = nmem_strdup(conf->nmem, listener_override); } + listener_override = 0; /* only first server is overriden */ } - r = http_init(wrbuf_cstr(w), ser, record_fname); - wrbuf_destroy(w); + r = http_init(ser, record_fname); if (r) return -1;