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 {
29
29
. find_map ( |( _desc_pk, desc_sk) | -> Option < PrivateKey > {
30
30
match desc_sk. get_key ( key_request. clone ( ) , secp) {
31
31
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.
32
34
Ok ( None ) | Err ( _) => None ,
33
35
}
34
36
} ) )
@@ -90,12 +92,15 @@ impl GetKey for DescriptorSecretKey {
90
92
(
91
93
desc_multi_sk @ DescriptorSecretKey :: MultiXPrv ( _descriptor_multi_xkey) ,
92
94
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
+ }
99
104
_ => Ok ( None ) ,
100
105
}
101
106
}
You can’t perform that action at this time.
0 commit comments