summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/server.go9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/server.go b/src/server.go
index c3954d8d..082d9278 100644
--- a/src/server.go
+++ b/src/server.go
@@ -32,6 +32,7 @@ const (
httpUnauthorized = "HTTP/1.1 401 Unauthorized" + crlf
httpUnavailable = "HTTP/1.1 503 Service Unavailable" + crlf
httpReadTimeout = 10 * time.Second
+ channelTimeout = 2 * time.Second
jsonContentType = "Content-Type: application/json" + crlf
maxContentLength = 1024 * 1024
)
@@ -170,7 +171,7 @@ func (server *httpServer) handleHttpRequest(conn net.Conn) string {
select {
case response := <-server.responseChannel:
return good(response)
- case <-time.After(2 * time.Second):
+ case <-time.After(channelTimeout):
go func() {
// Drain the channel
<-server.responseChannel
@@ -227,7 +228,11 @@ func (server *httpServer) handleHttpRequest(conn net.Conn) string {
return bad("no action specified")
}
- server.actionChannel <- actions
+ select {
+ case server.actionChannel <- actions:
+ case <-time.After(channelTimeout):
+ return httpUnavailable + crlf
+ }
return httpOk + crlf
}