From a55ea42d7f5900bd5fc8fad047040c7865824f33 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sat, 15 Jun 2019 01:11:51 +0300 Subject: Unbreak things --- matrix/history.go | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'matrix/history.go') diff --git a/matrix/history.go b/matrix/history.go index 767cace..7275c15 100644 --- a/matrix/history.go +++ b/matrix/history.go @@ -18,6 +18,7 @@ package matrix import ( "bytes" + "compress/gzip" "encoding/binary" "encoding/gob" @@ -28,6 +29,10 @@ import ( "maunium.net/go/mautrix" ) +func init() { + gob.Register(&mautrix.Event{}) +} + type HistoryManager struct { sync.Mutex @@ -226,13 +231,27 @@ func btoi(b []byte) uint64 { func marshalEvent(event *mautrix.Event) ([]byte, error) { var buf bytes.Buffer - err := gob.NewEncoder(&buf).Encode(event) - return buf.Bytes(), err + enc := gzip.NewWriter(&buf) + if err := gob.NewEncoder(enc).Encode(event); err != nil { + _ = enc.Close() + return nil, err + } else if err := enc.Close(); err != nil { + return nil, err + } + return buf.Bytes(), nil } func unmarshalEvent(data []byte) (*mautrix.Event, error) { event := &mautrix.Event{} - return event, gob.NewDecoder(bytes.NewReader(data)).Decode(event) + if cmpReader, err := gzip.NewReader(bytes.NewReader(data)); err != nil { + return nil, err + } else if err := gob.NewDecoder(cmpReader).Decode(event); err != nil { + _ = cmpReader.Close() + return nil, err + } else if err := cmpReader.Close(); err != nil { + return nil, err + } + return event, nil } func put(streams, eventIDs *bolt.Bucket, event *mautrix.Event, key uint64) error { -- cgit v1.2.3