diff --git a/be1-go/internal/handler/method/rumorstate/hrumorstate/rumorstate.go b/be1-go/internal/handler/method/rumorstate/hrumorstate/rumorstate.go index c511ef1f14..66012a4956 100644 --- a/be1-go/internal/handler/method/rumorstate/hrumorstate/rumorstate.go +++ b/be1-go/internal/handler/method/rumorstate/hrumorstate/rumorstate.go @@ -71,10 +71,10 @@ func (h *Handler) Handle(socket socket.Socket, msg []byte) (*int, error) { return nil, nil } -func (h *Handler) SendRumorState() error { +func (h *Handler) createRumorState() ([]byte, error) { timestamp, err := h.db.GetRumorTimestamp() if err != nil { - return err + return nil, err } id := h.queries.GetNextID() @@ -94,10 +94,19 @@ func (h *Handler) SendRumorState() error { buf, err := json.Marshal(rumorStateMessage) if err != nil { - return errors.NewJsonMarshalError(err.Error()) + return nil, errors.NewJsonMarshalError(err.Error()) } err = h.queries.AddRumorState(id) + if err != nil { + return nil, err + } + + return buf, nil +} + +func (h *Handler) SendRumorState() error { + buf, err := h.createRumorState() if err != nil { return err } @@ -105,3 +114,14 @@ func (h *Handler) SendRumorState() error { h.sockets.SendToRandom(buf) return nil } + +func (h *Handler) SendRumorStateTo(socket socket.Socket) error { + buf, err := h.createRumorState() + if err != nil { + return err + } + + socket.Send(buf) + + return nil +} diff --git a/be1-go/internal/hub/hub.go b/be1-go/internal/hub/hub.go index 3b837e7d75..bdf36e0972 100644 --- a/be1-go/internal/hub/hub.go +++ b/be1-go/internal/hub/hub.go @@ -80,6 +80,7 @@ type RumorSender interface { type RumorStateSender interface { SendRumorState() error + SendRumorStateTo(socket socket.Socket) error } type Hub struct { @@ -235,6 +236,10 @@ func New(dbPath string, ownerPubKey kyber.Point, clientAddress, serverAddress st func (h *Hub) NotifyNewServer(socket socket.Socket) { h.sockets.Upsert(socket) + err := h.rumorStateSender.SendRumorStateTo(socket) + if err != nil { + h.log.Error().Err(err).Send() + } } func (h *Hub) Start() {