mirror of https://github.com/tidwall/tile38.git
Added ENV var for 500 http errors
This commit is contained in:
parent
023115972f
commit
07dc10262a
|
@ -25,6 +25,7 @@ import (
|
||||||
"github.com/tidwall/buntdb"
|
"github.com/tidwall/buntdb"
|
||||||
"github.com/tidwall/geojson"
|
"github.com/tidwall/geojson"
|
||||||
"github.com/tidwall/geojson/geometry"
|
"github.com/tidwall/geojson/geometry"
|
||||||
|
"github.com/tidwall/gjson"
|
||||||
"github.com/tidwall/rbang"
|
"github.com/tidwall/rbang"
|
||||||
"github.com/tidwall/redcon"
|
"github.com/tidwall/redcon"
|
||||||
"github.com/tidwall/resp"
|
"github.com/tidwall/resp"
|
||||||
|
@ -81,6 +82,7 @@ type Server struct {
|
||||||
// env opts
|
// env opts
|
||||||
geomParseOpts geojson.ParseOptions
|
geomParseOpts geojson.ParseOptions
|
||||||
geomIndexOpts geometry.IndexOptions
|
geomIndexOpts geometry.IndexOptions
|
||||||
|
http500Errors bool
|
||||||
|
|
||||||
// atomics
|
// atomics
|
||||||
followc aint // counter increases when follow property changes
|
followc aint // counter increases when follow property changes
|
||||||
|
@ -179,6 +181,10 @@ func Serve(host string, port int, dir string, http bool) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Send "500 Internal Server" error instead of "200 OK" for json responses
|
||||||
|
// with `"ok":false`. T38HTTP500ERRORS=1
|
||||||
|
server.http500Errors, _ = strconv.ParseBool(os.Getenv("T38HTTP500ERRORS"))
|
||||||
|
|
||||||
// Allow for geometry indexing options through environment variables:
|
// Allow for geometry indexing options through environment variables:
|
||||||
// T38IDXGEOMKIND -- None, RTree, QuadTree
|
// T38IDXGEOMKIND -- None, RTree, QuadTree
|
||||||
// T38IDXGEOM -- Min number of points in a geometry for indexing.
|
// T38IDXGEOM -- Min number of points in a geometry for indexing.
|
||||||
|
@ -708,11 +714,15 @@ func (server *Server) handleInputCommand(client *Client, msg *Message) error {
|
||||||
case WebSocket:
|
case WebSocket:
|
||||||
return WriteWebSocketMessage(client, []byte(res))
|
return WriteWebSocketMessage(client, []byte(res))
|
||||||
case HTTP:
|
case HTTP:
|
||||||
_, err := fmt.Fprintf(client, "HTTP/1.1 200 OK\r\n"+
|
status := "200 OK"
|
||||||
|
if server.http500Errors && !gjson.Get(res, "ok").Bool() {
|
||||||
|
status = "500 Internal Server Error"
|
||||||
|
}
|
||||||
|
_, err := fmt.Fprintf(client, "HTTP/1.1 %s\r\n"+
|
||||||
"Connection: close\r\n"+
|
"Connection: close\r\n"+
|
||||||
"Content-Length: %d\r\n"+
|
"Content-Length: %d\r\n"+
|
||||||
"Content-Type: application/json; charset=utf-8\r\n"+
|
"Content-Type: application/json; charset=utf-8\r\n"+
|
||||||
"\r\n", len(res)+2)
|
"\r\n", status, len(res)+2)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue