Commit d4475579 by Iwasaki Yudai

Close listener after calling `StartRoutine()`

This change prevents the listener from closing itself before
establishing the websocket session with the client.
1 parent 6d1a19b1
Showing with 6 additions and 9 deletions
...@@ -122,7 +122,6 @@ func (app *App) Run() error { ...@@ -122,7 +122,6 @@ func (app *App) Run() error {
if app.options.Once { if app.options.Once {
log.Printf("Once option is provided, accepting only one client") log.Printf("Once option is provided, accepting only one client")
wsHandler = wrapOnce(wsHandler, app)
} }
var siteMux = http.NewServeMux() var siteMux = http.NewServeMux()
...@@ -272,14 +271,6 @@ func wrapBasicAuth(handler http.Handler, credential string) http.Handler { ...@@ -272,14 +271,6 @@ func wrapBasicAuth(handler http.Handler, credential string) http.Handler {
}) })
} }
func wrapOnce(handler http.HandlerFunc, app *App) http.HandlerFunc {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
log.Printf("Last client accepted, closing the listener.")
app.server.Close()
handler.ServeHTTP(w, r)
})
}
func generateRandomString(length int) string { func generateRandomString(length int) string {
const base = 36 const base = 36
size := big.NewInt(base) size := big.NewInt(base)
......
...@@ -62,6 +62,12 @@ func (context *clientContext) goHandleClient() { ...@@ -62,6 +62,12 @@ func (context *clientContext) goHandleClient() {
}() }()
context.app.server.StartRoutine() context.app.server.StartRoutine()
if context.app.options.Once {
log.Printf("Last client accepted, closing the listener.")
context.app.server.Close()
}
go func() { go func() {
defer context.app.server.FinishRoutine() defer context.app.server.FinishRoutine()
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!