blob: 00288e5a09e3e1cc0ce2c5660f93053ac43a7aa3 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
package main
import (
gemini "sanctum.geek.nz/code/go-gemini.git.git"
)
// RecovererHandler wrap a Gemini handler and recover from panics
type RecovererHandler struct {
handler gemini.Handler
}
// Handle implement the gemini.Handler interface by recovering inner handler
func (h RecovererHandler) Handle(req gemini.Request) (res gemini.Response) {
defer func() {
if r := recover(); r != nil {
res = gemini.Response{Status: gemini.StatusTemporaryFailure, Meta: "Internal server error", Body: nil}
}
}()
return h.handler.Handle(req)
}
|