{
struct addrinfo hints, *res;
char host[512], *cp;
- char *port = 0;
+ char *port = "210";
int error;
hints.ai_flags = 0;
hints.ai_canonname = NULL;
hints.ai_next = NULL;
- strncpy(host, w->hostport, sizeof(host)-1);
+ if (!strncmp(w->hostport, "http://", 7))
+ {
+ port = "80";
+ strncpy(host, w->hostport + 7, sizeof(host)-1);
+ }
+ else if (!strncmp(w->hostport, "https://", 8))
+ {
+ port = "443";
+ strncpy(host, w->hostport + 8, sizeof(host)-1);
+ }
+ else
+ {
+ strncpy(host, w->hostport, sizeof(host)-1);
+ }
host[sizeof(host)-1] = 0;
if ((cp = strrchr(host, ':')))
{
*cp = '\0';
port = cp + 1;
}
- error = getaddrinfo(host, port ? port : "210", &hints, &res);
+ error = getaddrinfo(host, port, &hints, &res);
if (error)
{
yaz_log(YLOG_WARN, "Failed to resolve %s: %s",
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';