Browse Source

Support full URL, in X-Long-Polling header

Jeff Garzik 15 years ago
parent
commit
69529c3859
1 changed files with 17 additions and 7 deletions
  1. 17 7
      cpu-miner.c

+ 17 - 7
cpu-miner.c

@@ -635,15 +635,25 @@ static void *longpoll_thread(void *userdata)
 	hdr_path = tq_pop(mythr->q, NULL);
 	hdr_path = tq_pop(mythr->q, NULL);
 	if (!hdr_path)
 	if (!hdr_path)
 		goto out;
 		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);
 	applog(LOG_INFO, "Long-polling activated for %s", lp_url);