3b7af84b7d8ebe9d30811103accd61584add9d9a
galt
  Sun Mar 19 22:24:29 2017 -0700
Initial check-in of proxy stuff. Added support for https_proxy for configuring https proxy. Added no_proxy for configuring domain suffixes which should be excluded from proxying. src/product/README.proxy updated. There are probably some documentation pages that will still need updating.

diff --git src/htslib/knetfile.c src/htslib/knetfile.c
index 7749aac..cdd1617 100644
--- src/htslib/knetfile.c
+++ src/htslib/knetfile.c
@@ -394,30 +394,33 @@
 	knetFile *fp;
 	char *p, *proxy, *q;
 	int l;
 	if (strstr(fn, "http://") != fn) return 0;
 	// set ->http_host
 	for (p = (char*)fn + 7; *p && *p != '/'; ++p);
 	l = p - fn - 7;
 	fp = (knetFile*)calloc(1, sizeof(knetFile));
 	fp->http_host = (char*)calloc(l + 1, 1);
 	strncpy(fp->http_host, fn + 7, l);
 	fp->http_host[l] = 0;
 	for (q = fp->http_host; *q && *q != ':'; ++q);
 	if (*q == ':') *q++ = 0;
 	// get http_proxy
 	proxy = getenv("http_proxy");
+	if (checkNoProxy(fp->http_host))
+	    proxy = NULL;
+/* See if host endsWith element on no_proxy list. */
 	// set ->host, ->port and ->path
 	if (proxy == 0) {
 		fp->host = strdup(fp->http_host); // when there is no proxy, server name is identical to http_host name.
 		fp->port = strdup(*q? q : "80");
 		fp->path = strdup(*p? p : "/");
 	} else {
 		fp->host = (strstr(proxy, "http://") == proxy)? strdup(proxy + 7) : strdup(proxy);
 		for (q = fp->host; *q && *q != ':'; ++q);
 		if (*q == ':') *q++ = 0; 
 		fp->port = strdup(*q? q : "80");
 		fp->path = strdup(fn);
 	}
 	fp->type = KNF_TYPE_HTTP;
 	fp->ctrl_fd = fp->fd = -1;
 	fp->seek_offset = 0;