aboutsummaryrefslogtreecommitdiff
path: root/roomserver/api
diff options
context:
space:
mode:
authorNeil Alexander <neilalexander@users.noreply.github.com>2022-11-15 15:05:23 +0000
committerNeil Alexander <neilalexander@users.noreply.github.com>2022-11-15 15:05:23 +0000
commit6650712a1c0dec282b47b7ba14bc8c2e06a385d8 (patch)
tree12ca755c5c33d3489417f9355dda3f1b7983c779 /roomserver/api
parentf4ee3977340c84d321767d347795b1dcd05ac459 (diff)
Federation fixes for virtual hosting
Diffstat (limited to 'roomserver/api')
-rw-r--r--roomserver/api/input.go5
-rw-r--r--roomserver/api/perform.go2
-rw-r--r--roomserver/api/wrapper.go11
3 files changed, 12 insertions, 6 deletions
diff --git a/roomserver/api/input.go b/roomserver/api/input.go
index 45a9ef49..88d52327 100644
--- a/roomserver/api/input.go
+++ b/roomserver/api/input.go
@@ -94,8 +94,9 @@ type TransactionID struct {
// InputRoomEventsRequest is a request to InputRoomEvents
type InputRoomEventsRequest struct {
- InputRoomEvents []InputRoomEvent `json:"input_room_events"`
- Asynchronous bool `json:"async"`
+ InputRoomEvents []InputRoomEvent `json:"input_room_events"`
+ Asynchronous bool `json:"async"`
+ VirtualHost gomatrixserverlib.ServerName `json:"virtual_host"`
}
// InputRoomEventsResponse is a response to InputRoomEvents
diff --git a/roomserver/api/perform.go b/roomserver/api/perform.go
index 2536a4bb..e70e5ea9 100644
--- a/roomserver/api/perform.go
+++ b/roomserver/api/perform.go
@@ -148,6 +148,8 @@ type PerformBackfillRequest struct {
Limit int `json:"limit"`
// The server interested in the events.
ServerName gomatrixserverlib.ServerName `json:"server_name"`
+ // Which virtual host are we doing this for?
+ VirtualHost gomatrixserverlib.ServerName `json:"virtual_host"`
}
// PrevEventIDs returns the prev_event IDs of all backwards extremities, de-duplicated in a lexicographically sorted order.
diff --git a/roomserver/api/wrapper.go b/roomserver/api/wrapper.go
index 8b031982..252be557 100644
--- a/roomserver/api/wrapper.go
+++ b/roomserver/api/wrapper.go
@@ -26,7 +26,7 @@ import (
func SendEvents(
ctx context.Context, rsAPI InputRoomEventsAPI,
kind Kind, events []*gomatrixserverlib.HeaderedEvent,
- origin gomatrixserverlib.ServerName,
+ virtualHost, origin gomatrixserverlib.ServerName,
sendAsServer gomatrixserverlib.ServerName, txnID *TransactionID,
async bool,
) error {
@@ -40,14 +40,15 @@ func SendEvents(
TransactionID: txnID,
}
}
- return SendInputRoomEvents(ctx, rsAPI, ires, async)
+ return SendInputRoomEvents(ctx, rsAPI, virtualHost, ires, async)
}
// SendEventWithState writes an event with the specified kind to the roomserver
// with the state at the event as KindOutlier before it. Will not send any event that is
// marked as `true` in haveEventIDs.
func SendEventWithState(
- ctx context.Context, rsAPI InputRoomEventsAPI, kind Kind,
+ ctx context.Context, rsAPI InputRoomEventsAPI,
+ virtualHost gomatrixserverlib.ServerName, kind Kind,
state *gomatrixserverlib.RespState, event *gomatrixserverlib.HeaderedEvent,
origin gomatrixserverlib.ServerName, haveEventIDs map[string]bool, async bool,
) error {
@@ -85,17 +86,19 @@ func SendEventWithState(
StateEventIDs: stateEventIDs,
})
- return SendInputRoomEvents(ctx, rsAPI, ires, async)
+ return SendInputRoomEvents(ctx, rsAPI, virtualHost, ires, async)
}
// SendInputRoomEvents to the roomserver.
func SendInputRoomEvents(
ctx context.Context, rsAPI InputRoomEventsAPI,
+ virtualHost gomatrixserverlib.ServerName,
ires []InputRoomEvent, async bool,
) error {
request := InputRoomEventsRequest{
InputRoomEvents: ires,
Asynchronous: async,
+ VirtualHost: virtualHost,
}
var response InputRoomEventsResponse
if err := rsAPI.InputRoomEvents(ctx, &request, &response); err != nil {