validate tags
This commit is contained in:
parent
a52cdbfe43
commit
acae38ab9e
|
@ -69,16 +69,32 @@ func execBlockOnProxyApp(txEventPublisher types.TxEventPublisher, proxyAppConn p
|
|||
|
||||
// NOTE: if we count we can access the tx from the block instead of
|
||||
// pulling it from the req
|
||||
event := types.EventDataTx{
|
||||
tx := types.Tx(req.GetDeliverTx().Tx)
|
||||
|
||||
tags := make(map[string]interface{})
|
||||
for _, t := range txResult.Tags {
|
||||
// basic validation
|
||||
if t.Key == "" {
|
||||
logger.Info("Got tag with an empty key (skipping)", "tag", t, "tx", tx)
|
||||
continue
|
||||
}
|
||||
|
||||
if t.ValueString != "" {
|
||||
tags[t.Key] = t.ValueString
|
||||
} else {
|
||||
tags[t.Key] = t.ValueInt
|
||||
}
|
||||
}
|
||||
|
||||
txEventPublisher.PublishEventTx(types.EventDataTx{
|
||||
Height: block.Height,
|
||||
Tx: types.Tx(req.GetDeliverTx().Tx),
|
||||
Tx: tx,
|
||||
Data: txResult.Data,
|
||||
Code: txResult.Code,
|
||||
Log: txResult.Log,
|
||||
Tags: txResult.Tags,
|
||||
Tags: tags,
|
||||
Error: txError,
|
||||
}
|
||||
txEventPublisher.PublishEventTx(event)
|
||||
})
|
||||
}
|
||||
}
|
||||
proxyAppConn.SetResponseCallback(proxyCb)
|
||||
|
|
|
@ -82,16 +82,8 @@ func (b *EventBus) PublishEventVote(vote EventDataVote) error {
|
|||
func (b *EventBus) PublishEventTx(tx EventDataTx) error {
|
||||
// no explicit deadline for publishing events
|
||||
ctx := context.Background()
|
||||
tags := make(map[string]interface{})
|
||||
for _, t := range tx.Tags {
|
||||
// TODO [@melekes]: validate, but where?
|
||||
if t.ValueString != "" {
|
||||
tags[t.Key] = t.ValueString
|
||||
} else {
|
||||
tags[t.Key] = t.ValueInt
|
||||
}
|
||||
}
|
||||
// predefined tags should come last
|
||||
tags := tx.Tags
|
||||
// add predefined tags (they should overwrite any existing tags)
|
||||
tags[EventTypeKey] = EventTx
|
||||
tags[TxHashKey] = fmt.Sprintf("%X", tx.Tx.Hash())
|
||||
b.pubsub.PublishWithTags(ctx, TMEventData{tx}, tags)
|
||||
|
|
|
@ -110,13 +110,13 @@ type EventDataNewBlockHeader struct {
|
|||
|
||||
// All txs fire EventDataTx
|
||||
type EventDataTx struct {
|
||||
Height int `json:"height"`
|
||||
Tx Tx `json:"tx"`
|
||||
Data data.Bytes `json:"data"`
|
||||
Log string `json:"log"`
|
||||
Code abci.CodeType `json:"code"`
|
||||
Tags []*abci.KVPair `json:"tags"`
|
||||
Error string `json:"error"` // this is redundant information for now
|
||||
Height int `json:"height"`
|
||||
Tx Tx `json:"tx"`
|
||||
Data data.Bytes `json:"data"`
|
||||
Log string `json:"log"`
|
||||
Code abci.CodeType `json:"code"`
|
||||
Tags map[string]interface{} `json:"tags"`
|
||||
Error string `json:"error"` // this is redundant information for now
|
||||
}
|
||||
|
||||
type EventDataProposalHeartbeat struct {
|
||||
|
|
Loading…
Reference in New Issue