From 0be7e9096cb6f7930b958e909bf715c30454650f Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Wed, 23 Mar 2016 20:54:28 +0100 Subject: Replace all routes at once --- main.go | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) (limited to 'main.go') diff --git a/main.go b/main.go index 784d1d7..71098a8 100644 --- a/main.go +++ b/main.go @@ -39,7 +39,7 @@ func (r Route) SNI(h *tls.ClientHelloInfo) (*tls.Certificate, error) { } func (r Route) Restore() error { - server.Handler = http.NewServeMux() + mux := http.NewServeMux() for k, v := range route { if v.Cert != nil && v.Key != nil { cert, err := tls.X509KeyPair(v.Cert, v.Key) @@ -49,19 +49,13 @@ func (r Route) Restore() error { v.cert = &cert r[k] = v } - v.NewHandle() - } - return nil -} - -func (e Entry) NewHandle() error { - log.Println("New handle", e) - up, err := url.Parse(e.Upstream) - if err != nil { - return err + up, err := url.Parse(v.Upstream) + if err != nil { + return err + } + mux.Handle(v.ServerName+"/", httputil.NewSingleHostReverseProxy(up)) } - mux := server.Handler.(*http.ServeMux) - mux.Handle(e.ServerName+"/", httputil.NewSingleHostReverseProxy(up)) + server.Handler = mux return nil } -- cgit v1.2.3