diff --git a/relayapi/internal/perform.go b/relayapi/internal/perform.go index f526f0e90..594299334 100644 --- a/relayapi/internal/perform.go +++ b/relayapi/internal/perform.go @@ -30,7 +30,9 @@ func (r *RelayInternalAPI) PerformRelayServerSync( userID gomatrixserverlib.UserID, relayServer gomatrixserverlib.ServerName, ) error { - prevEntry := gomatrixserverlib.RelayEntry{EntryID: -1} + // Providing a default RelayEntry (EntryID = 0) is done to ask the relay if there are any + // transactions available for this node. + prevEntry := gomatrixserverlib.RelayEntry{} asyncResponse, err := r.fedClient.P2PGetTransactionFromRelay(ctx, userID, prevEntry, relayServer) if err != nil { logrus.Errorf("P2PGetTransactionFromRelay: %s", err.Error()) @@ -38,7 +40,9 @@ func (r *RelayInternalAPI) PerformRelayServerSync( } r.processTransaction(&asyncResponse.Txn) + prevEntry = gomatrixserverlib.RelayEntry{EntryID: asyncResponse.EntryID} for asyncResponse.EntriesQueued { + // There are still more entries available for this node from the relay. logrus.Infof("Retrieving next entry from relay, previous: %v", prevEntry) asyncResponse, err = r.fedClient.P2PGetTransactionFromRelay(ctx, userID, prevEntry, relayServer) prevEntry = gomatrixserverlib.RelayEntry{EntryID: asyncResponse.EntryID} @@ -82,7 +86,7 @@ func (r *RelayInternalAPI) QueryTransactions( previousEntry gomatrixserverlib.RelayEntry, ) (api.QueryRelayTransactionsResponse, error) { logrus.Infof("QueryTransactions for %s", userID.Raw()) - if previousEntry.EntryID >= 0 { + if previousEntry.EntryID > 0 { logrus.Infof("Cleaning previous entry (%v) from db for %s", previousEntry.EntryID, userID.Raw(), @@ -109,7 +113,7 @@ func (r *RelayInternalAPI) QueryTransactions( response.EntriesQueued = true } else { logrus.Infof("No more entries in the queue for %s", userID.Raw()) - response.EntryID = -1 + response.EntryID = 0 response.EntriesQueued = false } diff --git a/relayapi/routing/relaytxn.go b/relayapi/routing/relaytxn.go index bdbd87d74..1c9e350a5 100644 --- a/relayapi/routing/relaytxn.go +++ b/relayapi/routing/relaytxn.go @@ -40,7 +40,7 @@ func GetTransactionFromRelay( ) util.JSONResponse { logrus.Infof("Handling relay_txn for %s", userID.Raw()) - previousEntry := gomatrixserverlib.RelayEntry{EntryID: -1} + previousEntry := gomatrixserverlib.RelayEntry{} if err := json.Unmarshal(fedReq.Content(), &previousEntry); err == nil { logrus.Infof("Previous entry provided: %v", previousEntry.EntryID) }