mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-26 08:13:09 -06:00
Attempt to reconnect to the static peer if it drops
This commit is contained in:
parent
6fa0a85f0c
commit
f2b10d854e
|
|
@ -38,6 +38,7 @@ import (
|
||||||
userapiAPI "github.com/matrix-org/dendrite/userapi/api"
|
userapiAPI "github.com/matrix-org/dendrite/userapi/api"
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
"github.com/matrix-org/gomatrixserverlib"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
|
"go.uber.org/atomic"
|
||||||
"golang.org/x/net/http2"
|
"golang.org/x/net/http2"
|
||||||
"golang.org/x/net/http2/h2c"
|
"golang.org/x/net/http2/h2c"
|
||||||
|
|
||||||
|
|
@ -45,6 +46,7 @@ import (
|
||||||
pineconeRouter "github.com/matrix-org/pinecone/router"
|
pineconeRouter "github.com/matrix-org/pinecone/router"
|
||||||
pineconeSessions "github.com/matrix-org/pinecone/sessions"
|
pineconeSessions "github.com/matrix-org/pinecone/sessions"
|
||||||
"github.com/matrix-org/pinecone/types"
|
"github.com/matrix-org/pinecone/types"
|
||||||
|
pineconeTypes "github.com/matrix-org/pinecone/types"
|
||||||
yggdrasilConfig "github.com/yggdrasil-network/yggdrasil-go/src/config"
|
yggdrasilConfig "github.com/yggdrasil-network/yggdrasil-go/src/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -55,18 +57,19 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
type DendriteMonolith struct {
|
type DendriteMonolith struct {
|
||||||
logger logrus.Logger
|
logger logrus.Logger
|
||||||
config *yggdrasilConfig.NodeConfig
|
config *yggdrasilConfig.NodeConfig
|
||||||
PineconeRouter *pineconeRouter.Router
|
PineconeRouter *pineconeRouter.Router
|
||||||
PineconeMulticast *pineconeMulticast.Multicast
|
PineconeMulticast *pineconeMulticast.Multicast
|
||||||
PineconeQUIC *pineconeSessions.Sessions
|
PineconeQUIC *pineconeSessions.Sessions
|
||||||
StorageDirectory string
|
StorageDirectory string
|
||||||
staticPeerURI string
|
staticPeerURI string
|
||||||
staticPeerMutex sync.RWMutex
|
staticPeerMutex sync.RWMutex
|
||||||
listener net.Listener
|
staticPeerAttempts atomic.Uint32
|
||||||
httpServer *http.Server
|
listener net.Listener
|
||||||
processContext *process.ProcessContext
|
httpServer *http.Server
|
||||||
userAPI userapiAPI.UserInternalAPI
|
processContext *process.ProcessContext
|
||||||
|
userAPI userapiAPI.UserInternalAPI
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *DendriteMonolith) BaseURL() string {
|
func (m *DendriteMonolith) BaseURL() string {
|
||||||
|
|
@ -252,6 +255,15 @@ func (m *DendriteMonolith) Start() {
|
||||||
m.PineconeQUIC = pineconeSessions.NewQUIC(logger, m.PineconeRouter)
|
m.PineconeQUIC = pineconeSessions.NewQUIC(logger, m.PineconeRouter)
|
||||||
m.PineconeMulticast = pineconeMulticast.NewMulticast(logger, m.PineconeRouter)
|
m.PineconeMulticast = pineconeMulticast.NewMulticast(logger, m.PineconeRouter)
|
||||||
|
|
||||||
|
m.PineconeRouter.SetDisconnectedCallback(func(port pineconeTypes.SwitchPortID, public pineconeTypes.PublicKey, peertype int, err error) {
|
||||||
|
m.staticPeerMutex.RLock()
|
||||||
|
uri := m.staticPeerURI
|
||||||
|
m.staticPeerMutex.RUnlock()
|
||||||
|
if peertype == pineconeRouter.PeerTypeRemote && uri != "" && err != nil {
|
||||||
|
conn.ConnectToPeer(m.PineconeRouter, uri)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
cfg := &config.Dendrite{}
|
cfg := &config.Dendrite{}
|
||||||
cfg.Defaults()
|
cfg.Defaults()
|
||||||
cfg.Global.ServerName = gomatrixserverlib.ServerName(hex.EncodeToString(pk))
|
cfg.Global.ServerName = gomatrixserverlib.ServerName(hex.EncodeToString(pk))
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@ import (
|
||||||
pineconeMulticast "github.com/matrix-org/pinecone/multicast"
|
pineconeMulticast "github.com/matrix-org/pinecone/multicast"
|
||||||
pineconeRouter "github.com/matrix-org/pinecone/router"
|
pineconeRouter "github.com/matrix-org/pinecone/router"
|
||||||
pineconeSessions "github.com/matrix-org/pinecone/sessions"
|
pineconeSessions "github.com/matrix-org/pinecone/sessions"
|
||||||
|
pineconeTypes "github.com/matrix-org/pinecone/types"
|
||||||
|
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
@ -124,6 +125,13 @@ func main() {
|
||||||
pMulticast := pineconeMulticast.NewMulticast(logger, pRouter)
|
pMulticast := pineconeMulticast.NewMulticast(logger, pRouter)
|
||||||
pMulticast.Start()
|
pMulticast.Start()
|
||||||
|
|
||||||
|
pRouter.SetDisconnectedCallback(func(port pineconeTypes.SwitchPortID, public pineconeTypes.PublicKey, peertype int, err error) {
|
||||||
|
uri := *instancePeer
|
||||||
|
if peertype == pineconeRouter.PeerTypeRemote && uri != "" && err != nil {
|
||||||
|
conn.ConnectToPeer(pRouter, uri)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
cfg := &config.Dendrite{}
|
cfg := &config.Dendrite{}
|
||||||
cfg.Defaults()
|
cfg.Defaults()
|
||||||
cfg.Global.ServerName = gomatrixserverlib.ServerName(hex.EncodeToString(pk))
|
cfg.Global.ServerName = gomatrixserverlib.ServerName(hex.EncodeToString(pk))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue