- struct host *host;
-
- host = xmalloc(sizeof(struct host));
- host->hostport = xstrdup(hostport);
- host->connections = 0;
- host->ipport = 0;
-
- if (host_getaddrinfo(host))
- {
- xfree(host->hostport);
- xfree(host);
- return 0;
- }
- host->next = hosts;
- hosts = host;
- return host;
-}
-
-static struct host *find_host(const char *hostport)
-{
- struct host *p;
- for (p = hosts; p; p = p->next)
- if (!strcmp(p->hostport, hostport))
- return p;
- return create_host(hostport);
-}
-
-int resolve_database(struct database *db)
-{
- if (db->host == 0)
- {
- struct host *host;
- char *p;
- char hostport[256];
- strcpy(hostport, db->url);
- if ((p = strchr(hostport, '/')))
- *p = '\0';
- if (!(host = find_host(hostport)))
- return -1;
- db->host = host;
- }
- return 0;
-}
-
-void resolve_databases(struct conf_service *service)
-{
- struct database *db = service->databases;
- for (; db; db = db->next)
- resolve_database(db);
-}
-
-static struct database *load_database(const char *id,
- struct conf_service *service)
-{
- xmlDoc *doc = 0;
- struct zr_explain *explain = 0;