Support full URL, in X-Long-Polling header
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
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);