Implement same behaviour as synapse

This commit is contained in:
Brendan Abolivier 2017-09-11 18:24:01 +01:00
parent 58767542e7
commit 0e356e2d27
No known key found for this signature in database
GPG key ID: 8EF1500759F70623

View file

@ -122,13 +122,26 @@ func createInviteFrom3PIDInvite(
if !queryRes.RoomExists { if !queryRes.RoomExists {
// Use federation to auth the event // Use federation to auth the event
var remoteServer gomatrixserverlib.ServerName var remoteServers []gomatrixserverlib.ServerName
_, remoteServer, err = gomatrixserverlib.SplitID('!', inv.RoomID) _, remoteServers[0], err = gomatrixserverlib.SplitID('@', inv.Sender)
if err != nil { if err != nil {
return nil, err return nil, err
} }
err = federation.ExchangeThirdPartyInvite(remoteServer, *builder) // Fallback to the room's server if the sender's domain is the same as
return nil, err // the current server's
_, remoteServers[1], err = gomatrixserverlib.SplitID('!', inv.RoomID)
if err != nil {
return nil, err
}
for _, server := range remoteServers {
if server == cfg.Matrix.ServerName {
continue
}
err = federation.ExchangeThirdPartyInvite(server, *builder)
return nil, err
}
} }
// Auth the event locally // Auth the event locally