Skip to content
Snippets Groups Projects
Commit 047b81be authored by Richard T. Carback III's avatar Richard T. Carback III
Browse files

Merge branch 'hotfix/multipleSendGroupChat' into 'release'

Hotfix/multiple send group chat

See merge request !69
parents eb8abb8e f0340ef8
No related branches found
No related tags found
2 merge requests!69Hotfix/multiple send group chat,!67Release
......@@ -8,6 +8,8 @@
package bindings
import (
"encoding/json"
"fmt"
"github.com/pkg/errors"
gc "gitlab.com/elixxir/client/groupChat"
gs "gitlab.com/elixxir/client/groupChat/groupStore"
......@@ -167,6 +169,12 @@ type NewGroupReport struct {
err string
}
type GroupReportDisk struct {
List []id.Round
GrpId []byte
Status int
}
// GetGroup returns the Group.
func (ngr *NewGroupReport) GetGroup() *Group {
return ngr.group
......@@ -193,6 +201,36 @@ func (ngr *NewGroupReport) GetError() string {
return ngr.err
}
func (ngr *NewGroupReport) Marshal() ([]byte, error) {
grpReportDisk := GroupReportDisk{
List: ngr.rounds,
GrpId: ngr.group.GetID()[:],
Status: ngr.GetStatus(),
}
return json.Marshal(&grpReportDisk)
}
func (ngr *NewGroupReport) Unmarshal(b []byte) error {
grpReportDisk := GroupReportDisk{}
if err := json.Unmarshal(b, &grpReportDisk); err != nil {
return errors.New(fmt.Sprintf("Failed to unmarshal group "+
"report: %s", err.Error()))
}
grpId, err := id.Unmarshal(grpReportDisk.GrpId)
if err != nil {
return errors.New(fmt.Sprintf("Failed to unmarshal group "+
"id: %s", err.Error()))
}
ngr.group.g.ID = grpId
ngr.rounds = grpReportDisk.List
ngr.status = gc.RequestStatus(grpReportDisk.Status)
return nil
}
////
// NewGroupReport Structure
////
......
......@@ -103,6 +103,7 @@ func sendManyCmixHelper(sender *gateway.Sender, msgs map[id.ID]format.Message,
firstGateway, roundKeys, err := processRound(instance, session,
nodeRegistration, bestRound, recipientString, msgDigests)
if err != nil {
jww.INFO.Printf("error processing round: %v", err)
jww.WARN.Printf("SendManyCMIX failed to process round %d "+
"(will retry): %+v", bestRound.ID, err)
continue
......@@ -117,6 +118,7 @@ func sendManyCmixHelper(sender *gateway.Sender, msgs map[id.ID]format.Message,
slots[i], encMsgs[i], ephemeralIds[i], err = buildSlotMessage(
msg, &recipient, firstGateway, stream, senderId, bestRound, roundKeys, param)
if err != nil {
jww.INFO.Printf("error building slot received: %v", err)
return 0, []ephemeral.Id{}, errors.Errorf("failed to build "+
"slot message for %s: %+v", recipient, err)
}
......@@ -162,9 +164,10 @@ func sendManyCmixHelper(sender *gateway.Sender, msgs map[id.ID]format.Message,
jww.ERROR.Printf("SendManyCMIX failed to send to EphIDs [%s] "+
"(sources: %s) on round %d, trying a new round %+v",
ephemeralIdsString, recipientString, bestRound.ID, err)
jww.INFO.Printf("error received, continuing: %v", err)
continue
}
jww.INFO.Printf("error received: %v", err)
return 0, []ephemeral.Id{}, err
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment