Set the latest network access time on share submission for --net-delay even if we're not delaying that submission for further network access.
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
diff --git a/util.c b/util.c
index 733d8ad..62abb34 100644
--- a/util.c
+++ b/util.c
@@ -336,6 +336,9 @@ json_t *json_rpc_call(CURL *curl, const char *url,
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_ENCODING, "");
curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1);
+
+ /* Shares are staggered already and delays in submission can be costly
+ * so do not delay them */
if (!opt_delaynet || share)
curl_easy_setopt(curl, CURLOPT_TCP_NODELAY, 1);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, all_data_cb);
@@ -380,25 +383,29 @@ json_t *json_rpc_call(CURL *curl, const char *url,
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
- if (opt_delaynet && !share) {
- long long now_msecs, last_msecs;
- struct timeval now, last;
-
- gettimeofday(&now, NULL);
- last_nettime(&last);
- now_msecs = (long long)now.tv_sec * 1000;
- now_msecs += now.tv_usec / 1000;
- last_msecs = (long long)last.tv_sec * 1000;
- last_msecs += last.tv_usec / 1000;
- if (now_msecs > last_msecs && now_msecs - last_msecs < 250) {
- struct timespec rgtp;
-
- rgtp.tv_sec = 0;
- rgtp.tv_nsec = (250 - (now_msecs - last_msecs)) * 1000000;
- nanosleep(&rgtp, NULL);
+ if (opt_delaynet) {
+ /* Don't delay share submission, but still track the nettime */
+ if (!share) {
+ long long now_msecs, last_msecs;
+ struct timeval now, last;
+
+ gettimeofday(&now, NULL);
+ last_nettime(&last);
+ now_msecs = (long long)now.tv_sec * 1000;
+ now_msecs += now.tv_usec / 1000;
+ last_msecs = (long long)last.tv_sec * 1000;
+ last_msecs += last.tv_usec / 1000;
+ if (now_msecs > last_msecs && now_msecs - last_msecs < 250) {
+ struct timespec rgtp;
+
+ rgtp.tv_sec = 0;
+ rgtp.tv_nsec = (250 - (now_msecs - last_msecs)) * 1000000;
+ nanosleep(&rgtp, NULL);
+ }
}
set_nettime();
}
+
rc = curl_easy_perform(curl);
if (rc) {
applog(LOG_INFO, "HTTP request failed: %s", curl_err_str);