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) {
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;
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) {
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
*/
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_ */
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;