@@ -101,8 +101,8 @@ pub struct SolvableOrdersCache {
101101 cow_amm_registry : cow_amm:: Registry ,
102102 native_price_timeout : Duration ,
103103 settlement_contract : H160 ,
104- disable_order_filters : bool ,
105- force_presign_order_filtering : bool ,
104+ disable_order_balance_filter : bool ,
105+ disable_1271_order_sig_filter : bool ,
106106}
107107
108108type Balances = HashMap < Query , U256 > ;
@@ -128,8 +128,8 @@ impl SolvableOrdersCache {
128128 cow_amm_registry : cow_amm:: Registry ,
129129 native_price_timeout : Duration ,
130130 settlement_contract : H160 ,
131- disable_order_filters : bool ,
132- force_presign_order_filtering : bool ,
131+ disable_order_balance_filter : bool ,
132+ disable_1271_order_sig_filter : bool ,
133133 ) -> Arc < Self > {
134134 Arc :: new ( Self {
135135 min_order_validity_period,
@@ -147,8 +147,8 @@ impl SolvableOrdersCache {
147147 cow_amm_registry,
148148 native_price_timeout,
149149 settlement_contract,
150- disable_order_filters ,
151- force_presign_order_filtering ,
150+ disable_order_balance_filter ,
151+ disable_1271_order_sig_filter ,
152152 } )
153153 }
154154
@@ -194,7 +194,7 @@ impl SolvableOrdersCache {
194194 )
195195 } ;
196196
197- let orders = if self . disable_order_filters {
197+ let orders = if self . disable_order_balance_filter {
198198 orders
199199 } else {
200200 let orders = orders_with_balance ( orders, & balances, self . settlement_contract ) ;
@@ -326,7 +326,7 @@ impl SolvableOrdersCache {
326326 self . balance_fetcher . get_balances ( & queries) ,
327327 )
328328 . await ;
329- if self . disable_order_filters {
329+ if self . disable_order_balance_filter {
330330 return Default :: default ( ) ;
331331 }
332332
@@ -392,12 +392,11 @@ impl SolvableOrdersCache {
392392 counter : & mut OrderFilterCounter ,
393393 invalid_order_uids : & mut HashSet < OrderUid > ,
394394 ) -> Vec < Order > {
395- let filter_invalid_signatures = async {
396- if self . disable_order_filters && !self . force_presign_order_filtering {
397- return Default :: default ( ) ;
398- }
399- find_invalid_signature_orders ( & orders, self . signature_validator . as_ref ( ) ) . await
400- } ;
395+ let filter_invalid_signatures = find_invalid_signature_orders (
396+ & orders,
397+ self . signature_validator . as_ref ( ) ,
398+ self . disable_1271_order_sig_filter ,
399+ ) ;
401400
402401 let ( banned_user_orders, invalid_signature_orders, unsupported_token_orders) = tokio:: join!(
403402 self . timed_future(
@@ -484,11 +483,17 @@ async fn get_native_prices(
484483async fn find_invalid_signature_orders (
485484 orders : & [ Order ] ,
486485 signature_validator : & dyn SignatureValidating ,
486+ disable_1271_order_sig_filter : bool ,
487487) -> Vec < OrderUid > {
488488 let mut invalid_orders = vec ! [ ] ;
489489 let mut signature_check_futures = FuturesUnordered :: new ( ) ;
490490
491491 for order in orders {
492+ if let Signature :: Eip1271 ( _) = & order. signature
493+ && disable_1271_order_sig_filter
494+ {
495+ continue ;
496+ }
492497 if matches ! (
493498 order. metadata. status,
494499 model:: order:: OrderStatus :: PresignaturePending
@@ -1304,11 +1309,16 @@ mod tests {
13041309 . returning ( |_| Ok ( ( ) ) ) ;
13051310
13061311 let invalid_signature_orders =
1307- find_invalid_signature_orders ( & orders, & signature_validator) . await ;
1312+ find_invalid_signature_orders ( & orders, & signature_validator, false ) . await ;
13081313 assert_eq ! (
13091314 invalid_signature_orders,
13101315 vec![ OrderUid :: from_parts( H256 ( [ 4 ; 32 ] ) , H160 ( [ 44 ; 20 ] ) , 4 ) ]
13111316 ) ;
1317+ let invalid_signature_orders_with_1271_filter_disabled =
1318+ find_invalid_signature_orders ( & orders, & signature_validator, true ) . await ;
1319+ // if we switch off the 1271 filter no orders should be returned as containing
1320+ // invalid signatures
1321+ assert_eq ! ( invalid_signature_orders_with_1271_filter_disabled, vec![ ] ) ;
13121322 }
13131323
13141324 #[ test]
0 commit comments