diff --git a/config/config.go b/config/config.go index 2c1635a..b21282b 100644 --- a/config/config.go +++ b/config/config.go @@ -50,7 +50,7 @@ func parse(src io.Reader) *ServerProperties { scanner := bufio.NewScanner(src) for scanner.Scan() { line := scanner.Text() - if len(line) > 0 && line[0] == '#' { + if len(line) > 0 && strings.TrimLeft(line, " ")[0] == '#' { continue } pivot := strings.IndexAny(line, " ") @@ -72,7 +72,7 @@ func parse(src io.Reader) *ServerProperties { field := t.Elem().Field(i) fieldVal := v.Elem().Field(i) key, ok := field.Tag.Lookup("cfg") - if !ok { + if !ok || strings.TrimLeft(key, " ") == "" { key = field.Name } value, ok := rawMap[strings.ToLower(key)] diff --git a/redis/parser/parser.go b/redis/parser/parser.go index e22286c..1df0e6b 100644 --- a/redis/parser/parser.go +++ b/redis/parser/parser.go @@ -76,6 +76,7 @@ func parse0(reader io.Reader, ch chan<- *Payload) { defer func() { if err := recover(); err != nil { logger.Error(err, string(debug.Stack())) + close(ch) } }() @@ -88,17 +89,12 @@ func parse0(reader io.Reader, ch chan<- *Payload) { var ioErr bool msg, ioErr, err = readLine(bufReader, &state) if err != nil { + ch <- &Payload{Err: err} if ioErr { // encounter io err, stop read - ch <- &Payload{ - Err: err, - } close(ch) return } // protocol err, reset read state - ch <- &Payload{ - Err: err, - } state = readState{} continue } @@ -227,9 +223,8 @@ func parseMultiBulkHeader(msg []byte, state *readState) error { state.expectedArgsCount = int(expectedLine) state.args = make([][]byte, 0, expectedLine) return nil - } else { - return errors.New("protocol error: " + string(msg)) } + return errors.New("protocol error: " + string(msg)) } func parseBulkHeader(msg []byte, state *readState) error { @@ -246,9 +241,8 @@ func parseBulkHeader(msg []byte, state *readState) error { state.expectedArgsCount = 1 state.args = make([][]byte, 0, 1) return nil - } else { - return errors.New("protocol error: " + string(msg)) } + return errors.New("protocol error: " + string(msg)) } func parseSingleLineReply(msg []byte) (redis.Reply, error) {