|
|
@ -186,7 +186,8 @@ static size_t upload_data_cb(void *ptr, size_t size, size_t nmemb, |
|
|
|
return len; |
|
|
|
return len; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static size_t resp_hdr_cb(void *ptr, size_t size, size_t nmemb, void *user_data) |
|
|
|
static size_t resp_hdr_cb(void *ptr, size_t size, size_t nmemb, void *user_data, |
|
|
|
|
|
|
|
struct pool *pool) |
|
|
|
{ |
|
|
|
{ |
|
|
|
struct header_info *hi = user_data; |
|
|
|
struct header_info *hi = user_data; |
|
|
|
size_t remlen, slen, ptrlen = size * nmemb; |
|
|
|
size_t remlen, slen, ptrlen = size * nmemb; |
|
|
@ -225,6 +226,11 @@ static size_t resp_hdr_cb(void *ptr, size_t size, size_t nmemb, void *user_data) |
|
|
|
if (opt_protocol) |
|
|
|
if (opt_protocol) |
|
|
|
applog(LOG_DEBUG, "HTTP hdr(%s): %s", key, val); |
|
|
|
applog(LOG_DEBUG, "HTTP hdr(%s): %s", key, val); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!strcasecmp("X-Roll-Ntime", key)) { |
|
|
|
|
|
|
|
applog(LOG_INFO, "X-Roll-Ntime found"); |
|
|
|
|
|
|
|
pool->has_rolltime = true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (!strcasecmp("X-Long-Polling", key)) { |
|
|
|
if (!strcasecmp("X-Long-Polling", key)) { |
|
|
|
hi->lp_path = val; /* steal memory reference */ |
|
|
|
hi->lp_path = val; /* steal memory reference */ |
|
|
|
val = NULL; |
|
|
|
val = NULL; |
|
|
@ -240,7 +246,8 @@ static bool comms_error = false; |
|
|
|
|
|
|
|
|
|
|
|
json_t *json_rpc_call(CURL *curl, const char *url, |
|
|
|
json_t *json_rpc_call(CURL *curl, const char *url, |
|
|
|
const char *userpass, const char *rpc_req, |
|
|
|
const char *userpass, const char *rpc_req, |
|
|
|
bool longpoll_scan, bool longpoll) |
|
|
|
bool longpoll_scan, bool longpoll, |
|
|
|
|
|
|
|
bool getroll, struct pool *pool) |
|
|
|
{ |
|
|
|
{ |
|
|
|
json_t *val, *err_val, *res_val; |
|
|
|
json_t *val, *err_val, *res_val; |
|
|
|
int rc; |
|
|
|
int rc; |
|
|
@ -271,7 +278,7 @@ json_t *json_rpc_call(CURL *curl, const char *url, |
|
|
|
curl_easy_setopt(curl, CURLOPT_READDATA, &upload_data); |
|
|
|
curl_easy_setopt(curl, CURLOPT_READDATA, &upload_data); |
|
|
|
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curl_err_str); |
|
|
|
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curl_err_str); |
|
|
|
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); |
|
|
|
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); |
|
|
|
if (lp_scanning) { |
|
|
|
if (lp_scanning || getroll) { |
|
|
|
curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, resp_hdr_cb); |
|
|
|
curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, resp_hdr_cb); |
|
|
|
curl_easy_setopt(curl, CURLOPT_HEADERDATA, &hi); |
|
|
|
curl_easy_setopt(curl, CURLOPT_HEADERDATA, &hi); |
|
|
|
} |
|
|
|
} |
|
|
|