Allow setting the HTTP proxy via creation info

If the user provides a proxy via the info object it is used
in favor over the http_proxy environment variable.
diff --git a/changelog b/changelog
index 75565bf..e2f56f0 100644
--- a/changelog
+++ b/changelog
@@ -48,6 +48,8 @@
 of HTTP headers into the canned response.  Eg, cookies may be added like
 that without getting involved in having to send the header by hand.
 
+A new info member http_proxy_address may be used at context creation time to
+set the http proxy.  If non-NULL, it overrides http_proxy environment var.
 
 
 v1.23-chrome32-firefox24
diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c
index f0a09fd..28d798b 100644
--- a/lib/libwebsockets.c
+++ b/lib/libwebsockets.c
@@ -2090,21 +2090,31 @@
 
 	/* split the proxy ads:port if given */
 
-	p = getenv("http_proxy");
-	if (p) {
-		strncpy(context->http_proxy_address, p,
+	if (info->http_proxy_address) {
+		strncpy(context->http_proxy_address, info->http_proxy_address,
 				      sizeof(context->http_proxy_address) - 1);
 		context->http_proxy_address[
 				sizeof(context->http_proxy_address) - 1] = '\0';
+		context->http_proxy_port = info->http_proxy_port;
+	} else {
+		p = getenv("http_proxy");
+		if (p) {
+			strncpy(context->http_proxy_address, p,
+					      sizeof(context->http_proxy_address) - 1);
+			context->http_proxy_address[
+					sizeof(context->http_proxy_address) - 1] = '\0';
 
-		p = strchr(context->http_proxy_address, ':');
-		if (p == NULL) {
-			lwsl_err("http_proxy needs to be ads:port\n");
-			goto bail;
+			p = strchr(context->http_proxy_address, ':');
+			if (p == NULL) {
+				lwsl_err("http_proxy needs to be ads:port\n");
+				goto bail;
+			}
+			*p = '\0';
+			context->http_proxy_port = atoi(p + 1);
 		}
-		*p = '\0';
-		context->http_proxy_port = atoi(p + 1);
+	}
 
+	if (context->http_proxy_address[0]) {
 		lwsl_notice(" Proxy %s:%u\n",
 				context->http_proxy_address,
 						      context->http_proxy_port);
diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h
index 24856a4..a7c07aa 100644
--- a/lib/libwebsockets.h
+++ b/lib/libwebsockets.h
@@ -938,6 +938,8 @@
 	const char *ssl_private_key_filepath;
 	const char *ssl_ca_filepath;
 	const char *ssl_cipher_list;
+	const char *http_proxy_address;
+	unsigned int http_proxy_port;
 	int gid;
 	int uid;
 	unsigned int options;