Uh oh!
There was an error while loading. Please reload this page.
Pad all sent TCP frames to the same size via ChunkedMessageQueue - #4446
Pad all sent TCP frames to the same size via ChunkedMessageQueue#4446tnull wants to merge 3 commits into
ChunkedMessageQueue#4446Conversation
👋 Thanks for assigning @TheBlueMatt as a reviewer! |
ChunkedMessageQueue for message paddingChunkedMessageQueue48bb745 to
64e28dbCompareb3c711d to
8dee6f5CompareCodecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@## main #4446 +/- ##
==========================================
+ Coverage 85.88% 85.98% +0.10%
==========================================
Files 159 159 Lines 104302 104850 +548 Branches 104302 104850 +548 ==========================================
+ Hits 89578 90157 +579 + Misses 12222 12188 -34 - Partials 2502 2505 +3
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Add `BorrowedVecWriter`, `encrypt_with_header_0s_at`, `encrypt_message_into`, and `encrypt_buffer_into` to `PeerChannelEncryptor` to support encrypting messages directly into a shared buffer at arbitrary offsets. Define `ChunkedMessageQueue` struct in `peer_handler` with a contiguous byte buffer that will replace the current `pending_outbound_buffer` / `gossip_broadcast_buffer` dual-queue system. The queue pads all outgoing traffic into fixed-size `CHUNK_SIZE` chunks using Ping messages as filler, so an observer sees only constant-size writes on the wire. Ping padding uses `ponglen = 65533` to suppress Pong responses per BOLT-1. Co-Authored-By: HAL 9000
Replace `pending_outbound_buffer`, `pending_outbound_buffer_first_msg_offset`, and `gossip_broadcast_buffer` fields in `Peer` with a single `message_queue: ChunkedMessageQueue`. Co-Authored-By: HAL 9000
Add five new tests: - `test_chunked_message_queue_ping_padding`: verifies chunk alignment for various message sizes - `test_chunked_message_queue_small_remainder_overflow`: verifies the two-Ping edge case when remainder < `MIN_ENCRYPTED_PING_SIZE` - `test_chunked_message_queue_chunk_alignment`: verifies alignment after encrypting multiple real messages - `test_chunked_message_queue_buffer_compaction`: verifies `maybe_compact` correctly drains sent bytes - `test_chunked_message_queue_pending_msg_bytes_tracking`: verifies that `pending_msg_bytes` tracks real message bytes and is unaffected by padding Also extract a `get_test_encryptor` helper to reduce boilerplate across the new tests. Co-Authored-By: HAL 9000 Signed-off-by: Elias Rohrer <dev@tnull.de>
ldk-reviews-bot
commented
Mar 2, 2026
🔔 1st Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Mar 4, 2026
🔔 2nd Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Mar 7, 2026
🔔 3rd Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Mar 9, 2026
🔔 4th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Mar 11, 2026
🔔 5th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Mar 14, 2026
🔔 6th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Mar 16, 2026
🔔 7th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Mar 18, 2026
🔔 8th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Mar 21, 2026
🔔 9th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Mar 23, 2026
🔔 10th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Mar 25, 2026
🔔 11th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Mar 28, 2026
🔔 12th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
May 2, 2026
🔔 27th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
May 4, 2026
🔔 28th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
May 6, 2026
🔔 29th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
May 9, 2026
🔔 30th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
May 11, 2026
🔔 31st Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
May 13, 2026
🔔 32nd Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
May 16, 2026
🔔 33rd Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
May 18, 2026
🔔 34th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
May 20, 2026
🔔 35th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
May 23, 2026
🔔 36th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
May 25, 2026
🔔 37th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
May 27, 2026
🔔 38th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
May 30, 2026
🔔 39th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Jun 1, 2026
🔔 40th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
tnull
commented
Jun 2, 2026
Relatedly, good that we bumped this to 0.4, should make the rollout more reasonable:
|
ldk-reviews-bot
commented
Jun 3, 2026
🔔 41st Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Jun 6, 2026
🔔 42nd Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Jun 8, 2026
🔔 43rd Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Jun 10, 2026
🔔 44th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Jun 13, 2026
🔔 45th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Jun 15, 2026
🔔 46th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Jun 17, 2026
🔔 47th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Jun 20, 2026
🔔 48th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Jun 22, 2026
🔔 49th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Jun 24, 2026
🔔 50th Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Jun 27, 2026
🔔 51st Reminder Hey @TheBlueMatt! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Jul 3, 2026
Hi @tnull, Thanks for your contributions to After too many struggles with bugs, outages, contributor bans, and, finally, a multi-week CI ban, the rust-lightning project is moving off of GitHub for day-to-day development. You can still file issues and access the git tree here, but PRs will now take place exclusively at https://git.rust-bitcoin.org/. As such, this PR has been migrated to https://git.rust-bitcoin.org/lightningdevkit/rust-lightning/pulls/4446 If you log in using GitHub (or otherwise link your GitHub account from https://git.rust-bitcoin.org/user/settings/security), ownership of your PRs, issues, and comments will automatically transfer. To push updates to this PR, you'll need to use |

In this PR we implement padding all sent TCP frames to the same size by ensuring all writes happen in chunks of length
CHUNK_SIZEand any remainders are filled by adequately sizedPingmessages.This approach operating on the network-layer was discussed in the spec call and seems to be preferred by everybody. Hence it supersedes the approach taken in #4248.
TODO