optimization on stack trace and fix wrong words #154

Merged
lunny merged 1 commits from xcxinng/server:v2 into v2 2021-07-04 11:15:47 +00:00

View File

@@ -20,17 +20,17 @@ type Logger interface {
// StdLogger use an instance of this to log in a standard format
type StdLogger struct{}
// Print impelment Logger
// Print implements Logger
func (logger *StdLogger) Print(sessionID string, message interface{}) {
log.Printf("%s %s", sessionID, message)
}
// Printf impelment Logger
// Printf implements Logger
func (logger *StdLogger) Printf(sessionID string, format string, v ...interface{}) {
logger.Print(sessionID, fmt.Sprintf(format, v...))
}
// PrintCommand impelment Logger
// PrintCommand implements Logger
func (logger *StdLogger) PrintCommand(sessionID string, command string, params string) {
if command == "PASS" {
log.Printf("%s > PASS ****", sessionID)
@@ -39,7 +39,7 @@ func (logger *StdLogger) PrintCommand(sessionID string, command string, params s
}
}
// PrintResponse impelment Logger
// PrintResponse implements Logger
func (logger *StdLogger) PrintResponse(sessionID string, code int, message string) {
log.Printf("%s < %d %s", sessionID, code, message)
}
@@ -47,14 +47,14 @@ func (logger *StdLogger) PrintResponse(sessionID string, code int, message strin
// DiscardLogger represents a silent logger, produces no output
type DiscardLogger struct{}
// Print impelment Logger
// Print implements Logger
func (logger *DiscardLogger) Print(sessionID string, message interface{}) {}
// Printf impelment Logger
// Printf implements Logger
func (logger *DiscardLogger) Printf(sessionID string, format string, v ...interface{}) {}
// PrintCommand impelment Logger
// PrintCommand implements Logger
func (logger *DiscardLogger) PrintCommand(sessionID string, command string, params string) {}
// PrintResponse impelment Logger
// PrintResponse implements Logger
func (logger *DiscardLogger) PrintResponse(sessionID string, code int, message string) {}

View File

@@ -6,7 +6,6 @@ package server
import (
"bufio"
"bytes"
"crypto/rand"
"crypto/sha256"
"crypto/tls"
@@ -180,21 +179,10 @@ func (sess *Session) upgradeToTLS() error {
// appropriate response.
func (sess *Session) receiveLine(line string) {
defer func() {
if e := recover(); e != nil {
var buf bytes.Buffer
fmt.Fprintf(&buf, "Handler crashed with error: %v", e)
for i := 1; ; i++ {
_, file, line, ok := runtime.Caller(i)
if !ok {
break
} else {
fmt.Fprintf(&buf, "\n")
}
fmt.Fprintf(&buf, "%v:%v", file, line)
}
sess.log(buf.String())
if err := recover(); err != nil {
buf := make([]byte, 1<<16)
buf = buf[:runtime.Stack(buf, false)]
sess.logf("handler crashed with error:%v\n%s", err, buf)
}
}()