golanggohlsrtmpwebrtcmedia-serverobs-studiortcprtmp-proxyrtmp-serverrtprtsprtsp-proxyrtsp-relayrtsp-serversrtstreamingwebrtc-proxy
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
520 B
27 lines
520 B
package httpp |
|
|
|
import ( |
|
"fmt" |
|
"net/http" |
|
"os" |
|
"runtime" |
|
) |
|
|
|
// exit when there's a panic inside the HTTP handler. |
|
// https://github.com/golang/go/issues/16542 |
|
type handlerExitOnPanic struct { |
|
http.Handler |
|
} |
|
|
|
func (h *handlerExitOnPanic) ServeHTTP(w http.ResponseWriter, r *http.Request) { |
|
defer func() { |
|
err := recover() |
|
if err != nil { |
|
buf := make([]byte, 1<<20) |
|
n := runtime.Stack(buf, true) |
|
fmt.Fprintf(os.Stderr, "panic: %v\n\n%s", err, buf[:n]) |
|
os.Exit(1) |
|
} |
|
}() |
|
h.Handler.ServeHTTP(w, r) |
|
}
|
|
|