diff --git a/sltcpsrv/server.go b/sltcpsrv/server.go index 28b51ac..b36ea40 100644 --- a/sltcpsrv/server.go +++ b/sltcpsrv/server.go @@ -1,12 +1,13 @@ package sltcpsrv import ( - "bytes" + "bufio" "flag" "fmt" - "io/ioutil" + "io" "log" "net" + "strings" ) var ( @@ -35,27 +36,22 @@ func ListenAndServe(port int) { func handleConnection(conn net.Conn) { defer conn.Close() - inbytes, err := ioutil.ReadAll(conn) - if err != nil { - log.Printf("Failed to read request body: %+v\n", err) - return - } + connBuf := bufio.NewReader(conn) - records := bytes.Split(inbytes, []byte("\n")) - nonempty := [][]byte{} + for { + line, err := connBuf.ReadString('\n') + if err != nil { + if err == io.EOF { + break + } - for _, rec := range records { - if len(rec) != 0 { - nonempty = append(nonempty, rec) + log.Printf("Failed to read line: %+v\n", err) + return } - } - - n := len(nonempty) - for i, rec := range nonempty { - msg := newMessage(rec) + msg := newMessage([]byte(strings.TrimSpace(line))) if msg != nil { - fmt.Printf("%v [%d of %d]: %+v\n", conn.RemoteAddr(), i+1, n, msg) + fmt.Printf("%v: %+v\n", conn.RemoteAddr(), msg) } } }