Temporary stop gap for panicking server handlers
This commit is contained in:
@@ -157,6 +157,27 @@ func (h *httpTransportSocket) Send(m *Message) error {
|
||||
return rsp.Write(h.conn)
|
||||
}
|
||||
|
||||
func (h *httpTransportSocket) error(m *Message) error {
|
||||
b := bytes.NewBuffer(m.Body)
|
||||
defer b.Reset()
|
||||
rsp := &http.Response{
|
||||
Header: make(http.Header),
|
||||
Body: &buffer{b},
|
||||
Status: "500 Internal Server Error",
|
||||
StatusCode: 500,
|
||||
Proto: "HTTP/1.1",
|
||||
ProtoMajor: 1,
|
||||
ProtoMinor: 1,
|
||||
ContentLength: int64(len(m.Body)),
|
||||
}
|
||||
|
||||
for k, v := range m.Header {
|
||||
rsp.Header.Set(k, v)
|
||||
}
|
||||
|
||||
return rsp.Write(h.conn)
|
||||
}
|
||||
|
||||
func (h *httpTransportSocket) Close() error {
|
||||
return h.conn.Close()
|
||||
}
|
||||
@@ -177,10 +198,19 @@ func (h *httpTransportListener) Accept(fn func(Socket)) error {
|
||||
return
|
||||
}
|
||||
|
||||
fn(&httpTransportSocket{
|
||||
sock := &httpTransportSocket{
|
||||
conn: conn,
|
||||
r: r,
|
||||
})
|
||||
}
|
||||
|
||||
// TODO: think of a better error response strategy
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
sock.Close()
|
||||
}
|
||||
}()
|
||||
|
||||
fn(sock)
|
||||
}),
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user