From 9e280221b680c73b6c46e1d82cbce1ae59e42d57 Mon Sep 17 00:00:00 2001 From: Mechiel Lukkien Date: Mon, 27 Feb 2023 14:12:58 +0100 Subject: [PATCH] merge start.go into serve.go --- serve.go | 54 +++++++++++++++++++++++++++++++++++++++++++++++ start.go | 64 -------------------------------------------------------- 2 files changed, 54 insertions(+), 64 deletions(-) delete mode 100644 start.go diff --git a/serve.go b/serve.go index 959c92e..d9b6937 100644 --- a/serve.go +++ b/serve.go @@ -19,14 +19,21 @@ import ( "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" + "github.com/mjl-/mox/dmarcdb" "github.com/mjl-/mox/dns" "github.com/mjl-/mox/dnsbl" + "github.com/mjl-/mox/http" + "github.com/mjl-/mox/imapserver" "github.com/mjl-/mox/message" "github.com/mjl-/mox/metrics" "github.com/mjl-/mox/mlog" "github.com/mjl-/mox/mox-" "github.com/mjl-/mox/moxvar" + "github.com/mjl-/mox/mtastsdb" + "github.com/mjl-/mox/queue" + "github.com/mjl-/mox/smtpserver" "github.com/mjl-/mox/store" + "github.com/mjl-/mox/tlsrptdb" "github.com/mjl-/mox/updates" ) @@ -545,3 +552,50 @@ func fixperms(log *mlog.Log, workdir, configdir, datadir string, moxuid, moxgid } return nil } + +// start initializes all packages, starts all listeners and the switchboard +// goroutine, then returns. +func start(mtastsdbRefresher, skipForkExec bool) error { + smtpserver.Listen() + imapserver.Listen() + http.Listen() + + if !skipForkExec { + // If we were just launched as root, fork and exec as unprivileged user, handing + // over the bound sockets to the new process. We'll get to this same code path + // again, skipping this if block, continuing below with the actual serving. + if os.Getuid() == 0 { + mox.ForkExecUnprivileged() + panic("cannot happen") + } else { + mox.CleanupPassedSockets() + } + } + + if err := dmarcdb.Init(); err != nil { + return fmt.Errorf("dmarc init: %s", err) + } + + if err := mtastsdb.Init(mtastsdbRefresher); err != nil { + return fmt.Errorf("mtasts init: %s", err) + } + + if err := tlsrptdb.Init(); err != nil { + return fmt.Errorf("tlsrpt init: %s", err) + } + + done := make(chan struct{}, 1) + if err := queue.Start(dns.StrictResolver{Pkg: "queue"}, done); err != nil { + return fmt.Errorf("queue start: %s", err) + } + + store.StartAuthCache() + smtpserver.Serve() + imapserver.Serve() + http.Serve() + + go func() { + <-store.Switchboard() + }() + return nil +} diff --git a/start.go b/start.go deleted file mode 100644 index c36dd8e..0000000 --- a/start.go +++ /dev/null @@ -1,64 +0,0 @@ -package main - -import ( - "fmt" - "os" - - "github.com/mjl-/mox/dmarcdb" - "github.com/mjl-/mox/dns" - "github.com/mjl-/mox/http" - "github.com/mjl-/mox/imapserver" - "github.com/mjl-/mox/mox-" - "github.com/mjl-/mox/mtastsdb" - "github.com/mjl-/mox/queue" - "github.com/mjl-/mox/smtpserver" - "github.com/mjl-/mox/store" - "github.com/mjl-/mox/tlsrptdb" -) - -// start initializes all packages, starts all listeners and the switchboard -// goroutine, then returns. -func start(mtastsdbRefresher, skipForkExec bool) error { - smtpserver.Listen() - imapserver.Listen() - http.Listen() - - if !skipForkExec { - // If we were just launched as root, fork and exec as unprivileged user, handing - // over the bound sockets to the new process. We'll get to this same code path - // again, skipping this if block, continuing below with the actual serving. - if os.Getuid() == 0 { - mox.ForkExecUnprivileged() - panic("cannot happen") - } else { - mox.CleanupPassedSockets() - } - } - - if err := dmarcdb.Init(); err != nil { - return fmt.Errorf("dmarc init: %s", err) - } - - if err := mtastsdb.Init(mtastsdbRefresher); err != nil { - return fmt.Errorf("mtasts init: %s", err) - } - - if err := tlsrptdb.Init(); err != nil { - return fmt.Errorf("tlsrpt init: %s", err) - } - - done := make(chan struct{}, 1) - if err := queue.Start(dns.StrictResolver{Pkg: "queue"}, done); err != nil { - return fmt.Errorf("queue start: %s", err) - } - - store.StartAuthCache() - smtpserver.Serve() - imapserver.Serve() - http.Serve() - - go func() { - <-store.Switchboard() - }() - return nil -}