Add an option to ignore redirection requests
This commit is contained in:
parent
c46726b4b7
commit
42a002c741
4 changed files with 26 additions and 7 deletions
|
@ -113,6 +113,7 @@ static const char *algo_names[] = {
|
||||||
bool opt_debug = false;
|
bool opt_debug = false;
|
||||||
bool opt_protocol = false;
|
bool opt_protocol = false;
|
||||||
static bool opt_benchmark = false;
|
static bool opt_benchmark = false;
|
||||||
|
bool opt_redirect = true;
|
||||||
bool want_longpoll = true;
|
bool want_longpoll = true;
|
||||||
bool have_longpoll = false;
|
bool have_longpoll = false;
|
||||||
bool want_stratum = true;
|
bool want_stratum = true;
|
||||||
|
@ -182,6 +183,7 @@ Options:\n\
|
||||||
long polling is unavailable, in seconds (default: 5)\n\
|
long polling is unavailable, in seconds (default: 5)\n\
|
||||||
--no-longpoll disable X-Long-Polling support\n\
|
--no-longpoll disable X-Long-Polling support\n\
|
||||||
--no-stratum disable X-Stratum support\n\
|
--no-stratum disable X-Stratum support\n\
|
||||||
|
--no-redirect ignore requests to change the URL of the mining server\n\
|
||||||
-q, --quiet disable per-thread hashmeter output\n\
|
-q, --quiet disable per-thread hashmeter output\n\
|
||||||
-D, --debug enable debug output\n\
|
-D, --debug enable debug output\n\
|
||||||
-P, --protocol-dump verbose dump of protocol-level activities\n"
|
-P, --protocol-dump verbose dump of protocol-level activities\n"
|
||||||
|
@ -220,6 +222,7 @@ static struct option const options[] = {
|
||||||
{ "debug", 0, NULL, 'D' },
|
{ "debug", 0, NULL, 'D' },
|
||||||
{ "help", 0, NULL, 'h' },
|
{ "help", 0, NULL, 'h' },
|
||||||
{ "no-longpoll", 0, NULL, 1003 },
|
{ "no-longpoll", 0, NULL, 1003 },
|
||||||
|
{ "no-redirect", 0, NULL, 1009 },
|
||||||
{ "no-stratum", 0, NULL, 1007 },
|
{ "no-stratum", 0, NULL, 1007 },
|
||||||
{ "pass", 1, NULL, 'p' },
|
{ "pass", 1, NULL, 'p' },
|
||||||
{ "protocol-dump", 0, NULL, 'P' },
|
{ "protocol-dump", 0, NULL, 'P' },
|
||||||
|
@ -1233,6 +1236,9 @@ static void parse_arg (int key, char *arg)
|
||||||
case 1007:
|
case 1007:
|
||||||
want_stratum = false;
|
want_stratum = false;
|
||||||
break;
|
break;
|
||||||
|
case 1009:
|
||||||
|
opt_redirect = false;
|
||||||
|
break;
|
||||||
case 'S':
|
case 'S':
|
||||||
use_syslog = true;
|
use_syslog = true;
|
||||||
break;
|
break;
|
||||||
|
|
1
miner.h
1
miner.h
|
@ -169,6 +169,7 @@ struct work_restart {
|
||||||
|
|
||||||
extern bool opt_debug;
|
extern bool opt_debug;
|
||||||
extern bool opt_protocol;
|
extern bool opt_protocol;
|
||||||
|
extern bool opt_redirect;
|
||||||
extern int opt_timeout;
|
extern int opt_timeout;
|
||||||
extern bool want_longpoll;
|
extern bool want_longpoll;
|
||||||
extern bool have_longpoll;
|
extern bool have_longpoll;
|
||||||
|
|
3
minerd.1
3
minerd.1
|
@ -109,6 +109,9 @@ Print a help message and exit.
|
||||||
\fB\-\-no\-longpoll\fR
|
\fB\-\-no\-longpoll\fR
|
||||||
Do not use long polling.
|
Do not use long polling.
|
||||||
.TP
|
.TP
|
||||||
|
\fB\-\-no\-redirect\fR
|
||||||
|
Ignore requests from the server to switch to a different URL.
|
||||||
|
.TP
|
||||||
\fB\-\-no\-stratum\fR
|
\fB\-\-no\-stratum\fR
|
||||||
Do not switch to Stratum, even if the server advertises support for it.
|
Do not switch to Stratum, even if the server advertises support for it.
|
||||||
.TP
|
.TP
|
||||||
|
|
23
util.c
23
util.c
|
@ -330,7 +330,8 @@ json_t *json_rpc_call(CURL *curl, const char *url,
|
||||||
curl_easy_setopt(curl, CURLOPT_SEEKDATA, &upload_data);
|
curl_easy_setopt(curl, CURLOPT_SEEKDATA, &upload_data);
|
||||||
#endif
|
#endif
|
||||||
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);
|
if (opt_redirect)
|
||||||
|
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
|
||||||
curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout);
|
curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout);
|
||||||
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);
|
||||||
|
@ -1080,6 +1081,7 @@ static bool stratum_set_difficulty(struct stratum_ctx *sctx, json_t *params)
|
||||||
static bool stratum_reconnect(struct stratum_ctx *sctx, json_t *params)
|
static bool stratum_reconnect(struct stratum_ctx *sctx, json_t *params)
|
||||||
{
|
{
|
||||||
json_t *port_val;
|
json_t *port_val;
|
||||||
|
char *url;
|
||||||
const char *host;
|
const char *host;
|
||||||
int port;
|
int port;
|
||||||
|
|
||||||
|
@ -1091,13 +1093,20 @@ static bool stratum_reconnect(struct stratum_ctx *sctx, json_t *params)
|
||||||
port = json_integer_value(port_val);
|
port = json_integer_value(port_val);
|
||||||
if (!host || !port)
|
if (!host || !port)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
url = malloc(32 + strlen(host));
|
||||||
|
sprintf(url, "stratum+tcp://%s:%d", host, port);
|
||||||
|
|
||||||
|
if (!opt_redirect) {
|
||||||
|
applog(LOG_INFO, "Ignoring request to reconnect to %s", url);
|
||||||
|
free(url);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
applog(LOG_NOTICE, "Server requested reconnection to %s", url);
|
||||||
|
|
||||||
free(sctx->url);
|
free(sctx->url);
|
||||||
sctx->url = malloc(32 + strlen(host));
|
sctx->url = url;
|
||||||
sprintf(sctx->url, "stratum+tcp://%s:%d", host, port);
|
|
||||||
|
|
||||||
applog(LOG_NOTICE, "Server requested reconnection to %s", sctx->url);
|
|
||||||
|
|
||||||
stratum_disconnect(sctx);
|
stratum_disconnect(sctx);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Reference in a new issue