Skip to content

Commit df31474

Browse files
f loop until writes return 0 + nit
1 parent 9ee1800 commit df31474

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

lightning/src/util/chacha20poly1305rfc.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,12 +130,16 @@ impl<'a, W: Writer> Writer for ChaChaPolyWriter<'a, W> {
130130
// `ChaCha20Poly1305RFC::finish_and_get_tag` can be called to retrieve the tag after all writes
131131
// complete.
132132
fn write_all(&mut self, src: &[u8]) -> Result<(), io::Error> {
133-
let num_writes = (src.len() + (8192 - 1)) / 8192;
134-
for i in 0..num_writes {
133+
let mut src_idx = 0;
134+
loop {
135135
let mut write_buffer = [0; 8192];
136-
let bytes_written = (&mut write_buffer[..]).write(&src[i * 8192..])?;
136+
let bytes_written = (&mut write_buffer[..]).write(&src[src_idx..]).expect("In-memory writes can't fail");
137+
if bytes_written == 0 {
138+
break
139+
}
137140
self.chacha.encrypt_in_place(&mut write_buffer[..bytes_written]);
138141
self.write.write_all(&write_buffer[..bytes_written])?;
142+
src_idx += bytes_written;
139143
}
140144
Ok(())
141145
}

0 commit comments

Comments
 (0)