Add configurable timeout

This commit is contained in:
pooler 2011-12-04 22:55:30 +01:00
parent 99084f8be4
commit 45024f12f1
4 changed files with 23 additions and 25 deletions

11
README
View file

@ -1,7 +1,4 @@
This is a multi-threaded CPU miner for Tenebrix, fork of Jeff Garzik's refernce cpuminer.
New, GPU-hostile / CPU-friendly PoW is implemented.
This is a multi-threaded CPU miner for Litecoin, fork of Jeff Garzik's reference cpuminer.
License: GPLv2. See COPYING for details.
@ -25,9 +22,3 @@ Basic WIN32 build instructions (on Fedora 13; requires mingw32):
Usage instructions: Run "minerd --help" to see options.
REMEMBER - ONLY scrypt ALGORITHM WORKS FOR TENEBRIX !
Also many issues and FAQs are covered in the forum thread
dedicated to this program,
http://www.bitcoin.org/smf/index.php?topic=1925.0;all

View file

@ -96,6 +96,7 @@ bool use_syslog = false;
static bool opt_quiet = false;
static int opt_retries = 10;
static int opt_fail_pause = 30;
int opt_timeout = 180;
int opt_scantime = 5;
static json_t *opt_config;
static const bool opt_time = true;
@ -126,8 +127,7 @@ static struct option_help options_help[] = {
"See example-cfg.json for an example configuration." },
{ "algo XXX",
"(-a XXX) USE *ONLY* scrypt (e.g. --algo scrypt) WITH TENEBRIX\n"
"\tscrypt is the default now" },
"(-a XXX) Only scrypt (e.g. --algo scrypt) is supported" },
{ "quiet",
"(-q) Disable per-thread hashmeter output (default: off)" },
@ -153,6 +153,9 @@ static struct option_help options_help[] = {
"(-s N) Upper bound on time spent scanning current work,\n"
"\tin seconds. (default: 5)" },
{ "timeout N",
"(-T N) Connection timeout, in seconds (default: 180)" },
#ifdef HAVE_SYSLOG_H
{ "syslog",
"Use system log for output messages (default: standard error)" },
@ -191,6 +194,7 @@ static struct option options[] = {
{ "retries", 1, NULL, 'r' },
{ "retry-pause", 1, NULL, 'R' },
{ "scantime", 1, NULL, 's' },
{ "timeout", 1, NULL, 'T' },
#ifdef HAVE_SYSLOG_H
{ "syslog", 0, NULL, 1004 },
#endif
@ -447,7 +451,7 @@ static void hashmeter(int thr_id, const struct timeval *diff,
secs = (double)diff->tv_sec + ((double)diff->tv_usec / 1000000.0);
if (!opt_quiet)
applog(LOG_INFO, "thread %d: %lu hashes, %.2f khash/sec",
applog(LOG_INFO, "thread %d: %lu hashes, %.2f khash/s",
thr_id, hashes_done,
khashes / secs);
}
@ -651,15 +655,7 @@ static void *longpoll_thread(void *userdata)
applog(LOG_INFO, "LONGPOLL detected new block");
restart_threads();
} else {
if (failures++ < 10) {
sleep(30);
applog(LOG_ERR,
"longpoll failed, sleeping for 30s");
} else {
applog(LOG_ERR,
"longpoll failed, ending thread");
goto out;
}
/* longpoll failed, keep trying */
}
}
@ -754,6 +750,13 @@ static void parse_arg (int key, char *arg)
opt_scantime = v;
break;
case 'T':
v = atoi(arg);
if (v < 1 || v > 99999) /* sanity check */
show_usage();
opt_timeout = v;
break;
case 't':
v = atoi(arg);
if (v < 1 || v > 9999) /* sanity check */
@ -837,7 +840,7 @@ static void parse_cmdline(int argc, char *argv[])
int key;
while (1) {
key = getopt_long(argc, argv, "a:c:qDPr:s:t:h?", options, NULL);
key = getopt_long(argc, argv, "a:c:qDPr:s:T:t:h?", options, NULL);
if (key < 0)
break;

View file

@ -137,6 +137,7 @@ timeval_subtract (struct timeval *result, struct timeval *x, struct timeval *y);
extern bool fulltest(const unsigned char *hash, const unsigned char *target);
extern int opt_scantime;
extern int opt_timeout;
extern bool want_longpoll;
extern bool have_longpoll;
struct thread_q;

5
util.c
View file

@ -211,7 +211,7 @@ json_t *json_rpc_call(CURL *curl, const char *url,
struct curl_slist *headers = NULL;
char len_hdr[64], user_agent_hdr[128];
char curl_err_str[CURL_ERROR_SIZE];
long timeout = longpoll ? (60 * 60) : (60 * 10);
long timeout = opt_timeout;
struct header_info hi = { };
bool lp_scanning = false;
@ -262,7 +262,10 @@ json_t *json_rpc_call(CURL *curl, const char *url,
rc = curl_easy_perform(curl);
if (rc) {
if (!(longpoll && rc == CURLE_OPERATION_TIMEDOUT))
applog(LOG_ERR, "HTTP request failed: %s", curl_err_str);
if (longpoll && rc != CURLE_OPERATION_TIMEDOUT)
sleep(30);
goto err_out;
}