Change to using default prevEntryIDs for initial relay query

This commit is contained in:
Devon Hudson 2023-01-17 17:08:07 -07:00
parent 5aa6b47a64
commit 41cd9d256e
No known key found for this signature in database
GPG key ID: CD06B18E77F6A628
2 changed files with 8 additions and 4 deletions

View file

@ -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
}

View file

@ -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)
}