Commit 69529c38594f7bd56b50b9effed5a45125ccba3e

Jeff Garzik 2011-03-24T14:09:49

Support full URL, in X-Long-Polling header

diff --git a/cpu-miner.c b/cpu-miner.c
index 7c941fd..369e966 100644
--- a/cpu-miner.c
+++ b/cpu-miner.c
@@ -635,15 +635,25 @@ static void *longpoll_thread(void *userdata)
 	hdr_path = tq_pop(mythr->q, NULL);
 	if (!hdr_path)
 		goto out;
-	copy_start = (*hdr_path == '/') ? (hdr_path + 1) : hdr_path;
-	if (rpc_url[strlen(rpc_url) - 1] != '/')
-		need_slash = true;
 
-	lp_url = malloc(strlen(rpc_url) + strlen(copy_start) + 2);
-	if (!lp_url)
-		goto out;
+	/* full URL */
+	if (strstr(hdr_path, "://")) {
+		lp_url = hdr_path;
+		hdr_path = NULL;
+	}
+	
+	/* absolute path, on current server */
+	else {
+		copy_start = (*hdr_path == '/') ? (hdr_path + 1) : hdr_path;
+		if (rpc_url[strlen(rpc_url) - 1] != '/')
+			need_slash = true;
+
+		lp_url = malloc(strlen(rpc_url) + strlen(copy_start) + 2);
+		if (!lp_url)
+			goto out;
 
-	sprintf(lp_url, "%s%s%s", rpc_url, need_slash ? "/" : "", copy_start);
+		sprintf(lp_url, "%s%s%s", rpc_url, need_slash ? "/" : "", copy_start);
+	}
 
 	applog(LOG_INFO, "Long-polling activated for %s", lp_url);