diff options
| -rw-r--r-- | cmd/rescached/main.go | 10 | ||||
| -rw-r--r-- | go.mod | 15 | ||||
| -rw-r--r-- | go.sum | 26 | ||||
| -rw-r--r-- | internal/cmd/www/main.go | 2 | ||||
| -rw-r--r-- | rescached.go | 43 |
5 files changed, 50 insertions, 46 deletions
diff --git a/cmd/rescached/main.go b/cmd/rescached/main.go index 505e2b8..2ab18fe 100644 --- a/cmd/rescached/main.go +++ b/cmd/rescached/main.go @@ -128,19 +128,19 @@ func watchWww(env *rescached.Environment, running chan bool) { tick = time.NewTicker(3 * time.Second) isRunning = true - dw *memfs.DirWatcher + changeq <-chan []*memfs.Node nChanges int err error ) - dw, err = env.HttpdOptions.Memfs.Watch(memfs.WatchOptions{}) + changeq, err = env.HttpdOptions.Memfs.Watch(memfs.WatchOptions{}) if err != nil { log.Fatalf("%s: %s", logp, err) } for isRunning { select { - case <-dw.C: + case <-changeq: nChanges++ case <-tick.C: @@ -168,7 +168,7 @@ func watchWww(env *rescached.Environment, running chan bool) { log.Printf("%s", err) } } - dw.Stop() + env.HttpdOptions.Memfs.StopWatch() running <- false } @@ -183,7 +183,7 @@ func watchWwwDoc() { err error ) - err = ciigo.Watch(&convertOpts) + err = ciigo.Watch(convertOpts) if err != nil { log.Fatalf("%s: %s", logp, err) } @@ -3,19 +3,20 @@ module git.sr.ht/~shulhan/rescached -go 1.22.0 +go 1.23.4 require ( - git.sr.ht/~shulhan/ciigo v0.13.2 - git.sr.ht/~shulhan/pakakeh.go v0.57.0 + git.sr.ht/~shulhan/ciigo v0.15.0 + git.sr.ht/~shulhan/pakakeh.go v0.59.0 ) require ( - git.sr.ht/~shulhan/asciidoctor-go v0.6.0 // indirect - github.com/yuin/goldmark v1.7.4 // indirect + git.sr.ht/~shulhan/asciidoctor-go v0.6.2-0.20250106025231-ed20fc1c23e8 // indirect + github.com/yuin/goldmark v1.7.8 // indirect github.com/yuin/goldmark-meta v1.1.0 // indirect - golang.org/x/net v0.29.0 // indirect - golang.org/x/sys v0.25.0 // indirect + golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/sys v0.29.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect ) @@ -1,17 +1,19 @@ -git.sr.ht/~shulhan/asciidoctor-go v0.6.0 h1:UepFox79vims2UqJGsQEoqLCrxhIHsk0YT2/H/fl+Oc= -git.sr.ht/~shulhan/asciidoctor-go v0.6.0/go.mod h1:kUikWOI/WkTyRZrGfKDqevCplz40yOlQRynxAdMneAg= -git.sr.ht/~shulhan/ciigo v0.13.2 h1:Apfj8Hj+sBgYcbm45PB5TDOMtvrtvkALPISCNVli9X4= -git.sr.ht/~shulhan/ciigo v0.13.2/go.mod h1:iopkwqIQKSH2T05cmHI8FjJ1Rz4xbPBuBivEJzQmDgg= -git.sr.ht/~shulhan/pakakeh.go v0.57.0 h1:4ReTu2KQqF7NPKgAVjXUTaHiu7tY/UXVosZYvHpUs9s= -git.sr.ht/~shulhan/pakakeh.go v0.57.0/go.mod h1:+vUHUOSgUP0oG40gKb8YlQySSZHkywyL4eTA0v/OJWo= -github.com/yuin/goldmark v1.7.4 h1:BDXOHExt+A7gwPCJgPIIq7ENvceR7we7rOS9TNoLZeg= -github.com/yuin/goldmark v1.7.4/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E= +git.sr.ht/~shulhan/asciidoctor-go v0.6.2-0.20250106025231-ed20fc1c23e8 h1:8qzcug5hnyz1QPVxCf9J3JhIzPSnc+zUK5VQachVQf0= +git.sr.ht/~shulhan/asciidoctor-go v0.6.2-0.20250106025231-ed20fc1c23e8/go.mod h1:QOHiOctWAPcVlTMOKnnwmpnLrobkv7oNAPAf4gZjtWs= +git.sr.ht/~shulhan/ciigo v0.15.0 h1:wUtCLNCkUg+he0qtu4Sass9cp7g9eSRivywwFxUe5bs= +git.sr.ht/~shulhan/ciigo v0.15.0/go.mod h1:JsCkrOX3WKssLWGEaxMhXm1NMXdVi/J6cQEfp8fIEV8= +git.sr.ht/~shulhan/pakakeh.go v0.59.0 h1:haUyuusXQ0YVgHbbhi46Nkl/CEPhRe+cIJz22kQFGuM= +git.sr.ht/~shulhan/pakakeh.go v0.59.0/go.mod h1:UsrvzhSUJZpm1Aub99RI/XwtNnbBlJmaNoWWd9++VyI= +github.com/yuin/goldmark v1.7.8 h1:iERMLn0/QJeHFhxSt3p6PeN9mGnvIKSpG9YYorDMnic= +github.com/yuin/goldmark v1.7.8/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E= github.com/yuin/goldmark-meta v1.1.0 h1:pWw+JLHGZe8Rk0EGsMVssiNb/AaPMHfSRszZeUeiOUc= github.com/yuin/goldmark-meta v1.1.0/go.mod h1:U4spWENafuA7Zyg+Lj5RqK/MF+ovMYtBvXi1lBb2VP0= -golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= -golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= -golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= -golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= +golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= diff --git a/internal/cmd/www/main.go b/internal/cmd/www/main.go index 22b384b..32367fc 100644 --- a/internal/cmd/www/main.go +++ b/internal/cmd/www/main.go @@ -37,7 +37,7 @@ func main() { IsDevelopment: true, } - var err = ciigo.Serve(&serveOpts) + var err = ciigo.Serve(serveOpts) if err != nil { log.Fatal(err) } diff --git a/rescached.go b/rescached.go index e96a852..47701fb 100644 --- a/rescached.go +++ b/rescached.go @@ -10,11 +10,12 @@ import ( "log" "os" "sync" + "time" "git.sr.ht/~shulhan/pakakeh.go/lib/debug" "git.sr.ht/~shulhan/pakakeh.go/lib/dns" "git.sr.ht/~shulhan/pakakeh.go/lib/http" - "git.sr.ht/~shulhan/pakakeh.go/lib/memfs" + "git.sr.ht/~shulhan/pakakeh.go/lib/watchfs/v2" ) // Version of program, overwritten by build. @@ -24,7 +25,7 @@ var Version = `4.4.3` type Server struct { dns *dns.Server env *Environment - rcWatcher *memfs.Watcher + rcWatcher *watchfs.FileWatcher httpd *http.Server httpdRunner sync.Once @@ -208,33 +209,33 @@ func (srv *Server) Stop() { // watchResolvConf watch an update to file resolv.conf. func (srv *Server) watchResolvConf() { var ( - logp = "watchResolvConf" + logp = `watchResolvConf` + watchOpts = watchfs.FileWatcherOptions{ + File: srv.env.FileResolvConf, + Interval: 5 * time.Second, + } - ns memfs.NodeState + fi os.FileInfo err error + ok bool ) - srv.rcWatcher, err = memfs.NewWatcher(srv.env.FileResolvConf, 0) - if err != nil { - log.Fatalf("%s: %s", logp, err) - } + srv.rcWatcher = watchfs.WatchFile(watchOpts) - for ns = range srv.rcWatcher.C { - switch ns.State { - case memfs.FileStateDeleted: + for fi = range srv.rcWatcher.C { + if fi == nil { log.Printf("= %s: file %q deleted\n", logp, srv.env.FileResolvConf) return - default: - ok, err := srv.env.loadResolvConf() - if err != nil { - log.Printf("%s: %s", logp, err) - break - } - if !ok { - break - } + } - srv.dns.RestartForwarders(srv.env.NameServers) + ok, err = srv.env.loadResolvConf() + if err != nil { + log.Printf(`%s: %s`, logp, err) + break + } + if !ok { + break } + srv.dns.RestartForwarders(srv.env.NameServers) } } |
