- (4, read_adapter, (option: LengthReadableArgs, rho))
+ (4, read_adapter, (option: LengthReadableArgs, rho)),
+ }, |msg_type, msg_reader| {
+ if msg_type < 64 { return Ok(false) }
+ // Don't allow reading more than one data TLV from an onion message.
+ if message_type.is_some() { return Err(DecodeError::InvalidValue) }
+
+ message_type = Some(msg_type);
+ match handler.read_custom_message(msg_type, msg_reader) {
+ Ok(Some(msg)) => {
+ message = Some(msg);
+ Ok(true)
+ },
+ Ok(None) => Ok(false),
+ Err(e) => Err(e),
+ }