aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2022-07-28 20:56:55 +0100
committerGitHub <noreply@github.com>2022-07-28 20:56:55 +0100
commitc9c5bd88beb30b06cf52444e6515ef4c7d75993f (patch)
tree7c92902c1a1bd7bfbd8750a3d005340c289e13a2
parent9691d4310111e2754beb4bcb5406ef6eb2494b9f (diff)
downloadgitea-c9c5bd88beb30b06cf52444e6515ef4c7d75993f.tar.gz
gitea-c9c5bd88beb30b06cf52444e6515ef4c7d75993f.zip
Stop logging EOFs and exit(1)s in ssh handler (#20476)
The code in modules/ssh/ssh.go:sessionHandler() currently cause an error to be logged if `gitea serv` exits with a exit(1). This logging is useless because the accompanying stderr is not provided and in any case the exit(1) is most likely due to permissions errors. Further it then causes the EOF to be logged - even though this is not helpful. This PR simply checks the errors returned and stops logging them. In the case of misconfigurations causing `gitea serv` to fail with exit(1) the current logging is not helpful at determining this and users should simply review the message passed over the ssh connection. Fix #20473 Signed-off-by: Andrew Thornton <art27@cantab.net>
-rw-r--r--modules/ssh/ssh.go9
1 files changed, 7 insertions, 2 deletions
diff --git a/modules/ssh/ssh.go b/modules/ssh/ssh.go
index 2affeb781a..bffe29f4c3 100644
--- a/modules/ssh/ssh.go
+++ b/modules/ssh/ssh.go
@@ -11,6 +11,7 @@ import (
"crypto/rsa"
"crypto/x509"
"encoding/pem"
+ "errors"
"fmt"
"io"
"net"
@@ -142,10 +143,14 @@ func sessionHandler(session ssh.Session) {
// Wait for the command to exit and log any errors we get
err = cmd.Wait()
if err != nil {
- log.Error("SSH: Wait: %v", err)
+ // Cannot use errors.Is here because ExitError doesn't implement Is
+ // Thus errors.Is will do equality test NOT type comparison
+ if _, ok := err.(*exec.ExitError); !ok {
+ log.Error("SSH: Wait: %v", err)
+ }
}
- if err := session.Exit(getExitStatusFromError(err)); err != nil {
+ if err := session.Exit(getExitStatusFromError(err)); err != nil && !errors.Is(err, io.EOF) {
log.Error("Session failed to exit. %s", err)
}
}