aboutsummaryrefslogtreecommitdiff
path: root/solve_http.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-03-07 14:58:00 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-03-07 14:58:00 +0100
commitb5eb551c192b2c5df650584b674ced716b28a961 (patch)
tree549e6877899b0af78a7a32466e7dd88760636870 /solve_http.go
parent98b7cd41de84742c6c4b895d42a1203f02a442a4 (diff)
Move start listener into solver (once)
Diffstat (limited to 'solve_http.go')
-rw-r--r--solve_http.go13
1 files changed, 4 insertions, 9 deletions
diff --git a/solve_http.go b/solve_http.go
index f1ab57d..f0923a5 100644
--- a/solve_http.go
+++ b/solve_http.go
@@ -5,25 +5,20 @@ import (
"log"
"net/http"
"path"
+ "sync"
)
type httpSolver struct {
http.Server
+ sync.Once
}
func NewHTTPSolver(addr string) (Solver, error) {
- s := &httpSolver{
- Server: http.Server{Addr: addr},
- }
- go func() {
- if err := s.ListenAndServe(); err != nil {
- log.Fatal(err)
- }
- }()
- return s, nil
+ return &httpSolver{Server: http.Server{Addr: addr}}, nil
}
func (s *httpSolver) Solve(ch Challenge) error {
+ s.Do(func() { go s.ListenAndServe() })
p := path.Join(WellKnown, ch.Token)
log.Println("solve http", p)
http.HandleFunc(p, func(w http.ResponseWriter, r *http.Request) {