diff --git a/src/app/spreed-speakfreely-server/server.go b/src/app/spreed-speakfreely-server/server.go index ae677bfe..29d1ddb7 100644 --- a/src/app/spreed-speakfreely-server/server.go +++ b/src/app/spreed-speakfreely-server/server.go @@ -175,24 +175,26 @@ func (s *Server) UpdateUser(c *Connection, userupdate *UserUpdate) uint64 { func (s *Server) Broadcast(c *Connection, m interface{}) { - b, err := json.Marshal(&DataOutgoing{From: c.Id, Data: m}) + b := c.h.buffers.New() + encoder := json.NewEncoder(b) + err := encoder.Encode(&DataOutgoing{From: c.Id, Data: m}) if err != nil { + b.Decref() log.Println("Broadcast error while encoding JSON", err) return } - buffer := c.h.buffers.Wrap(b) if c.h.isGlobalRoomid(c.Roomid) { c.h.RunForAllRooms(func(room *RoomWorker) { - var msg = &MessageRequest{From: c.Id, Message: buffer, Id: room.Id} + var msg = &MessageRequest{From: c.Id, Message: b, Id: room.Id} room.broadcastHandler(msg) }) } else { - var msg = &MessageRequest{From: c.Id, Message: buffer, Id: c.Roomid} + var msg = &MessageRequest{From: c.Id, Message: b, Id: c.Roomid} room := c.h.GetRoom(c.Roomid) room.broadcastHandler(msg) } - buffer.Decref() + b.Decref() }