@@ -509,7 +509,7 @@ static bool is_valid_price_upd( cmd_upd_price_t *cptr, SolAccountInfo *price_acc
509509
510510 // Reject if this price corresponds to the same or earlier time
511511 pc_price_info_t * fptr = & pptr -> comp_ [comp_idx ].latest_ ;
512- if ( ( cptr -> cmd_ == e_cmd_upd_price || cptr -> cmd_ == e_cmd_batch_upd_price ) &&
512+ if ( ( cptr -> cmd_ == e_cmd_upd_price || cptr -> cmd_ == e_cmd_batch_upd_price || cptr -> cmd_ == e_cmd_upd_price_no_fail_on_error ) &&
513513 cptr -> pub_slot_ <= fptr -> pub_slot_ ) {
514514 return false;
515515 }
@@ -527,7 +527,7 @@ static void do_price_upd( cmd_upd_price_t *cptr, SolAccountInfo *clock_account,
527527
528528 // update component price if required
529529 pc_price_info_t * fptr = & pptr -> comp_ [comp_idx ].latest_ ;
530- if ( ( cptr -> cmd_ == e_cmd_upd_price || cptr -> cmd_ == e_cmd_batch_upd_price ) ) {
530+ if ( ( cptr -> cmd_ == e_cmd_upd_price || cptr -> cmd_ == e_cmd_batch_upd_price || cptr -> cmd_ == e_cmd_upd_price_no_fail_on_error ) ) {
531531 fptr -> price_ = cptr -> price_ ;
532532 fptr -> conf_ = cptr -> conf_ ;
533533 fptr -> status_ = cptr -> status_ ;
@@ -630,6 +630,12 @@ static uint64_t upd_price( SolParameters *prm, SolAccountInfo *ka )
630630 return SUCCESS ;
631631}
632632
633+ static uint64_t upd_price_no_fail_on_error ( SolParameters * prm , SolAccountInfo * ka )
634+ {
635+ upd_price ( prm , ka );
636+ return SUCCESS ;
637+ }
638+
633639static uint64_t dispatch ( SolParameters * prm , SolAccountInfo * ka )
634640{
635641 if (prm -> data_len < sizeof (cmd_hdr_t ) ) {
@@ -641,20 +647,21 @@ static uint64_t dispatch( SolParameters *prm, SolAccountInfo *ka )
641647 }
642648 switch (hdr -> cmd_ ) {
643649 case e_cmd_upd_price :
644- case e_cmd_agg_price : return upd_price ( prm , ka );
645- case e_cmd_batch_upd_price : return batch_upd_price ( prm , ka );
646- case e_cmd_init_mapping : return init_mapping ( prm , ka );
647- case e_cmd_add_mapping : return add_mapping ( prm , ka );
648- case e_cmd_add_product : return add_product ( prm , ka );
649- case e_cmd_upd_product : return upd_product ( prm , ka );
650- case e_cmd_add_price : return add_price ( prm , ka );
651- case e_cmd_add_publisher : return add_publisher ( prm , ka );
652- case e_cmd_del_publisher : return del_publisher ( prm , ka );
653- case e_cmd_init_price : return init_price ( prm , ka );
654- case e_cmd_init_test : return init_test ( prm , ka );
655- case e_cmd_upd_test : return upd_test ( prm , ka );
656- case e_cmd_set_min_pub : return set_min_pub ( prm , ka );
657- default : return ERROR_INVALID_ARGUMENT ;
650+ case e_cmd_agg_price : return upd_price ( prm , ka );
651+ case e_cmd_upd_price_no_fail_on_error : return upd_price_no_fail_on_error ( prm , ka );
652+ case e_cmd_batch_upd_price : return batch_upd_price ( prm , ka );
653+ case e_cmd_init_mapping : return init_mapping ( prm , ka );
654+ case e_cmd_add_mapping : return add_mapping ( prm , ka );
655+ case e_cmd_add_product : return add_product ( prm , ka );
656+ case e_cmd_upd_product : return upd_product ( prm , ka );
657+ case e_cmd_add_price : return add_price ( prm , ka );
658+ case e_cmd_add_publisher : return add_publisher ( prm , ka );
659+ case e_cmd_del_publisher : return del_publisher ( prm , ka );
660+ case e_cmd_init_price : return init_price ( prm , ka );
661+ case e_cmd_init_test : return init_test ( prm , ka );
662+ case e_cmd_upd_test : return upd_test ( prm , ka );
663+ case e_cmd_set_min_pub : return set_min_pub ( prm , ka );
664+ default : return ERROR_INVALID_ARGUMENT ;
658665 }
659666}
660667
0 commit comments