X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fhost.c;h=5c7c15f0aa96f5a45359a780c53a154c88338acd;hb=dfa3f5aa5c191a7e528e09789fce3d82d62c8e51;hp=6978dd8d242bd36ff4d256dc63902269984f090a;hpb=55c22e87453d25303491f854d4d7d290f6b080bf;p=pazpar2-moved-to-github.git diff --git a/src/host.c b/src/host.c index 6978dd8..5c7c15f 100644 --- a/src/host.c +++ b/src/host.c @@ -1,5 +1,5 @@ /* This file is part of Pazpar2. - Copyright (C) 2006-2013 Index Data + Copyright (C) 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 @@ -59,6 +59,7 @@ static struct host *create_host(const char *proxy, host->connections = 0; host->ipport = 0; host->mutex = 0; + host->error = 0; if (host_getaddrinfo(host, iochan_man)) { @@ -88,7 +89,13 @@ struct host *find_host(database_hosts_t hosts, const char *url, tproxy = xmalloc (strlen(url) + 10); /* so we can add :port */ strcpy(tproxy, url); - for (cp = tproxy; *cp; cp++) + if (!strncmp(tproxy, "http://", 7)) + cp = tproxy + 7; + else if (!strncmp(tproxy, "https://", 8)) + cp = tproxy + 8; + else + cp = tproxy; + for (; *cp; cp++) if (strchr("/?#~", *cp)) { *cp = '\0'; @@ -115,6 +122,8 @@ struct host *find_host(database_hosts_t hosts, const char *url, hosts->hosts = p; } } + if (p && p->error) /* already resolved error */ + p = 0; yaz_mutex_leave(hosts->mutex); xfree(tproxy); return p;