Skip to content

Commit d43a293

Browse files
committed
Trap demo on cap call
1 parent a3e3624 commit d43a293

1 file changed

Lines changed: 8 additions & 8 deletions

File tree

pkg/workflows/wasm/host/module.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1223,45 +1223,45 @@ func createCallCapFn(
12231223
func createAwaitCapsFn(
12241224
logger logger.Logger,
12251225
exec *execution[*sdkpb.ExecutionResult],
1226-
) func(caller *wasmtime.Caller, awaitRequest, awaitRequestLen, responseBuffer, maxResponseLen int32) int64 {
1227-
return func(caller *wasmtime.Caller, awaitRequest, awaitRequestLen, responseBuffer, maxResponseLen int32) int64 {
1226+
) func(caller *wasmtime.Caller, awaitRequest, awaitRequestLen, responseBuffer, maxResponseLen int32) (int64, *wasmtime.Trap) {
1227+
return func(caller *wasmtime.Caller, awaitRequest, awaitRequestLen, responseBuffer, maxResponseLen int32) (int64, *wasmtime.Trap) {
12281228
b, err := wasmRead(caller, awaitRequest, awaitRequestLen)
12291229
if err != nil {
12301230
errStr := fmt.Sprintf("error reading from wasm %s", err)
12311231
logger.Error(errStr)
1232-
return truncateWasmWrite(caller, []byte(errStr), responseBuffer, maxResponseLen)
1232+
return truncateWasmWrite(caller, []byte(errStr), responseBuffer, maxResponseLen), nil
12331233
}
12341234

12351235
req := &sdkpb.AwaitCapabilitiesRequest{}
12361236
err = proto.Unmarshal(b, req)
12371237
if err != nil {
12381238
errStr := err.Error()
12391239
logger.Error(errStr)
1240-
return truncateWasmWrite(caller, []byte(errStr), responseBuffer, maxResponseLen)
1240+
return truncateWasmWrite(caller, []byte(errStr), responseBuffer, maxResponseLen), nil
12411241
}
12421242

12431243
resp, err := exec.awaitCapabilities(exec.ctx, req)
12441244
if err != nil {
12451245
errStr := err.Error()
12461246
logger.Error(errStr)
1247-
return truncateWasmWrite(caller, []byte(errStr), responseBuffer, maxResponseLen)
1247+
return truncateWasmWrite(caller, []byte(errStr), responseBuffer, maxResponseLen), nil
12481248
}
12491249

12501250
respBytes, err := proto.Marshal(resp)
12511251
if err != nil {
12521252
errStr := err.Error()
12531253
logger.Error(errStr)
1254-
return truncateWasmWrite(caller, []byte(errStr), responseBuffer, maxResponseLen)
1254+
return truncateWasmWrite(caller, []byte(errStr), responseBuffer, maxResponseLen), nil
12551255
}
12561256

12571257
size := wasmWrite(caller, respBytes, responseBuffer, maxResponseLen)
12581258
if size == -1 {
12591259
errStr := ResponseBufferTooSmall
12601260
logger.Error(errStr)
1261-
return truncateWasmWrite(caller, []byte(errStr), responseBuffer, maxResponseLen)
1261+
return truncateWasmWrite(caller, []byte(errStr), responseBuffer, maxResponseLen), nil
12621262
}
12631263

1264-
return size
1264+
return size, wasmtime.NewTrap("Nope don't run")
12651265
}
12661266
}
12671267

0 commit comments

Comments
 (0)