handle RateLimiter initialization errors (#8199)

Previously, an error occuring in NewRateLimiter would return a nil
reference – which would be de-referenced just after, making the server
crash.
Этот коммит содержится в:
Pierre de La Morinerie
2018-02-06 10:57:34 +05:30
коммит произвёл Chris
родитель 323d717a40
Коммит 034dbc07e3
3 изменённых файлов: 28 добавлений и 9 удалений

Просмотреть файл

@@ -124,9 +124,14 @@ func (a *App) StartServer() {
if *a.Config().RateLimitSettings.Enable {
l4g.Info(utils.T("api.server.start_server.rate.info"))
a.Srv.RateLimiter = NewRateLimiter(&a.Config().RateLimitSettings)
rateLimiter, err := NewRateLimiter(&a.Config().RateLimitSettings)
if err != nil {
l4g.Critical(err.Error())
return
}
handler = a.Srv.RateLimiter.RateLimitHandler(handler)
a.Srv.RateLimiter = rateLimiter
handler = rateLimiter.RateLimitHandler(handler)
}
a.Srv.Server = &http.Server{