diff --git a/channels/send.go b/channels/send.go index 0f8cfd7d5e4bab5a355732bb80f6e908c79e8219..91d15e60f45be2ecc608c7d85021401f5df5e61b 100644 --- a/channels/send.go +++ b/channels/send.go @@ -9,6 +9,7 @@ package channels import ( "crypto/ed25519" + "fmt" "github.com/pkg/errors" jww "github.com/spf13/jwalterweatherman" "gitlab.com/elixxir/client/cmix" @@ -18,6 +19,7 @@ import ( "gitlab.com/xx_network/primitives/id" "gitlab.com/xx_network/primitives/id/ephemeral" "gitlab.com/xx_network/primitives/netTime" + "golang.org/x/crypto/blake2b" "google.golang.org/protobuf/proto" "time" ) @@ -40,6 +42,11 @@ func (m *manager) SendGeneric(channelID *id.ID, messageType MessageType, msg []byte, validUntil time.Duration, params cmix.CMIXParams) ( cryptoChannel.MessageID, rounds.Round, ephemeral.Id, error) { + sendPrint := fmt.Sprintf("Sending to ch %s type %d at %s - "+ + "contentsHash %d", channelID, messageType, netTime.Now(), hashMsg(msg)) + + defer jww.INFO.Println(sendPrint) + //find the channel ch, err := m.getChannel(channelID) if err != nil { @@ -110,22 +117,36 @@ func (m *manager) SendGeneric(channelID *id.ID, messageType MessageType, return usrMsgSerial, nil } + sendPrint += fmt.Sprintf("\n\tDenoting pending send at %s", netTime.Now()) uuid, err := m.st.denotePendingSend(channelID, &userMessageInternal{ userMessage: usrMsg, channelMessage: chMsg, messageID: msgId, }) - + if err != nil { + sendPrint += fmt.Sprintf("\n\tDenoting pending send failed: %s", + err.Error()) + return cryptoChannel.MessageID{}, rounds.Round{}, ephemeral.Id{}, err + } + sendPrint += fmt.Sprintf("\n\tBroadcasting message at %s", netTime.Now()) r, ephid, err := ch.broadcast.BroadcastWithAssembler(assemble, params) if err != nil { + sendPrint += fmt.Sprintf("\n\tBroadcasting failed at %s, denoting "+ + "failure: %s", netTime.Now(), err.Error()) errDenote := m.st.failedSend(uuid) if errDenote != nil { - jww.ERROR.Printf("Failed to update for a failed send to "+ - "%s: %+v", channelID, err) + sendPrint += fmt.Sprintf("\n\tFailed to denote failure of "+ + "broadcast: %s", err.Error()) } return cryptoChannel.MessageID{}, rounds.Round{}, ephemeral.Id{}, err } + sendPrint += fmt.Sprintf("\n\tBroadcast succeeded at %s, denoting "+ + "send success", netTime.Now()) err = m.st.send(uuid, msgId, r) + if err != nil { + sendPrint += fmt.Sprintf("\n\tDenotation of send success failed: "+ + "%s", err.Error()) + } return msgId, r, ephid, err } @@ -288,3 +309,9 @@ func (m *manager) SendReaction(channelID *id.ID, reaction string, return m.SendGeneric(channelID, Reaction, reactMarshaled, ValidForever, params) } + +func hashMsg(msg []byte) []byte { + h, _ := blake2b.New256(nil) + h.Write(msg) + return h.Sum(nil) +}