X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;ds=sidebyside;f=lightning%2Fsrc%2Fln%2Fwire.rs;h=dc09bbe237384da2523bd91705774648796983e7;hb=caed31a1e65d1c605dc8beecb8ffa90f05b492db;hp=15a218060e6ffc52b4843272c3d6fa64113408b2;hpb=40a1aef32299226abf39febbdfbbe999ce6a7b96;p=rust-lightning diff --git a/lightning/src/ln/wire.rs b/lightning/src/ln/wire.rs index 15a21806..dc09bbe2 100644 --- a/lightning/src/ln/wire.rs +++ b/lightning/src/ln/wire.rs @@ -16,6 +16,13 @@ use ln::msgs; use util::ser::{Readable, Writeable, Writer}; +/// Maximum Lightning message data length according to +/// [BOLT-8](https://github.com/lightningnetwork/lightning-rfc/blob/v1.0/08-transport.md#lightning-message-specification): +/// "The maximum size of any Lightning message MUST NOT exceed 65535 bytes. +/// A maximum size of 65535 simplifies testing, makes memory management easier, +/// and helps mitigate memory-exhaustion attacks." +pub const LN_MAX_MSG_LEN: usize = std::u16::MAX as usize; // Must be equal to 65535 + /// A Lightning message returned by [`read`] when decoding bytes received over the wire. Each /// variant contains a message from [`ln::msgs`] or otherwise the message type if unknown. /// @@ -311,6 +318,12 @@ mod tests { // Big-endian wire encoding of Pong message (type = 19, byteslen = 2). const ENCODED_PONG: [u8; 6] = [0u8, 19u8, 0u8, 2u8, 0u8, 0u8]; + #[test] + fn max_msg_len() { + assert_eq!(LN_MAX_MSG_LEN, 65535); + assert_eq!(LN_MAX_MSG_LEN, std::u16::MAX as usize); + } + #[test] fn read_empty_buffer() { let buffer = [];