@@ -996,13 +996,12 @@ impl ZetachainCctxDatabase {
996996 . try_get_by_index ( 18 )
997997 . map_err ( |e| anyhow:: anyhow!( "cctx_row last_update_timestamp: {}" , e) ) ?;
998998
999+ let cctx_status =
1000+ CctxStatusProto :: from_str_name ( cctx_row. try_get_by_index :: < String > ( 15 ) ?. as_str ( ) )
1001+ . ok_or ( anyhow:: anyhow!( "Invalid status" ) ) ?;
9991002 // Build CctxStatus
10001003 let status = StatusProto {
1001- status : CctxStatusProto :: from_str_name (
1002- cctx_row. try_get_by_index :: < String > ( 15 ) ?. as_str ( ) ,
1003- )
1004- . ok_or ( anyhow:: anyhow!( "Invalid status" ) ) ?
1005- . into ( ) ,
1004+ status : cctx_status. into ( ) ,
10061005 status_message : cctx_row
10071006 . try_get_by_index ( 16 )
10081007 . map_err ( |e| anyhow:: anyhow!( "cctx_row status_message: {}" , e) ) ?,
@@ -1098,22 +1097,30 @@ impl ZetachainCctxDatabase {
10981097 . map_err ( |e| anyhow:: anyhow!( "cctx_row token_name: {}" , e) ) ?;
10991098
11001099 // Build RevertOptions
1101- let revert = RevertOptionsProto {
1102- revert_address : cctx_row
1103- . try_get_by_index ( 41 )
1104- . map_err ( |e| anyhow:: anyhow!( "cctx_row revert_address: {}" , e) ) ?,
1105- call_on_revert : cctx_row
1106- . try_get_by_index ( 42 )
1107- . map_err ( |e| anyhow:: anyhow!( "cctx_row call_on_revert: {}" , e) ) ?,
1108- abort_address : cctx_row
1109- . try_get_by_index ( 43 )
1110- . map_err ( |e| anyhow:: anyhow!( "cctx_row abort_address: {}" , e) ) ?,
1111- revert_message : cctx_row
1112- . try_get_by_index :: < Option < String > > ( 44 )
1113- . map_err ( |e| anyhow:: anyhow!( "cctx_row revert_message: {}" , e) ) ?,
1114- revert_gas_limit : cctx_row
1115- . try_get_by_index ( 45 )
1116- . map_err ( |e| anyhow:: anyhow!( "cctx_row revert_gas_limit: {}" , e) ) ?,
1100+ let revert_options: Option < RevertOptionsProto > = {
1101+ if cctx_status == CctxStatusProto :: OutboundMined
1102+ || cctx_status == CctxStatusProto :: PendingOutbound
1103+ {
1104+ None
1105+ } else {
1106+ Some ( RevertOptionsProto {
1107+ revert_address : cctx_row
1108+ . try_get_by_index ( 41 )
1109+ . map_err ( |e| anyhow:: anyhow!( "cctx_row revert_address: {}" , e) ) ?,
1110+ call_on_revert : cctx_row
1111+ . try_get_by_index ( 42 )
1112+ . map_err ( |e| anyhow:: anyhow!( "cctx_row call_on_revert: {}" , e) ) ?,
1113+ abort_address : cctx_row
1114+ . try_get_by_index ( 43 )
1115+ . map_err ( |e| anyhow:: anyhow!( "cctx_row abort_address: {}" , e) ) ?,
1116+ revert_message : cctx_row
1117+ . try_get_by_index :: < Option < String > > ( 44 )
1118+ . map_err ( |e| anyhow:: anyhow!( "cctx_row revert_message: {}" , e) ) ?,
1119+ revert_gas_limit : cctx_row
1120+ . try_get_by_index ( 45 )
1121+ . map_err ( |e| anyhow:: anyhow!( "cctx_row revert_gas_limit: {}" , e) ) ?,
1122+ } )
1123+ }
11171124 } ;
11181125
11191126 // Now get outbound params (can be multiple, so we need a separate query)
@@ -1343,7 +1350,7 @@ impl ZetachainCctxDatabase {
13431350 cctx_status_reduced : status_reduced. into ( ) ,
13441351 inbound_params : Some ( inbound) ,
13451352 outbound_params : outbounds,
1346- revert_options : Some ( revert ) ,
1353+ revert_options,
13471354 protocol_contract_version : protocol_contract_version. into ( ) ,
13481355 related_cctxs : related,
13491356 token_symbol,
0 commit comments