diff options
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; } |