diff --git a/protocol/connections/engine.go b/protocol/connections/engine.go index 453df99..334a3f6 100644 --- a/protocol/connections/engine.go +++ b/protocol/connections/engine.go @@ -493,20 +493,18 @@ func (e *engine) sendMessageToGroup(groupID string, server string, ct []byte, si if err == nil { tokenApp, ok := (conn.App()).(*TokenBoardClient) if ok { - if spent, numtokens := tokenApp.Post(ct, sig); !spent { + if spent, _ := tokenApp.Post(ct, sig); !spent { // TODO: while this works for the spam guard, it won't work for other forms of payment... // Make an -inline- payment, this will hold the goroutine if err := tokenApp.MakePayment(); err == nil { // This really shouldn't fail since we now know we have the required tokens... - if spent, _ := tokenApp.Post(ct, sig); !spent { - e.eventManager.Publish(event.NewEvent(event.SendMessageToGroupError, map[event.Field]string{event.GroupID: groupID, event.GroupServer: server, event.Error: err.Error(), event.Signature: base64.StdEncoding.EncodeToString(sig)})) + if spent, numTokens := tokenApp.Post(ct, sig); !spent { + e.eventManager.Publish(event.NewEvent(event.SendMessageToGroupError, map[event.Field]string{event.GroupID: groupID, event.GroupServer: server, event.Error: fmt.Errorf("could not post %v", numTokens).Error(), event.Signature: base64.StdEncoding.EncodeToString(sig)})) } } else { // Broadcast the token error e.eventManager.Publish(event.NewEvent(event.SendMessageToGroupError, map[event.Field]string{event.GroupID: groupID, event.GroupServer: server, event.Error: err.Error(), event.Signature: base64.StdEncoding.EncodeToString(sig)})) } - } else if numtokens < 5 { - go tokenApp.MakePayment() } // regardless we return.... return