@@ -114,6 +114,8 @@ pub enum BuildError {
114
114
InvalidChannelMonitor ,
115
115
/// The given listening addresses are invalid, e.g. too many were passed.
116
116
InvalidListeningAddresses ,
117
+ /// The provided alias is invalid
118
+ InvalidNodeAlias ,
117
119
/// We failed to read data from the [`KVStore`].
118
120
///
119
121
/// [`KVStore`]: lightning::util::persist::KVStore
@@ -132,8 +134,6 @@ pub enum BuildError {
132
134
WalletSetupFailed ,
133
135
/// We failed to setup the logger.
134
136
LoggerSetupFailed ,
135
- /// The provided alias is invalid
136
- InvalidNodeAlias ( String ) ,
137
137
}
138
138
139
139
impl fmt:: Display for BuildError {
@@ -154,9 +154,7 @@ impl fmt::Display for BuildError {
154
154
Self :: KVStoreSetupFailed => write ! ( f, "Failed to setup KVStore." ) ,
155
155
Self :: WalletSetupFailed => write ! ( f, "Failed to setup onchain wallet." ) ,
156
156
Self :: LoggerSetupFailed => write ! ( f, "Failed to setup the logger." ) ,
157
- Self :: InvalidNodeAlias ( ref reason) => {
158
- write ! ( f, "Given node alias is invalid: {}" , reason)
159
- } ,
157
+ Self :: InvalidNodeAlias => write ! ( f, "Given node alias is invalid." ) ,
160
158
}
161
159
}
162
160
}
@@ -309,9 +307,7 @@ impl NodeBuilder {
309
307
310
308
/// Sets the alias the [`Node`] will use in its announcement. The provided
311
309
/// alias must be a valid UTF-8 string.
312
- pub fn set_node_alias < T : Into < String > > (
313
- & mut self , node_alias : T ,
314
- ) -> Result < & mut Self , BuildError > {
310
+ pub fn set_node_alias ( & mut self , node_alias : String ) -> Result < & mut Self , BuildError > {
315
311
let node_alias = sanitize_alias ( node_alias) . map_err ( |e| e) ?;
316
312
317
313
self . config . node_alias = Some ( node_alias) ;
@@ -515,6 +511,11 @@ impl ArcedNodeBuilder {
515
511
self . inner . write ( ) . unwrap ( ) . set_log_level ( level) ;
516
512
}
517
513
514
+ /// Sets the node alias.
515
+ pub fn set_node_alias ( & self , node_alias : String ) -> Result < ( ) , BuildError > {
516
+ self . inner . write ( ) . unwrap ( ) . set_node_alias ( node_alias) . map ( |_| ( ) )
517
+ }
518
+
518
519
/// Builds a [`Node`] instance with a [`SqliteStore`] backend and according to the options
519
520
/// previously configured.
520
521
pub fn build ( & self ) -> Result < Arc < Node > , BuildError > {
@@ -1066,21 +1067,12 @@ fn sanitize_alias<T: Into<String>>(node_alias: T) -> Result<String, BuildError>
1066
1067
let node_alias: String = node_alias. into ( ) ;
1067
1068
let alias = node_alias. trim ( ) ;
1068
1069
1069
- // Alias is non-empty
1070
- if alias. is_empty ( ) {
1071
- return Err ( BuildError :: InvalidNodeAlias ( "Node alias cannot be empty." . to_string ( ) ) ) ;
1072
- }
1073
-
1074
- // Alias valid up to first null byte
1075
- let first_null = alias. as_bytes ( ) . iter ( ) . position ( |b| * b == 0 ) . unwrap_or ( alias. len ( ) ) ;
1076
- let actual_alias = alias. split_at ( first_null) . 0 ;
1077
-
1078
1070
// Alias must be 32-bytes long or less
1079
- if actual_alias . as_bytes ( ) . len ( ) > 32 {
1080
- return Err ( BuildError :: InvalidNodeAlias ( "Node alias cannot exceed 32 bytes." . to_string ( ) ) ) ;
1071
+ if alias . as_bytes ( ) . len ( ) > 32 {
1072
+ return Err ( BuildError :: InvalidNodeAlias ) ;
1081
1073
}
1082
1074
1083
- Ok ( actual_alias . to_string ( ) )
1075
+ Ok ( alias . to_string ( ) )
1084
1076
}
1085
1077
1086
1078
#[ cfg( test) ]
@@ -1089,38 +1081,32 @@ mod tests {
1089
1081
1090
1082
use super :: NodeBuilder ;
1091
1083
1092
- fn create_node_with_alias < T : Into < String > > ( alias : T ) -> Result < Node , BuildError > {
1093
- NodeBuilder :: new ( ) . set_node_alias ( & alias. into ( ) ) ?. build ( )
1084
+ fn create_node_with_alias ( alias : String ) -> Result < Node , BuildError > {
1085
+ NodeBuilder :: new ( ) . set_node_alias ( alias) ?. build ( )
1094
1086
}
1095
1087
1096
1088
#[ test]
1097
1089
fn empty_node_alias ( ) {
1098
1090
// Empty node alias
1099
1091
let alias = "" ;
1100
- let node = create_node_with_alias ( alias) ;
1101
- assert_eq ! (
1102
- node. err( ) . unwrap( ) ,
1103
- BuildError :: InvalidNodeAlias ( "Node alias cannot be empty." . to_string( ) )
1104
- ) ;
1092
+ let node = create_node_with_alias ( alias. to_string ( ) ) ;
1093
+ assert_eq ! ( node. err( ) . unwrap( ) , BuildError :: InvalidNodeAlias ) ;
1105
1094
}
1106
1095
1107
1096
#[ test]
1108
1097
fn node_alias_with_sandwiched_null ( ) {
1109
1098
// Alias with emojis
1110
1099
let expected_alias = "I\u{1F496} LDK-Node!" ;
1111
1100
let user_provided_alias = "I\u{1F496} LDK-Node!\0 \u{26A1} " ;
1112
- let node = create_node_with_alias ( user_provided_alias) . unwrap ( ) ;
1101
+ let node = create_node_with_alias ( user_provided_alias. to_string ( ) ) . unwrap ( ) ;
1113
1102
1114
1103
assert_eq ! ( expected_alias, node. config( ) . node_alias. unwrap( ) ) ;
1115
1104
}
1116
1105
1117
1106
#[ test]
1118
1107
fn node_alias_longer_than_32_bytes ( ) {
1119
1108
let alias = "This is a string longer than thirty-two bytes!" ; // 46 bytes
1120
- let node = create_node_with_alias ( alias) ;
1121
- assert_eq ! (
1122
- node. err( ) . unwrap( ) ,
1123
- BuildError :: InvalidNodeAlias ( "Node alias cannot exceed 32 bytes." . to_string( ) )
1124
- ) ;
1109
+ let node = create_node_with_alias ( alias. to_string ( ) ) ;
1110
+ assert_eq ! ( node. err( ) . unwrap( ) , BuildError :: InvalidNodeAlias ) ;
1125
1111
}
1126
1112
}
0 commit comments