mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-25 02:33:24 -03:00
fix: handle invalid rpcbind port earlier
Previously, when an invalid port was specified in `-rpcbind`, the `SplitHostPort()` return value in `HTTPBindAddresses()` was ignored and attempt would be made to bind to the default rpcbind port (with the host/port treated as a host). This rearranges port checking code in `AppInitMain()` to handle the invalid port before reaching `HTTPBindAddresses()`. Also adjusts associated functional tests.
This commit is contained in:
parent
83b67f2e6d
commit
d38e3aed89
2 changed files with 5 additions and 6 deletions
|
@ -1279,6 +1279,9 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
|
||||||
RegisterZMQRPCCommands(tableRPC);
|
RegisterZMQRPCCommands(tableRPC);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Check port numbers
|
||||||
|
if (!CheckHostPortOptions(args)) return false;
|
||||||
|
|
||||||
/* Start the RPC server already. It will be started in "warmup" mode
|
/* Start the RPC server already. It will be started in "warmup" mode
|
||||||
* and not really process calls already (but it will signify connections
|
* and not really process calls already (but it will signify connections
|
||||||
* that the server is there and will be ready later). Warmup mode will
|
* that the server is there and will be ready later). Warmup mode will
|
||||||
|
@ -1369,9 +1372,6 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
|
||||||
validation_signals.RegisterValidationInterface(fee_estimator);
|
validation_signals.RegisterValidationInterface(fee_estimator);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check port numbers
|
|
||||||
if (!CheckHostPortOptions(args)) return false;
|
|
||||||
|
|
||||||
for (const std::string& socket_addr : args.GetArgs("-bind")) {
|
for (const std::string& socket_addr : args.GetArgs("-bind")) {
|
||||||
std::string host_out;
|
std::string host_out;
|
||||||
uint16_t port_out{0};
|
uint16_t port_out{0};
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
|
|
||||||
from test_framework.netutil import all_interfaces, addr_to_hex, get_bind_addrs, test_ipv6_local
|
from test_framework.netutil import all_interfaces, addr_to_hex, get_bind_addrs, test_ipv6_local
|
||||||
from test_framework.test_framework import BitcoinTestFramework, SkipTest
|
from test_framework.test_framework import BitcoinTestFramework, SkipTest
|
||||||
from test_framework.test_node import ErrorMatch
|
|
||||||
from test_framework.util import assert_equal, assert_raises_rpc_error, get_rpc_proxy, rpc_port, rpc_url
|
from test_framework.util import assert_equal, assert_raises_rpc_error, get_rpc_proxy, rpc_port, rpc_url
|
||||||
|
|
||||||
class RPCBindTest(BitcoinTestFramework):
|
class RPCBindTest(BitcoinTestFramework):
|
||||||
|
@ -55,9 +54,9 @@ class RPCBindTest(BitcoinTestFramework):
|
||||||
base_args = ['-disablewallet', '-nolisten']
|
base_args = ['-disablewallet', '-nolisten']
|
||||||
if allow_ips:
|
if allow_ips:
|
||||||
base_args += ['-rpcallowip=' + x for x in allow_ips]
|
base_args += ['-rpcallowip=' + x for x in allow_ips]
|
||||||
init_error = 'Error' # generic error will be adjusted in next commit
|
init_error = 'Error: Invalid port specified in -rpcbind: '
|
||||||
for addr in addresses:
|
for addr in addresses:
|
||||||
self.nodes[0].assert_start_raises_init_error(base_args + [f'-rpcbind={addr}'], init_error, ErrorMatch.PARTIAL_REGEX)
|
self.nodes[0].assert_start_raises_init_error(base_args + [f'-rpcbind={addr}'], init_error + f"'{addr}'")
|
||||||
|
|
||||||
def run_allowip_test(self, allow_ips, rpchost, rpcport):
|
def run_allowip_test(self, allow_ips, rpchost, rpcport):
|
||||||
'''
|
'''
|
||||||
|
|
Loading…
Add table
Reference in a new issue