Skip to content

Commit 525707a

Browse files
committed
Add electrum server setting maximum_headers.
1 parent 7b41abb commit 525707a

3 files changed

Lines changed: 20 additions & 1 deletion

File tree

include/bitcoin/server/settings.hpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,17 @@ class BCS_API settings
8484
virtual bool enabled() const NOEXCEPT;
8585
};
8686

87+
struct electrum_server
88+
: public network::settings::tls_server
89+
{
90+
using base = network::settings::tls_server;
91+
using base::base;
92+
93+
// Maximum number of headers the server will return in single request.
94+
// Recommended to be multiple of difficulty retarget period, e.g. 2016.
95+
uint32_t maximum_headers{ 10 * 2016 };
96+
};
97+
8798
/// html (http/s) document server settings (has directory/default).
8899
/// This is for web servers that expose a local file system directory.
89100
struct html_server
@@ -128,7 +139,7 @@ class BCS_API settings
128139
network::settings::http_server bitcoind{ "bitcoind" };
129140

130141
/// electrum compat interface (tcp/s, json-rpc-v2)
131-
network::settings::tls_server electrum{ "electrum" };
142+
electrum_server electrum{ "electrum" };
132143

133144
/// stratum v1 compat interface (tcp/s, json-rpc-v1, auth handshake)
134145
network::settings::tls_server stratum_v1{ "stratum_v1" };

src/parser.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1129,6 +1129,11 @@ options_metadata parser::load_settings() THROWS
11291129
value<uint32_t>(&configured.server.electrum.maximum_request),
11301130
"The maximum allowed request size, defaults to '4000000'."
11311131
)
1132+
(
1133+
"electrum.maximum_headers",
1134+
value<uint32_t>(&configured.server.electrum.maximum_headers),
1135+
"The maximum allowed header request cound, defaults to '20160'."
1136+
)
11321137

11331138
/* [stratum_v1] */
11341139
(

test/settings.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,9 @@ BOOST_AUTO_TEST_CASE(server__electrum_server__defaults__expected)
230230
BOOST_REQUIRE(server.cert_path.empty());
231231
BOOST_REQUIRE(server.key_path.empty());
232232
BOOST_REQUIRE(server.key_pass.empty());
233+
234+
// electrum_server
235+
BOOST_REQUIRE_EQUAL(server.maximum_headers, 10u * 2016u);
233236
}
234237

235238
BOOST_AUTO_TEST_CASE(server__stratum_v1_server__defaults__expected)

0 commit comments

Comments
 (0)