network: handle reorg (sooner) in case of multiple forks at given height (#4537)
This commit is contained in:
@@ -897,6 +897,7 @@ class Network(util.DaemonThread):
|
|||||||
self.connection_down(interface.server)
|
self.connection_down(interface.server)
|
||||||
return
|
return
|
||||||
height = header.get('block_height')
|
height = header.get('block_height')
|
||||||
|
#interface.print_error('got header', height, blockchain.hash_header(header))
|
||||||
if interface.request != height:
|
if interface.request != height:
|
||||||
interface.print_error("unsolicited header",interface.request, height)
|
interface.print_error("unsolicited header",interface.request, height)
|
||||||
self.connection_down(interface.server)
|
self.connection_down(interface.server)
|
||||||
@@ -952,7 +953,7 @@ class Network(util.DaemonThread):
|
|||||||
elif branch.parent().check_header(header):
|
elif branch.parent().check_header(header):
|
||||||
interface.print_error('reorg', interface.bad, interface.tip)
|
interface.print_error('reorg', interface.bad, interface.tip)
|
||||||
interface.blockchain = branch.parent()
|
interface.blockchain = branch.parent()
|
||||||
next_height = None
|
next_height = interface.bad
|
||||||
else:
|
else:
|
||||||
interface.print_error('checkpoint conflicts with existing fork', branch.path())
|
interface.print_error('checkpoint conflicts with existing fork', branch.path())
|
||||||
branch.write(b'', 0)
|
branch.write(b'', 0)
|
||||||
@@ -1086,6 +1087,7 @@ class Network(util.DaemonThread):
|
|||||||
except InvalidHeader:
|
except InvalidHeader:
|
||||||
self.connection_down(interface.server)
|
self.connection_down(interface.server)
|
||||||
return
|
return
|
||||||
|
#interface.print_error('notified of header', height, blockchain.hash_header(header))
|
||||||
if height < self.max_checkpoint():
|
if height < self.max_checkpoint():
|
||||||
self.connection_down(interface.server)
|
self.connection_down(interface.server)
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user