aboutsummaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go29
1 files changed, 7 insertions, 22 deletions
diff --git a/main.go b/main.go
index a2ace56..2e6329e 100644
--- a/main.go
+++ b/main.go
@@ -149,28 +149,13 @@ func parseRESP(reader *bufio.Reader) ([]string, error) {
argC, _ := strconv.Atoi(strings.TrimSpace(line[1:]))
for i := 0; i < argC; i++ {
- lengthLine, err := reader.ReadString('\n')
-
- if err != nil {
- return nil, err
- }
-
- strLen, _ := strconv.Atoi(strings.TrimSpace(lengthLine[1:]))
-
- buf := make([]byte, strLen)
-
- _, err = io.ReadFull(reader, buf)
- if err != nil {
- return nil, err
- }
-
- _, err = reader.Discard(2)
- if err != nil {
- return nil, err
- }
-
- args = append(args, string(buf))
- }
+ nestedArgs, err := parseRESP(reader)
+ if err != nil {
+ return nil, err
+ }
+
+ args = append(args, nestedArgs...)
+ }
return args, nil
case '$':
strLen, _ := strconv.Atoi(strings.TrimSpace(line[1:]))