Skip to content

Commit 06974fc

Browse files
author
Marius Sturm
committed
Merge pull request #3 from dqminh/fix-gelf-uncompressed
Fix gelf uncompressed scheme
2 parents e1cf699 + ed00d3a commit 06974fc

File tree

3 files changed

+6
-15
lines changed

3 files changed

+6
-15
lines changed

gelf/reader.go

+5-7
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ func (r *Reader) ReadMessage() (*Message, error) {
6666
var (
6767
err error
6868
n, length int
69-
buf bytes.Buffer
7069
cid, ocid []byte
7170
seq, total uint8
7271
cHead []byte
@@ -122,19 +121,18 @@ func (r *Reader) ReadMessage() (*Message, error) {
122121
// zlib is slightly more complicated, but correct
123122
cReader, err = zlib.NewReader(bytes.NewReader(cBuf))
124123
} else {
125-
return nil, fmt.Errorf("unknown magic: %x %v", cHead, cHead)
124+
// compliance with https://github.com/Graylog2/graylog2-server
125+
// treating all messages as uncompressed if they are not gzip, zlib or
126+
// chunked
127+
cReader = bytes.NewReader(cBuf)
126128
}
127129

128130
if err != nil {
129131
return nil, fmt.Errorf("NewReader: %s", err)
130132
}
131133

132-
if _, err = io.Copy(&buf, cReader); err != nil {
133-
return nil, fmt.Errorf("io.Copy: %s", err)
134-
}
135-
136134
msg := new(Message)
137-
if err := json.Unmarshal(buf.Bytes(), &msg); err != nil {
135+
if err := json.NewDecoder(cReader).Decode(&msg); err != nil {
138136
return nil, fmt.Errorf("json.Unmarshal: %s", err)
139137
}
140138

gelf/writer.go

-7
Original file line numberDiff line numberDiff line change
@@ -199,13 +199,6 @@ func newBuffer() *bytes.Buffer {
199199
func (w *Writer) WriteMessage(m *Message) (err error) {
200200
mBuf := newBuffer()
201201
defer bufPool.Put(mBuf)
202-
// when compression is disabled, prewrite the magic byte before encoding
203-
// so we dont have to re-copy the slice after
204-
if w.CompressionType == CompressNone {
205-
if _, err = mBuf.Write([]byte{0x1f, 0x3c}); err != nil {
206-
return err
207-
}
208-
}
209202
if err = m.MarshalJSONBuf(mBuf); err != nil {
210203
return err
211204
}

gelf/writer_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ func sendAndRecvMsg(msg *Message, compress CompressType) (*Message, error) {
6666
// tests single-message (non-chunked) messages that are split over
6767
// multiple lines
6868
func TestWriteSmallMultiLine(t *testing.T) {
69-
for _, i := range []CompressType{CompressGzip, CompressZlib} {
69+
for _, i := range []CompressType{CompressGzip, CompressZlib, CompressNone} {
7070
msgData := "awesomesauce\nbananas"
7171

7272
msg, err := sendAndRecv(msgData, i)

0 commit comments

Comments
 (0)