libpreludedb/master: Force upgrading copied count before next database retrieval
[email protected] Fri, 29 Jan 2010 18:00:43 +0100 (CET)
| Newsgroups | gmane.comp.security.ids.prelude.cvs |
|---|---|
| Message-ID | <[email protected]> |
commit 3ef573868ba897dcfc817876894dd326e6964de8 Author: Yoann Vandoorselaere <[email protected]> Date: Thu Jan 21 13:32:58 2010 +0100 Force upgrading copied count before next database retrieval This fix a problem where the offset was not correctly calculated when retrieving alert to be copied, when the previous number of events copied didn't exceed events_per_transaction. ======================================== preludedb-admin.c | 16 +++++++++++----- 1 files changed, 11 insertions(+), 5 deletions(-) ======================================== diff --git a/preludedb-admin.c b/preludedb-admin.c index 9609eb5..5ce7907 100644 --- a/preludedb-admin.c +++ b/preludedb-admin.c @@ -202,12 +202,16 @@ static void flush_transaction_if_needed(preludedb_t *db, unsigned int *event_no, if ( ! event_no ) cur_count += increment; - else if ( events_per_transaction && ((*event_no) += increment) >= events_per_transaction ) { - preludedb_transaction_end(db); - preludedb_transaction_start(db); + else if ( events_per_transaction ) { + (*event_no) += increment; + + if ( *event_no >= events_per_transaction || (increment == 0 && *event_no) ) { + preludedb_transaction_end(db); + preludedb_transaction_start(db); - cur_count += *event_no; - *event_no = 0; + cur_count += *event_no; + *event_no = 0; + } } } @@ -630,6 +634,8 @@ static int copy_iterate(preludedb_t *src, preludedb_t *dst, flush_transaction_if_needed(dst, dst_event_no, 1); } + flush_transaction_if_needed(dst, dst_event_no, 0); + if ( delete_index ) { stat_compute(stat_delete, count = delete(src, delete_tbl, delete_index), count); if ( count < 0 ) { _______________________________________________ Prelude-cvslog site list [email protected] http://lists.prelude-ids.org/mailman/listinfo/prelude-cvslog