diff options
author | Loïc Hoguin <[email protected]> | 2017-11-01 17:06:37 +0000 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2017-11-01 17:06:37 +0000 |
commit | 5bb6438e10ae6b620b88f8d9989e6f6c0d252f34 (patch) | |
tree | 7c5fb1cde5e31df7a069889ccbdde3f2c51bc347 /src | |
parent | 836342abb86b3ff15d1c8319a455d776f7027a87 (diff) | |
download | cowboy-5bb6438e10ae6b620b88f8d9989e6f6c0d252f34.tar.gz cowboy-5bb6438e10ae6b620b88f8d9989e6f6c0d252f34.tar.bz2 cowboy-5bb6438e10ae6b620b88f8d9989e6f6c0d252f34.zip |
Don't crash when cowboy_clock is not running
This can happen normally when Cowboy is restarted, for example.
Instead of failing requests when that happens, we degrade
gracefully and do a little more work to provide the current
date header.
Diffstat (limited to 'src')
-rw-r--r-- | src/cowboy_clock.erl | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/cowboy_clock.erl b/src/cowboy_clock.erl index e0e387d..28f8a1b 100644 --- a/src/cowboy_clock.erl +++ b/src/cowboy_clock.erl @@ -49,9 +49,17 @@ start_link() -> stop() -> gen_server:call(?MODULE, stop). +%% When the ets table doesn't exist, either because of a bug +%% or because Cowboy is being restarted, we perform in a +%% slightly degraded state and build a new timestamp for +%% every request. -spec rfc1123() -> binary(). rfc1123() -> - ets:lookup_element(?MODULE, rfc1123, 2). + try + ets:lookup_element(?MODULE, rfc1123, 2) + catch error:badarg -> + rfc1123(erlang:universaltime()) + end. -spec rfc1123(calendar:datetime()) -> binary(). rfc1123(DateTime) -> |