|
@@ -210,6 +210,8 @@ out:
|
|
|
return ptrlen;
|
|
return ptrlen;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+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)
|
|
@@ -274,7 +276,9 @@ json_t *json_rpc_call(CURL *curl, const char *url,
|
|
|
|
|
|
|
|
rc = curl_easy_perform(curl);
|
|
rc = curl_easy_perform(curl);
|
|
|
if (rc) {
|
|
if (rc) {
|
|
|
- applog(LOG_ERR, "HTTP request failed: %s", curl_err_str);
|
|
|
|
|
|
|
+ if (!comms_error)
|
|
|
|
|
+ applog(LOG_ERR, "HTTP request failed: %s", curl_err_str);
|
|
|
|
|
+ comms_error = true;
|
|
|
goto err_out;
|
|
goto err_out;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -288,10 +292,12 @@ json_t *json_rpc_call(CURL *curl, const char *url,
|
|
|
|
|
|
|
|
val = JSON_LOADS(all_data.buf, &err);
|
|
val = JSON_LOADS(all_data.buf, &err);
|
|
|
if (!val) {
|
|
if (!val) {
|
|
|
- applog(LOG_ERR, "JSON decode failed(%d): %s", err.line, err.text);
|
|
|
|
|
|
|
+ if (!comms_error)
|
|
|
|
|
+ applog(LOG_ERR, "JSON decode failed(%d): %s", err.line, err.text);
|
|
|
|
|
+ comms_error = true;
|
|
|
|
|
|
|
|
if (opt_protocol)
|
|
if (opt_protocol)
|
|
|
- applog(LOG_DEBUG, "JSON protocol response:\n%s", all_data.buf);
|
|
|
|
|
|
|
+ applog(LOG_DEBUG, "JSON protocol response:\n%s", all_data.buf);
|
|
|
|
|
|
|
|
goto err_out;
|
|
goto err_out;
|
|
|
}
|
|
}
|
|
@@ -317,13 +323,16 @@ json_t *json_rpc_call(CURL *curl, const char *url,
|
|
|
else
|
|
else
|
|
|
s = strdup("(unknown reason)");
|
|
s = strdup("(unknown reason)");
|
|
|
|
|
|
|
|
- applog(LOG_ERR, "JSON-RPC call failed: %s", s);
|
|
|
|
|
|
|
+ if (!comms_error)
|
|
|
|
|
+ applog(LOG_ERR, "JSON-RPC call failed: %s", s);
|
|
|
|
|
+ comms_error = true;
|
|
|
|
|
|
|
|
free(s);
|
|
free(s);
|
|
|
|
|
|
|
|
goto err_out;
|
|
goto err_out;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ comms_error = false;
|
|
|
databuf_free(&all_data);
|
|
databuf_free(&all_data);
|
|
|
curl_slist_free_all(headers);
|
|
curl_slist_free_all(headers);
|
|
|
curl_easy_reset(curl);
|
|
curl_easy_reset(curl);
|