summaryrefslogtreecommitdiff
path: root/src/hub/src/spreadspace.org/sfive/s5srvWeb.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/hub/src/spreadspace.org/sfive/s5srvWeb.go')
-rw-r--r--src/hub/src/spreadspace.org/sfive/s5srvWeb.go22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/hub/src/spreadspace.org/sfive/s5srvWeb.go b/src/hub/src/spreadspace.org/sfive/s5srvWeb.go
index 9e0b474..a112585 100644
--- a/src/hub/src/spreadspace.org/sfive/s5srvWeb.go
+++ b/src/hub/src/spreadspace.org/sfive/s5srvWeb.go
@@ -33,6 +33,7 @@
package sfive
import (
+ "context"
"encoding/json"
"fmt"
"io"
@@ -392,11 +393,11 @@ func (ln tcpKeepAliveListener) Accept() (c net.Conn, err error) {
return
}
tc.SetKeepAlive(true)
- tc.SetKeepAlivePeriod(180 * time.Second)
+ tc.SetKeepAlivePeriod(30 * time.Second)
return tc, nil
}
-func webRun(listener *net.TCPListener, srv *Server) (err error) {
+func (srv *Server) webRun(listener *net.TCPListener) (err error) {
mux := http.NewServeMux()
mux.Handle("/healthz", webHandler{srv, webHealthz})
mux.Handle("/hubs", webHandler{srv, webHubs})
@@ -410,11 +411,20 @@ func webRun(listener *net.TCPListener, srv *Server) (err error) {
// mux.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir( ..staticDir.. ))))
mux.Handle("/", webHandler{srv, webNotFound})
- server := &http.Server{Handler: mux, ReadTimeout: 60 * time.Second, WriteTimeout: 120 * time.Second}
- return server.Serve(tcpKeepAliveListener{listener})
+ srv.interfaces.web = &http.Server{Handler: mux, ReadTimeout: 60 * time.Second, WriteTimeout: 60 * time.Second}
+ return srv.interfaces.web.Serve(tcpKeepAliveListener{listener})
}
-func (srv Server) ServeWeb(cfg WebInterfaceConfig) {
+func (srv *Server) webStop(ctx context.Context) (err error) {
+ // TODO: this is a race condition between a call to webRun and webStop...
+ if srv.interfaces.web == nil {
+ return nil
+ }
+ s5l.Printf("srv|web: shutting down")
+ return srv.interfaces.web.Shutdown(ctx)
+}
+
+func (srv *Server) ServeWeb(cfg WebInterfaceConfig) {
ln, err := net.Listen("tcp", cfg.ListenAddr)
if err != nil {
s5l.Printf("srv|web: listen() failed: %v", err)
@@ -424,5 +434,5 @@ func (srv Server) ServeWeb(cfg WebInterfaceConfig) {
s5l.Printf("srv|web: listening on '%s'", cfg.ListenAddr)
defer s5l.Println("srv|web: interface stopped")
- webRun(ln.(*net.TCPListener), &srv)
+ srv.webRun(ln.(*net.TCPListener))
}