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 {
9292 . find_map ( |( _desc_pk, desc_sk) | -> Option < PrivateKey > {
9393 match desc_sk. get_key ( key_request. clone ( ) , secp) {
9494 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.
9597 Ok ( None ) | Err ( _) => None ,
9698 }
9799 } ) )
@@ -153,12 +155,15 @@ impl GetKey for DescriptorSecretKey {
153155 (
154156 desc_multi_sk @ DescriptorSecretKey :: MultiXPrv ( _descriptor_multi_xkey) ,
155157 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+ }
162167 _ => Ok ( None ) ,
163168 }
164169 }
You can’t perform that action at this time.
0 commit comments