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 @@ -92,6 +92,8 @@ impl GetKey for KeyMap {
92
92
. find_map ( |( _desc_pk, desc_sk) | -> Option < PrivateKey > {
93
93
match desc_sk. get_key ( key_request. clone ( ) , secp) {
94
94
Ok ( Some ( pk) ) => Some ( pk) ,
95
+ // When looking up keys in a map, we eat errors on individual keys, on
96
+ // the assumption that some other key in the map might not error.
95
97
Ok ( None ) | Err ( _) => None ,
96
98
}
97
99
} ) )
@@ -153,12 +155,15 @@ impl GetKey for DescriptorSecretKey {
153
155
(
154
156
desc_multi_sk @ DescriptorSecretKey :: MultiXPrv ( _descriptor_multi_xkey) ,
155
157
key_request,
156
- ) => Ok ( desc_multi_sk. clone ( ) . into_single_keys ( ) . iter ( ) . find_map (
157
- |desc_sk| match desc_sk. get_key ( key_request. clone ( ) , secp) {
158
- Ok ( Some ( pk) ) => Some ( pk) ,
159
- Ok ( None ) | Err ( _) => None ,
160
- } ,
161
- ) ) ,
158
+ ) => {
159
+ for desc_sk in & desc_multi_sk. clone ( ) . into_single_keys ( ) {
160
+ // If any key is an error, then all of them will, so here we propagate errors with ?.
161
+ if let Some ( pk) = desc_sk. get_key ( key_request. clone ( ) , secp) ? {
162
+ return Ok ( Some ( pk) ) ;
163
+ }
164
+ }
165
+ Ok ( None )
166
+ }
162
167
_ => Ok ( None ) ,
163
168
}
164
169
}
You can’t perform that action at this time.
0 commit comments