summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorPaul Bütow <pbuetow@mimecast.com>2020-02-12 22:46:45 +0000
committerPaul Bütow <pbuetow@mimecast.com>2020-02-12 22:46:45 +0000
commit221010919b210034ba75d42951caf3965f66aa9d (patch)
tree40fa9530ff3c2b1137ed9a490e23a51dff907423 /internal
parenta1a0990f5e261f395a2d699cd7602ca4a6a5b6c4 (diff)
exec will always err if status is > 0
Diffstat (limited to 'internal')
-rw-r--r--internal/clients/handlers/basehandler.go4
-rw-r--r--internal/io/run/run.go2
-rw-r--r--internal/server/handlers/runcommand.go21
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)))
}
}