@@ -121,6 +121,8 @@ pub enum BuildError {
121
121
InvalidChannelMonitor ,
122
122
/// The given listening addresses are invalid, e.g. too many were passed.
123
123
InvalidListeningAddresses ,
124
+ /// The provided alias is invalid
125
+ InvalidNodeAlias ,
124
126
/// We failed to read data from the [`KVStore`].
125
127
///
126
128
/// [`KVStore`]: lightning::util::persist::KVStore
@@ -139,8 +141,6 @@ pub enum BuildError {
139
141
WalletSetupFailed ,
140
142
/// We failed to setup the logger.
141
143
LoggerSetupFailed ,
142
- /// The provided alias is invalid
143
- InvalidNodeAlias ( String ) ,
144
144
}
145
145
146
146
impl fmt:: Display for BuildError {
@@ -161,9 +161,7 @@ impl fmt::Display for BuildError {
161
161
Self :: KVStoreSetupFailed => write ! ( f, "Failed to setup KVStore." ) ,
162
162
Self :: WalletSetupFailed => write ! ( f, "Failed to setup onchain wallet." ) ,
163
163
Self :: LoggerSetupFailed => write ! ( f, "Failed to setup the logger." ) ,
164
- Self :: InvalidNodeAlias ( ref reason) => {
165
- write ! ( f, "Given node alias is invalid: {}" , reason)
166
- } ,
164
+ Self :: InvalidNodeAlias => write ! ( f, "Given node alias is invalid." ) ,
167
165
}
168
166
}
169
167
}
@@ -316,9 +314,7 @@ impl NodeBuilder {
316
314
317
315
/// Sets the alias the [`Node`] will use in its announcement. The provided
318
316
/// alias must be a valid UTF-8 string.
319
- pub fn set_node_alias < T : Into < String > > (
320
- & mut self , node_alias : T ,
321
- ) -> Result < & mut Self , BuildError > {
317
+ pub fn set_node_alias ( & mut self , node_alias : String ) -> Result < & mut Self , BuildError > {
322
318
let node_alias = sanitize_alias ( node_alias) . map_err ( |e| e) ?;
323
319
324
320
self . config . node_alias = Some ( node_alias) ;
@@ -522,6 +518,11 @@ impl ArcedNodeBuilder {
522
518
self . inner . write ( ) . unwrap ( ) . set_log_level ( level) ;
523
519
}
524
520
521
+ /// Sets the node alias.
522
+ pub fn set_node_alias ( & self , node_alias : String ) -> Result < ( ) , BuildError > {
523
+ self . inner . write ( ) . unwrap ( ) . set_node_alias ( node_alias) . map ( |_| ( ) )
524
+ }
525
+
525
526
/// Builds a [`Node`] instance with a [`SqliteStore`] backend and according to the options
526
527
/// previously configured.
527
528
pub fn build ( & self ) -> Result < Arc < Node > , BuildError > {
@@ -1073,21 +1074,12 @@ fn sanitize_alias<T: Into<String>>(node_alias: T) -> Result<String, BuildError>
1073
1074
let node_alias: String = node_alias. into ( ) ;
1074
1075
let alias = node_alias. trim ( ) ;
1075
1076
1076
- // Alias is non-empty
1077
- if alias. is_empty ( ) {
1078
- return Err ( BuildError :: InvalidNodeAlias ( "Node alias cannot be empty." . to_string ( ) ) ) ;
1079
- }
1080
-
1081
- // Alias valid up to first null byte
1082
- let first_null = alias. as_bytes ( ) . iter ( ) . position ( |b| * b == 0 ) . unwrap_or ( alias. len ( ) ) ;
1083
- let actual_alias = alias. split_at ( first_null) . 0 ;
1084
-
1085
1077
// Alias must be 32-bytes long or less
1086
- if actual_alias . as_bytes ( ) . len ( ) > 32 {
1087
- return Err ( BuildError :: InvalidNodeAlias ( "Node alias cannot exceed 32 bytes." . to_string ( ) ) ) ;
1078
+ if alias . as_bytes ( ) . len ( ) > 32 {
1079
+ return Err ( BuildError :: InvalidNodeAlias ) ;
1088
1080
}
1089
1081
1090
- Ok ( actual_alias . to_string ( ) )
1082
+ Ok ( alias . to_string ( ) )
1091
1083
}
1092
1084
1093
1085
#[ cfg( test) ]
@@ -1096,38 +1088,32 @@ mod tests {
1096
1088
1097
1089
use super :: NodeBuilder ;
1098
1090
1099
- fn create_node_with_alias < T : Into < String > > ( alias : T ) -> Result < Node , BuildError > {
1100
- NodeBuilder :: new ( ) . set_node_alias ( & alias. into ( ) ) ?. build ( )
1091
+ fn create_node_with_alias ( alias : String ) -> Result < Node , BuildError > {
1092
+ NodeBuilder :: new ( ) . set_node_alias ( alias) ?. build ( )
1101
1093
}
1102
1094
1103
1095
#[ test]
1104
1096
fn empty_node_alias ( ) {
1105
1097
// Empty node alias
1106
1098
let alias = "" ;
1107
- let node = create_node_with_alias ( alias) ;
1108
- assert_eq ! (
1109
- node. err( ) . unwrap( ) ,
1110
- BuildError :: InvalidNodeAlias ( "Node alias cannot be empty." . to_string( ) )
1111
- ) ;
1099
+ let node = create_node_with_alias ( alias. to_string ( ) ) ;
1100
+ assert_eq ! ( node. err( ) . unwrap( ) , BuildError :: InvalidNodeAlias ) ;
1112
1101
}
1113
1102
1114
1103
#[ test]
1115
1104
fn node_alias_with_sandwiched_null ( ) {
1116
1105
// Alias with emojis
1117
1106
let expected_alias = "I\u{1F496} LDK-Node!" ;
1118
1107
let user_provided_alias = "I\u{1F496} LDK-Node!\0 \u{26A1} " ;
1119
- let node = create_node_with_alias ( user_provided_alias) . unwrap ( ) ;
1108
+ let node = create_node_with_alias ( user_provided_alias. to_string ( ) ) . unwrap ( ) ;
1120
1109
1121
1110
assert_eq ! ( expected_alias, node. config( ) . node_alias. unwrap( ) ) ;
1122
1111
}
1123
1112
1124
1113
#[ test]
1125
1114
fn node_alias_longer_than_32_bytes ( ) {
1126
1115
let alias = "This is a string longer than thirty-two bytes!" ; // 46 bytes
1127
- let node = create_node_with_alias ( alias) ;
1128
- assert_eq ! (
1129
- node. err( ) . unwrap( ) ,
1130
- BuildError :: InvalidNodeAlias ( "Node alias cannot exceed 32 bytes." . to_string( ) )
1131
- ) ;
1116
+ let node = create_node_with_alias ( alias. to_string ( ) ) ;
1117
+ assert_eq ! ( node. err( ) . unwrap( ) , BuildError :: InvalidNodeAlias ) ;
1132
1118
}
1133
1119
}
0 commit comments