@@ -10,7 +10,6 @@ import (
10
10
"os"
11
11
"path/filepath"
12
12
"runtime"
13
- "slices"
14
13
"strings"
15
14
"syscall"
16
15
@@ -164,11 +163,10 @@ func AnalyzeCode(cache Cache, checksum []byte) (*types.AnalysisReport, error) {
164
163
requiredCapabilities := string (copyAndDestroyUnmanagedVector (report .required_capabilities ))
165
164
entrypoints := string (copyAndDestroyUnmanagedVector (report .entrypoints ))
166
165
entrypoints_array := strings .Split (entrypoints , "," )
167
- hasIBC2EntryPoints := slices .Contains (entrypoints_array , "ibc2_packet_receive" )
168
166
169
167
res := types.AnalysisReport {
170
168
HasIBCEntryPoints : bool (report .has_ibc_entry_points ),
171
- HasIBC2EntryPoints : hasIBC2EntryPoints ,
169
+ HasIBC2EntryPoints : bool ( report . has_ibc2_entry_points ) ,
172
170
RequiredCapabilities : requiredCapabilities ,
173
171
Entrypoints : entrypoints_array ,
174
172
ContractMigrateVersion : optionalU64ToPtr (report .contract_migrate_version ),
@@ -723,6 +721,48 @@ func IBC2PacketReceive(
723
721
return copyAndDestroyUnmanagedVector (res ), convertGasReport (gasReport ), nil
724
722
}
725
723
724
+ func IBC2PacketTimeout (
725
+ cache Cache ,
726
+ checksum []byte ,
727
+ env []byte ,
728
+ payload []byte ,
729
+ gasMeter * types.GasMeter ,
730
+ store types.KVStore ,
731
+ api * types.GoAPI ,
732
+ querier * Querier ,
733
+ gasLimit uint64 ,
734
+ printDebug bool ,
735
+ ) ([]byte , types.GasReport , error ) {
736
+ cs := makeView (checksum )
737
+ defer runtime .KeepAlive (checksum )
738
+ e := makeView (env )
739
+ defer runtime .KeepAlive (env )
740
+ pa := makeView (payload )
741
+ defer runtime .KeepAlive (payload )
742
+ var pinner runtime.Pinner
743
+ pinner .Pin (gasMeter )
744
+ checkAndPinAPI (api , pinner )
745
+ checkAndPinQuerier (querier , pinner )
746
+ defer pinner .Unpin ()
747
+
748
+ callID := startCall ()
749
+ defer endCall (callID )
750
+
751
+ dbState := buildDBState (store , callID )
752
+ db := buildDB (& dbState , gasMeter )
753
+ a := buildAPI (api )
754
+ q := buildQuerier (querier )
755
+ var gasReport C.GasReport
756
+ errmsg := uninitializedUnmanagedVector ()
757
+
758
+ res , err := C .ibc2_packet_timeout (cache .ptr , cs , e , pa , db , a , q , cu64 (gasLimit ), cbool (printDebug ), & gasReport , & errmsg )
759
+ if err != nil && err .(syscall.Errno ) != C .ErrnoValue_Success {
760
+ // Depending on the nature of the error, `gasUsed` will either have a meaningful value, or just 0.
761
+ return nil , convertGasReport (gasReport ), errorWithMessage (err , errmsg )
762
+ }
763
+ return copyAndDestroyUnmanagedVector (res ), convertGasReport (gasReport ), nil
764
+ }
765
+
726
766
func IBCPacketAck (
727
767
cache Cache ,
728
768
checksum []byte ,
0 commit comments