diff options
| author | Fabian Jahr <[email protected]> | 2019-10-14 00:19:47 +0200 |
|---|---|---|
| committer | Fabian Jahr <[email protected]> | 2019-10-15 18:01:59 +0200 |
| commit | b3b26e149c34fee9c7ae8548c6e547ec6254b441 (patch) | |
| tree | d5124d18555af02922b0d087ce9bc999d2cfa3b6 /src/bitcoin-cli.cpp | |
| parent | Merge #16947: doc: Doxygen-friendly script/descriptor.h comments (diff) | |
| download | discoin-b3b26e149c34fee9c7ae8548c6e547ec6254b441.tar.xz discoin-b3b26e149c34fee9c7ae8548c6e547ec6254b441.zip | |
rpc: fix -rpcclienttimeout 0 option
Diffstat (limited to 'src/bitcoin-cli.cpp')
| -rw-r--r-- | src/bitcoin-cli.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/bitcoin-cli.cpp b/src/bitcoin-cli.cpp index 73773c4ec..71b40dca1 100644 --- a/src/bitcoin-cli.cpp +++ b/src/bitcoin-cli.cpp @@ -316,7 +316,20 @@ static UniValue CallRPC(BaseRequestHandler *rh, const std::string& strMethod, co // Synchronously look up hostname raii_evhttp_connection evcon = obtain_evhttp_connection_base(base.get(), host, port); - evhttp_connection_set_timeout(evcon.get(), gArgs.GetArg("-rpcclienttimeout", DEFAULT_HTTP_CLIENT_TIMEOUT)); + + // Set connection timeout + { + const int timeout = gArgs.GetArg("-rpcclienttimeout", DEFAULT_HTTP_CLIENT_TIMEOUT); + if (timeout > 0) { + evhttp_connection_set_timeout(evcon.get(), timeout); + } else { + // Indefinite request timeouts are not possible in libevent-http, so we + // set the timeout to a very long time period instead. + + constexpr int YEAR_IN_SECONDS = 31556952; // Average length of year in Gregorian calendar + evhttp_connection_set_timeout(evcon.get(), 5 * YEAR_IN_SECONDS); + } + } HTTPReply response; raii_evhttp_request req = obtain_evhttp_request(http_request_done, (void*)&response); |