File tree Expand file tree Collapse file tree 1 file changed +11
-6
lines changed Expand file tree Collapse file tree 1 file changed +11
-6
lines changed Original file line number Diff line number Diff line change @@ -29,6 +29,8 @@ impl GetKey for KeyMapWrapper {
2929 . find_map ( |( _desc_pk, desc_sk) | -> Option < PrivateKey > {
3030 match desc_sk. get_key ( key_request. clone ( ) , secp) {
3131 Ok ( Some ( pk) ) => Some ( pk) ,
32+ // When looking up keys in a map, we eat errors on individual keys, on
33+ // the assumption that some other key in the map might not error.
3234 Ok ( None ) | Err ( _) => None ,
3335 }
3436 } ) )
@@ -90,12 +92,15 @@ impl GetKey for DescriptorSecretKey {
9092 (
9193 desc_multi_sk @ DescriptorSecretKey :: MultiXPrv ( _descriptor_multi_xkey) ,
9294 key_request,
93- ) => Ok ( desc_multi_sk. clone ( ) . into_single_keys ( ) . iter ( ) . find_map (
94- |desc_sk| match desc_sk. get_key ( key_request. clone ( ) , secp) {
95- Ok ( Some ( pk) ) => Some ( pk) ,
96- Ok ( None ) | Err ( _) => None ,
97- } ,
98- ) ) ,
95+ ) => {
96+ for desc_sk in & desc_multi_sk. clone ( ) . into_single_keys ( ) {
97+ // If any key is an error, then all of them will, so here we propagate errors with ?.
98+ if let Some ( pk) = desc_sk. get_key ( key_request. clone ( ) , secp) ? {
99+ return Ok ( Some ( pk) ) ;
100+ }
101+ }
102+ Ok ( None )
103+ }
99104 _ => Ok ( None ) ,
100105 }
101106 }
You can’t perform that action at this time.
0 commit comments