From: Vsevolod Stakhov Date: Thu, 22 Mar 2018 15:18:49 +0000 (+0000) Subject: [Fix] Fix scan time set X-Git-Tag: 1.7.2~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8807b9d2a9ff9b4d9a200aec60221d6f0951f9c1;p=thirdparty%2Frspamd.git [Fix] Fix scan time set --- diff --git a/src/libserver/protocol.c b/src/libserver/protocol.c index 752b4a6743..6662bf677b 100644 --- a/src/libserver/protocol.c +++ b/src/libserver/protocol.c @@ -1056,7 +1056,7 @@ rspamd_protocol_write_ucl (struct rspamd_task *task, GString *dkim_sig; const ucl_object_t *milter_reply; - /* Check for cached reply */ + rspamd_task_set_finish_time (task); top = ucl_object_typed_new (UCL_OBJECT); if (flags & RSPAMD_PROTOCOL_METRICS) { @@ -1607,8 +1607,6 @@ rspamd_protocol_write_reply (struct rspamd_task *task) case CMD_PROCESS: case CMD_SKIP: case CMD_CHECK_V2: - task->time_real_finish = rspamd_get_ticks (FALSE); - task->time_virtual_finish = rspamd_get_virtual_ticks (); rspamd_protocol_http_reply (msg, task, NULL); rspamd_protocol_write_log_pipe (task); break; diff --git a/src/libserver/task.c b/src/libserver/task.c index 71e38ed4c7..e723fd9556 100644 --- a/src/libserver/task.c +++ b/src/libserver/task.c @@ -84,6 +84,8 @@ rspamd_task_new (struct rspamd_worker *worker, struct rspamd_config *cfg, gettimeofday (&new_task->tv, NULL); new_task->time_real = rspamd_get_ticks (FALSE); new_task->time_virtual = rspamd_get_virtual_ticks (); + new_task->time_real_finish = NAN; + new_task->time_virtual_finish = NAN; new_task->lang_det = lang_det; if (pool == NULL) { @@ -1594,3 +1596,17 @@ rspamd_task_profile_get (struct rspamd_task *task, const gchar *key) return pval; } + + +gboolean +rspamd_task_set_finish_time (struct rspamd_task *task) +{ + if (isnan (task->time_real_finish)) { + task->time_real_finish = rspamd_get_ticks (FALSE); + task->time_virtual_finish = rspamd_get_virtual_ticks (); + + return TRUE; + } + + return FALSE; +} \ No newline at end of file diff --git a/src/libserver/task.h b/src/libserver/task.h index 3055c56540..b6ff279907 100644 --- a/src/libserver/task.h +++ b/src/libserver/task.h @@ -347,4 +347,11 @@ void rspamd_task_profile_set (struct rspamd_task *task, const gchar *key, */ gdouble* rspamd_task_profile_get (struct rspamd_task *task, const gchar *key); +/** + * Sets finishing time for a task if not yet set + * @param task + * @return + */ +gboolean rspamd_task_set_finish_time (struct rspamd_task *task); + #endif /* TASK_H_ */ diff --git a/src/rspamd_proxy.c b/src/rspamd_proxy.c index d19f769a1b..47dbf606da 100644 --- a/src/rspamd_proxy.c +++ b/src/rspamd_proxy.c @@ -1598,8 +1598,7 @@ rspamd_proxy_scan_self_reply (struct rspamd_task *task) case CMD_PROCESS: case CMD_SKIP: case CMD_CHECK_V2: - task->time_real_finish = rspamd_get_ticks (FALSE); - task->time_virtual_finish = rspamd_get_virtual_ticks (); + rspamd_task_set_finish_time (task); rspamd_protocol_http_reply (msg, task, &rep); rspamd_protocol_write_log_pipe (task); break;