diff options
| author | Paul Bütow <pbuetow@mimecast.com> | 2020-02-12 22:46:45 +0000 |
|---|---|---|
| committer | Paul Bütow <pbuetow@mimecast.com> | 2020-02-12 22:46:45 +0000 |
| commit | 221010919b210034ba75d42951caf3965f66aa9d (patch) | |
| tree | 40fa9530ff3c2b1137ed9a490e23a51dff907423 | |
| parent | a1a0990f5e261f395a2d699cd7602ca4a6a5b6c4 (diff) | |
exec will always err if status is > 0
| -rw-r--r-- | internal/clients/handlers/basehandler.go | 4 | ||||
| -rw-r--r-- | internal/io/run/run.go | 2 | ||||
| -rw-r--r-- | internal/server/handlers/runcommand.go | 21 |
3 files changed, 10 insertions, 17 deletions
diff --git a/internal/clients/handlers/basehandler.go b/internal/clients/handlers/basehandler.go index 68b8ddc..7b071c9 100644 --- a/internal/clients/handlers/basehandler.go +++ b/internal/clients/handlers/basehandler.go @@ -122,7 +122,9 @@ func (h *baseHandler) handleHiddenMessage(message string) { logger.Error("Unable to retrieve exitstatus", message, err) return } - h.status = i logger.Debug("Retrieved exitstatus", h.status) + if i > h.status { + h.status = i + } } } diff --git a/internal/io/run/run.go b/internal/io/run/run.go index c0c6868..3cf7935 100644 --- a/internal/io/run/run.go +++ b/internal/io/run/run.go @@ -32,7 +32,7 @@ func (r Run) Start(ctx context.Context, lines chan<- line.Line) (pid int, ec int done := make(chan struct{}) defer close(done) - ec = -1 + ec = 255 pid = -1 if len(r.args) > 0 { diff --git a/internal/server/handlers/runcommand.go b/internal/server/handlers/runcommand.go index 1ae0fda..b7fbb8b 100644 --- a/internal/server/handlers/runcommand.go +++ b/internal/server/handlers/runcommand.go @@ -43,31 +43,22 @@ func (r runCommand) start(ctx context.Context, commands []string) { qualifiedPath, err := exec.LookPath(path) if err != nil { logger.Error(r.server.user, err) - r.server.sendServerMessage(logger.Warn(r.server.user, "Unable to execute command(s), check server logs")) - r.server.sendServerMessage(fmt.Sprintf(".run exitstatus -%d", -1)) + r.server.sendServerMessage(logger.Error(r.server.user, "Unable to execute command(s), check server logs")) + r.server.sendServerMessage(".run exitstatus 255") return } if !r.server.user.HasFilePermission(qualifiedPath, "runcommands") { logger.Error(r.server.user, "No permission to execute path", qualifiedPath) - r.server.sendServerMessage(logger.Warn(r.server.user, "Unable to execute command(s), check server logs")) - r.server.sendServerMessage(fmt.Sprintf(".run exitstatus -%d", -1)) + r.server.sendServerMessage(logger.Error(r.server.user, "Unable to execute command(s), check server logs")) + r.server.sendServerMessage(".run exitstatus 255") return } r.run = run.New(qualifiedPath, args) - pid, ec, err := r.run.Start(ctx, r.server.lines) + pid, ec, _ := r.run.Start(ctx, r.server.lines) - if err != nil { - message := fmt.Sprintf("Unable to execute remote command '%s'", qualifiedPath, args) - logger.Error(r.server.user, message, ec, pid, err) - r.server.sendServerMessage(logger.Error(message, ec, pid, err)) - r.server.sendServerMessage(fmt.Sprintf(".run exitstatus -%d", ec)) - return - } - - message := fmt.Sprintf("Remote process '%d' exited with status '%d'", pid, ec) r.server.sendServerMessage(fmt.Sprintf(".run exitstatus %d", ec)) - r.server.sendServerMessage(logger.Info("run", pid, ec, message)) + r.server.sendServerMessage(logger.Info(fmt.Sprintf("Process %d exited with status %d", pid, ec))) } } |
