Version 1.11.0
[pazpar2-moved-to-github.git] / src / host.c
index 6978dd8..5c7c15f 100644 (file)
@@ -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;