diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2020-10-06 15:36:23 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2020-10-06 15:36:23 +0100 |
commit | b6085d45f1a31b4bf19abf91d5926e1ef87d39ca (patch) | |
tree | 87f2c55b9eb6a99e56eb4afeabd3aa49fc1c8b5c /src/lua/lua_util.c | |
parent | 83bcd4071050fa82deed1428cc587a1574b9c507 (diff) | |
download | rspamd-b6085d45f1a31b4bf19abf91d5926e1ef87d39ca.tar.gz rspamd-b6085d45f1a31b4bf19abf91d5926e1ef87d39ca.zip |
[Minor] Add erroring to smtp parse date
Diffstat (limited to 'src/lua/lua_util.c')
-rw-r--r-- | src/lua/lua_util.c | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/src/lua/lua_util.c b/src/lua/lua_util.c index 5509fc435..1a2b52f80 100644 --- a/src/lua/lua_util.c +++ b/src/lua/lua_util.c @@ -3968,25 +3968,35 @@ lua_util_parse_smtp_date (lua_State *L) { gsize slen; const gchar *str = lua_tolstring (L, 1, &slen); + GError *err = NULL; if (str == NULL) { return luaL_argerror (L, 1, "invalid argument"); } - time_t tt = rspamd_parse_smtp_date (str, slen); + time_t tt = rspamd_parse_smtp_date (str, slen, &err); - if (lua_isboolean (L, 2) && !!lua_toboolean (L, 2)) { - struct tm t; + if (err == NULL) { + if (lua_isboolean (L, 2) && !!lua_toboolean (L, 2)) { + struct tm t; - rspamd_localtime (tt, &t); + rspamd_localtime (tt, &t); #if !defined(__sun) - t.tm_gmtoff = 0; + t.tm_gmtoff = 0; #endif - t.tm_isdst = 0; - tt = mktime (&t); + t.tm_isdst = 0; + tt = mktime (&t); + } + + lua_pushnumber (L, tt); } + else { + lua_pushnil (L); + lua_pushstring (L, err->message); + g_error_free (err); - lua_pushnumber (L, tt); + return 2; + } return 1; } |