Merge "veyron/security/agent/agentd: Fix missing panic"
diff --git a/security/agent/agentd/main.go b/security/agent/agentd/main.go
index f0fed27..fe26023 100644
--- a/security/agent/agentd/main.go
+++ b/security/agent/agentd/main.go
@@ -35,6 +35,10 @@
)
func main() {
+ os.Exit(Main())
+}
+
+func Main() int {
flag.Usage = func() {
fmt.Fprintf(os.Stderr, `Usage: %s [agent options] command command_args...
@@ -45,23 +49,17 @@
`, os.Args[0], consts.VeyronCredentials)
flag.PrintDefaults()
}
- exitCode := 0
- defer func() {
- os.Exit(exitCode)
- }()
flag.Parse()
if len(flag.Args()) < 1 {
fmt.Fprintln(os.Stderr, "Need at least one argument.")
flag.Usage()
- exitCode = 1
- return
+ return 1
}
var restartOpts restartOptions
if err := restartOpts.parse(); err != nil {
fmt.Fprintln(os.Stderr, err)
flag.Usage()
- exitCode = 1
- return
+ return 1
}
var dir string
@@ -114,6 +112,7 @@
}
}
+ exitCode := 0
for {
// Run the client and wait for it to finish.
cmd := exec.Command(flag.Args()[0], flag.Args()[1:]...)
@@ -155,6 +154,7 @@
// right after cmd.Start().
sock.Close()
mgrSock.Close()
+ return exitCode
}
func newPrincipalFromDir(dir string) (security.Principal, []byte, error) {