diff options
Diffstat (limited to 'build/gobind/monolith.go')
-rw-r--r-- | build/gobind/monolith.go | 67 |
1 files changed, 16 insertions, 51 deletions
diff --git a/build/gobind/monolith.go b/build/gobind/monolith.go index bc638d00..7b0385bc 100644 --- a/build/gobind/monolith.go +++ b/build/gobind/monolith.go @@ -3,7 +3,6 @@ package gobind import ( "context" "crypto/tls" - "encoding/hex" "fmt" "net" "net/http" @@ -25,7 +24,6 @@ import ( "github.com/matrix-org/dendrite/userapi" "github.com/matrix-org/gomatrixserverlib" "github.com/sirupsen/logrus" - "github.com/yggdrasil-network/yggdrasil-go/src/crypto" "go.uber.org/atomic" ) @@ -169,33 +167,6 @@ func (m *DendriteMonolith) Start() { base.UseHTTPAPIs, ) - ygg.NewSession = func(serverName gomatrixserverlib.ServerName) { - logrus.Infof("Found new session %q", serverName) - time.Sleep(time.Second * 3) - req := &api.PerformServersAliveRequest{ - Servers: []gomatrixserverlib.ServerName{serverName}, - } - res := &api.PerformServersAliveResponse{} - if err := fsAPI.PerformServersAlive(context.TODO(), req, res); err != nil { - logrus.WithError(err).Warn("Failed to notify server alive due to new session") - } - } - - ygg.NotifyLinkNew(func(_ crypto.BoxPubKey, sigPubKey crypto.SigPubKey, linkType, remote string) { - serverName := hex.EncodeToString(sigPubKey[:]) - logrus.Infof("Found new peer %q", serverName) - time.Sleep(time.Second * 3) - req := &api.PerformServersAliveRequest{ - Servers: []gomatrixserverlib.ServerName{ - gomatrixserverlib.ServerName(serverName), - }, - } - res := &api.PerformServersAliveResponse{} - if err := fsAPI.PerformServersAlive(context.TODO(), req, res); err != nil { - logrus.WithError(err).Warn("Failed to notify server alive due to new session") - } - }) - // Build both ends of a HTTP multiplex. m.httpServer = &http.Server{ Addr: ":0", @@ -209,28 +180,22 @@ func (m *DendriteMonolith) Start() { Handler: base.BaseMux, } - m.Resume() -} - -func (m *DendriteMonolith) Resume() { - logrus.Info("Resuming monolith") - if listener, err := net.Listen("tcp", "localhost:65432"); err == nil { - m.listener = listener - } - if m.yggListening.CAS(false, true) { - go func() { - m.logger.Info("Listening on ", m.YggdrasilNode.DerivedServerName()) - m.logger.Fatal(m.httpServer.Serve(m.YggdrasilNode)) - m.yggListening.Store(false) - }() - } - if m.httpListening.CAS(false, true) { - go func() { - m.logger.Info("Listening on ", m.BaseURL()) - m.logger.Fatal(m.httpServer.Serve(m.listener)) - m.httpListening.Store(false) - }() - } + go func() { + logger.Info("Listening on ", ygg.DerivedServerName()) + logger.Fatal(httpServer.Serve(ygg)) + }() + go func() { + logger.Info("Listening on ", m.BaseURL()) + logger.Fatal(httpServer.Serve(m.listener)) + }() + go func() { + logrus.Info("Sending wake-up message to known nodes") + req := &api.PerformBroadcastEDURequest{} + res := &api.PerformBroadcastEDUResponse{} + if err := fsAPI.PerformBroadcastEDU(context.TODO(), req, res); err != nil { + logrus.WithError(err).Error("Failed to send wake-up message to known nodes") + } + }() } func (m *DendriteMonolith) Suspend() { |