X-Git-Url: https://git.r.bdr.sh/rbdr/mobius/blobdiff_plain/187d6dc500784760654b740a278fef59072ca5a8..af8daec6c282ca85669bfe03a7afb46c24607caa:/hotline/server.go?ds=sidebyside diff --git a/hotline/server.go b/hotline/server.go index 3a43c95..1fafb30 100644 --- a/hotline/server.go +++ b/hotline/server.go @@ -43,12 +43,10 @@ const ( var nostalgiaVersion = []byte{0, 0, 2, 0x2c} // version ID used by the Nostalgia client type Server struct { - Port int - Accounts map[string]*Account - Agreement []byte - Clients map[uint16]*ClientConn - ThreadedNews *ThreadedNews - + Port int + Accounts map[string]*Account + Agreement []byte + Clients map[uint16]*ClientConn fileTransfers map[[4]byte]*FileTransfer Config *Config @@ -64,6 +62,9 @@ type Server struct { outbox chan Transaction mux sync.Mutex + threadedNewsMux sync.Mutex + ThreadedNews *ThreadedNews + flatNewsMux sync.Mutex FlatNews []byte @@ -277,7 +278,7 @@ func NewServer(configDir string, netPort int, logger *zap.SugaredLogger, FS File if err := register(t, tr); err != nil { server.Logger.Errorw("unable to register with tracker %v", "error", err) } - server.Logger.Infow("Sent Tracker registration", "data", tr) + server.Logger.Debugw("Sent Tracker registration", "addr", t) } time.Sleep(trackerUpdateFrequency * time.Second) @@ -342,14 +343,14 @@ func (s *Server) writeBanList() error { } func (s *Server) writeThreadedNews() error { - s.mux.Lock() - defer s.mux.Unlock() + s.threadedNewsMux.Lock() + defer s.threadedNewsMux.Unlock() out, err := yaml.Marshal(s.ThreadedNews) if err != nil { return err } - err = ioutil.WriteFile( + err = s.FS.WriteFile( filepath.Join(s.ConfigDir, "ThreadedNews.yaml"), out, 0666, @@ -669,7 +670,7 @@ func (s *Server) handleNewConnection(ctx context.Context, rwc io.ReadWriteCloser if c.Version == nil || bytes.Equal(c.Version, nostalgiaVersion) { c.Agreed = true c.logger = c.logger.With("name", string(c.UserName)) - c.logger.Infow("Login successful", "clientVersion", fmt.Sprintf("%x", c.Version)) + c.logger.Infow("Login successful", "clientVersion", fmt.Sprintf("%v", func() int { i, _ := byteToInt(c.Version); return i }())) for _, t := range c.notifyOthers( *NewTransaction(