network: tighten checks of server responses for type/sanity
This commit is contained in:
@@ -418,20 +418,15 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
|
||||
def is_connecting(self):
|
||||
return self.connection_status == 'connecting'
|
||||
|
||||
async def _request_server_info(self, interface):
|
||||
async def _request_server_info(self, interface: 'Interface'):
|
||||
await interface.ready
|
||||
session = interface.session
|
||||
|
||||
async def get_banner():
|
||||
self.banner = await session.send_request('server.banner')
|
||||
self.banner = await interface.get_server_banner()
|
||||
self.notify('banner')
|
||||
async def get_donation_address():
|
||||
addr = await session.send_request('server.donation_address')
|
||||
if not bitcoin.is_address(addr):
|
||||
if addr: # ignore empty string
|
||||
self.logger.info(f"invalid donation address from server: {repr(addr)}")
|
||||
addr = ''
|
||||
self.donation_address = addr
|
||||
self.donation_address = await interface.get_donation_address()
|
||||
async def get_server_peers():
|
||||
server_peers = await session.send_request('server.peers.subscribe')
|
||||
random.shuffle(server_peers)
|
||||
@@ -441,12 +436,7 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
|
||||
self.server_peers = parse_servers(server_peers)
|
||||
self.notify('servers')
|
||||
async def get_relay_fee():
|
||||
relayfee = await session.send_request('blockchain.relayfee')
|
||||
if relayfee is None:
|
||||
self.relay_fee = None
|
||||
else:
|
||||
relayfee = int(relayfee * COIN)
|
||||
self.relay_fee = max(0, relayfee)
|
||||
self.relay_fee = await interface.get_relay_fee()
|
||||
|
||||
async with TaskGroup() as group:
|
||||
await group.spawn(get_banner)
|
||||
@@ -456,9 +446,8 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
|
||||
await group.spawn(self._request_fee_estimates(interface))
|
||||
|
||||
async def _request_fee_estimates(self, interface):
|
||||
session = interface.session
|
||||
self.config.requested_fee_estimates()
|
||||
histogram = await session.send_request('mempool.get_fee_histogram')
|
||||
histogram = await interface.get_fee_histogram()
|
||||
self.config.mempool_fees = histogram
|
||||
self.logger.info(f'fee_histogram {histogram}')
|
||||
self.notify('fee_histogram')
|
||||
|
||||
Reference in New Issue
Block a user