diff options
author | Martin Cox <[email protected]> | 2017-04-05 22:26:55 +0100 |
---|---|---|
committer | Martin Cox <[email protected]> | 2017-04-05 22:26:55 +0100 |
commit | ffd6bb83f541091d169a0fa556f4c6d307b9b043 (patch) | |
tree | 2cfdf2bca4fa4756b1ae51efb25da48b390e3302 | |
parent | a1100c46c2ca2121d723edc03cb7885e3014af7c (diff) | |
download | otp-ffd6bb83f541091d169a0fa556f4c6d307b9b043.tar.gz otp-ffd6bb83f541091d169a0fa556f4c6d307b9b043.tar.bz2 otp-ffd6bb83f541091d169a0fa556f4c6d307b9b043.zip |
When a non-DST time is passed to the httpd_util:rfc1123_date/1 function, it
causes a case-clause error, as the calender:local_time_to_universal_time_dst/1
can return an empty list, which is not currently handled.
When called with an invalid DST time:
1> httpd_util:rfc1123_date({{2017, 03, 26},{1, 0, 0}}).
** exception error: no case clause matching []
in function httpd_util:rfc1123_date/1 (httpd_util.erl, line 334)
To alleviate this, simply add a clause to handle the empty list and return the
original time in the expected rfc1123 format. This is the approach of other
modules which make use of the calender:local_time_to_universal_time_dst/1
function. The formatted date is then returned without error:
2> httpd_util:rfc1123_date({{2017, 03, 26},{1, 0, 0}}).
"Sun, 26 Mar 2017 01:00:00 GMT"
-rw-r--r-- | lib/inets/src/http_server/httpd_util.erl | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/inets/src/http_server/httpd_util.erl b/lib/inets/src/http_server/httpd_util.erl index a647f04ddc..4f771015a6 100644 --- a/lib/inets/src/http_server/httpd_util.erl +++ b/lib/inets/src/http_server/httpd_util.erl @@ -333,7 +333,9 @@ rfc1123_date(LocalTime) -> {{YYYY,MM,DD},{Hour,Min,Sec}} = case calendar:local_time_to_universal_time_dst(LocalTime) of [Gmt] -> Gmt; - [_,Gmt] -> Gmt + [_,Gmt] -> Gmt; + % Should not happen, but handle the empty list to prevent an error. + [] -> LocalTime end, DayNumber = calendar:day_of_the_week({YYYY,MM,DD}), lists:flatten( |