mirror of
https://github.com/LBRYFoundation/LBRY-Vault.git
synced 2025-08-27 07:23:25 +00:00
lnbase: fix read_message
This commit is contained in:
parent
6a8e5d5954
commit
1f6646fa25
1 changed files with 13 additions and 15 deletions
|
@ -579,6 +579,7 @@ class Peer(PrintError):
|
||||||
self.network = network
|
self.network = network
|
||||||
self.channel_db = channel_db
|
self.channel_db = channel_db
|
||||||
self.path_finder = path_finder
|
self.path_finder = path_finder
|
||||||
|
self.read_buffer = b''
|
||||||
self.ping_time = 0
|
self.ping_time = 0
|
||||||
self.futures = ["channel_accepted",
|
self.futures = ["channel_accepted",
|
||||||
"funding_signed",
|
"funding_signed",
|
||||||
|
@ -623,24 +624,21 @@ class Peer(PrintError):
|
||||||
async def read_message(self):
|
async def read_message(self):
|
||||||
rn_l, rk_l = self.rn()
|
rn_l, rk_l = self.rn()
|
||||||
rn_m, rk_m = self.rn()
|
rn_m, rk_m = self.rn()
|
||||||
read_buffer = b''
|
|
||||||
while True:
|
while True:
|
||||||
s = await self.reader.read(1)
|
if len(self.read_buffer) >= 18:
|
||||||
|
lc = self.read_buffer[:18]
|
||||||
|
l = aead_decrypt(rk_l, rn_l, b'', lc)
|
||||||
|
length = int.from_bytes(l, 'big')
|
||||||
|
offset = 18 + length + 16
|
||||||
|
if len(self.read_buffer) >= offset:
|
||||||
|
c = self.read_buffer[18:offset]
|
||||||
|
self.read_buffer = self.read_buffer[offset:]
|
||||||
|
msg = aead_decrypt(rk_m, rn_m, b'', c)
|
||||||
|
return msg
|
||||||
|
s = await self.reader.read(2**10)
|
||||||
if not s:
|
if not s:
|
||||||
raise LightningPeerConnectionClosed()
|
raise LightningPeerConnectionClosed()
|
||||||
read_buffer += s
|
self.read_buffer += s
|
||||||
if len(read_buffer) < 18:
|
|
||||||
continue
|
|
||||||
lc = read_buffer[:18]
|
|
||||||
l = aead_decrypt(rk_l, rn_l, b'', lc)
|
|
||||||
length = int.from_bytes(l, 'big')
|
|
||||||
offset = 18 + length + 16
|
|
||||||
if len(read_buffer) < offset:
|
|
||||||
continue
|
|
||||||
c = read_buffer[18:offset]
|
|
||||||
read_buffer = read_buffer[offset:]
|
|
||||||
msg = aead_decrypt(rk_m, rn_m, b'', c)
|
|
||||||
return msg
|
|
||||||
|
|
||||||
async def handshake(self):
|
async def handshake(self):
|
||||||
hs = HandshakeState(self.pubkey)
|
hs = HandshakeState(self.pubkey)
|
||||||
|
|
Loading…
Add table
Reference in a new issue