Commit 35c290da authored by Adrian Sutton's avatar Adrian Sutton

op-program: Do not pass args to detached client program

Check for and switch to client mode as the very first thing in main to better simulate it running standalone.
parent 60b30032
...@@ -26,11 +26,14 @@ func Main(logger log.Logger) { ...@@ -26,11 +26,14 @@ func Main(logger log.Logger) {
log.Info("Starting fault proof program client") log.Info("Starting fault proof program client")
preimageOracle := CreatePreimageChannel() preimageOracle := CreatePreimageChannel()
preimageHinter := CreateHinterChannel() preimageHinter := CreateHinterChannel()
err := RunProgram(logger, preimageOracle, preimageHinter) if err := RunProgram(logger, preimageOracle, preimageHinter); errors.Is(err, cldr.ErrClaimNotValid) {
if err != nil { log.Error("Claim is invalid", "err", err)
log.Error("Program failed", "err", err)
os.Exit(1) os.Exit(1)
} else if err != nil {
log.Error("Program failed", "err", err)
os.Exit(2)
} else { } else {
log.Info("Claim successfully verified")
os.Exit(0) os.Exit(0)
} }
} }
......
...@@ -5,6 +5,7 @@ import ( ...@@ -5,6 +5,7 @@ import (
"fmt" "fmt"
"os" "os"
cl "github.com/ethereum-optimism/optimism/op-program/client"
"github.com/ethereum-optimism/optimism/op-program/client/driver" "github.com/ethereum-optimism/optimism/op-program/client/driver"
"github.com/ethereum-optimism/optimism/op-program/host" "github.com/ethereum-optimism/optimism/op-program/host"
"github.com/ethereum-optimism/optimism/op-program/host/config" "github.com/ethereum-optimism/optimism/op-program/host/config"
...@@ -36,6 +37,11 @@ var VersionWithMeta = func() string { ...@@ -36,6 +37,11 @@ var VersionWithMeta = func() string {
}() }()
func main() { func main() {
if host.RunningProgramInClient() {
logger := oplog.NewLogger(oplog.DefaultCLIConfig())
cl.Main(logger)
panic("Client main should have exited process")
}
args := os.Args args := os.Args
if err := run(args, host.FaultProofProgram); errors.Is(err, driver.ErrClaimNotValid) { if err := run(args, host.FaultProofProgram); errors.Is(err, driver.ErrClaimNotValid) {
log.Crit("Claim is invalid", "err", err) log.Crit("Claim is invalid", "err", err)
......
...@@ -36,11 +36,6 @@ func RunningProgramInClient() bool { ...@@ -36,11 +36,6 @@ func RunningProgramInClient() bool {
// FaultProofProgram is the programmatic entry-point for the fault proof program // FaultProofProgram is the programmatic entry-point for the fault proof program
func FaultProofProgram(logger log.Logger, cfg *config.Config) error { func FaultProofProgram(logger log.Logger, cfg *config.Config) error {
if RunningProgramInClient() {
cl.Main(logger)
panic("Client main should have exited process")
}
if err := cfg.Check(); err != nil { if err := cfg.Check(); err != nil {
return fmt.Errorf("invalid config: %w", err) return fmt.Errorf("invalid config: %w", err)
} }
...@@ -102,7 +97,7 @@ func FaultProofProgram(logger log.Logger, cfg *config.Config) error { ...@@ -102,7 +97,7 @@ func FaultProofProgram(logger log.Logger, cfg *config.Config) error {
var cmd *exec.Cmd var cmd *exec.Cmd
if cfg.Detached { if cfg.Detached {
cmd = exec.CommandContext(ctx, os.Args[0], os.Args[1:]...) cmd = exec.CommandContext(ctx, os.Args[0])
cmd.ExtraFiles = make([]*os.File, cl.MaxFd-3) // not including stdin, stdout and stderr cmd.ExtraFiles = make([]*os.File, cl.MaxFd-3) // not including stdin, stdout and stderr
cmd.ExtraFiles[cl.HClientRFd-3] = hClientRW.Reader() cmd.ExtraFiles[cl.HClientRFd-3] = hClientRW.Reader()
cmd.ExtraFiles[cl.HClientWFd-3] = hClientRW.Writer() cmd.ExtraFiles[cl.HClientWFd-3] = hClientRW.Writer()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment