diff --git a/cmd/dwelling-upload/main.go b/cmd/dwelling-upload/main.go index 8372e25..5b03dab 100644 --- a/cmd/dwelling-upload/main.go +++ b/cmd/dwelling-upload/main.go @@ -40,23 +40,6 @@ func main() { return } - var network string - if !strings.ContainsRune(*listenAddress, ':') { - network = "unix" - defer os.Remove(*listenAddress) - } else { - ap, err := netip.ParseAddrPort(*listenAddress) - if err != nil { - log.Fatalln(err) - } - - if ap.Addr().Is4() { - network = "tcp4" - } else if ap.Addr().Is6() { - network = "tcp6" - } - } - watcha, err := watcher.NewInotifyWatcher() if err != nil { log.Fatalln(err) @@ -116,7 +99,7 @@ func main() { } }() - if err := srv.Start(network, *listenAddress); err != nil { + if err := srv.Start(*listenAddress); err != nil { log.Fatalln("failed to start a server:", err) } diff --git a/internal/http/server.go b/internal/http/server.go index 7a82e8b..cc7efa5 100644 --- a/internal/http/server.go +++ b/internal/http/server.go @@ -5,7 +5,9 @@ import ( "log" "net" "net/http" + "net/netip" "os" + "strings" "time" ) @@ -20,7 +22,24 @@ func NewHttpServer(r http.Handler) *HttpServer { Handler: r}} } -func (s *HttpServer) Start(network, address string) error { +func (s *HttpServer) Start(address string) error { + var network string + if !strings.ContainsRune(address, ':') { + network = "unix" + defer os.Remove(address) + } else { + ap, err := netip.ParseAddrPort(address) + if err != nil { + log.Fatalln(err) + } + + if ap.Addr().Is4() { + network = "tcp4" + } else if ap.Addr().Is6() { + network = "tcp6" + } + } + listener, err := net.Listen(network, address) if err != nil { return err