]> source.dussan.org Git - rspamd.git/commitdiff
[Fix] Fix periodic scheduling when a map is not modified
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 14 Jun 2016 12:00:03 +0000 (13:00 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 14 Jun 2016 12:00:03 +0000 (13:00 +0100)
src/libutil/map.c

index 9bf6e57604fdc015cd7e31bf19a20f9342481494..11d760fe589cd9e8b3d1ab78f3d8983fea194670 100644 (file)
@@ -475,6 +475,9 @@ http_map_finish (struct rspamd_http_connection *conn,
                else {
                        cbd->data->last_checked = msg->date;
                }
+
+               cbd->periodic->cur_backend ++;
+               rspamd_map_periodic_callback (-1, EV_TIMEOUT, cbd->periodic);
        }
        else {
                msg_info_map ("cannot load map %s from %s: HTTP error %d",
@@ -566,6 +569,11 @@ read_map_file (struct rspamd_map *map, struct file_map_data *data,
 static void
 rspamd_map_periodic_dtor (struct map_periodic_cbdata *periodic)
 {
+       struct rspamd_map *map;
+
+       map = periodic->map;
+       msg_debug_map ("periodic dtor %p", periodic);
+
        if (periodic->need_modify) {
                /* We are done */
                periodic->map->fin_callback (&periodic->cbdata);
@@ -610,6 +618,8 @@ rspamd_map_schedule_periodic (struct rspamd_map *map,
        cbd->map = map;
        REF_INIT_RETAIN (cbd, rspamd_map_periodic_dtor);
 
+       msg_debug_map ("schedule new periodic event %p in %.2f seconds", cbd, timeout);
+
        if (initial) {
                evtimer_set (&map->ev, rspamd_map_periodic_callback, cbd);
                event_base_set (map->ev_base, &map->ev);