From bfcb1beba949be0b2fba00073a3bed47959c0e7b Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Fri, 9 Aug 2019 12:18:04 +0300 Subject: [PATCH] cassandra: Cleanup - Move code to cassandra_callback_detach() --- src/lib-sql/driver-cassandra.c | 36 ++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/src/lib-sql/driver-cassandra.c b/src/lib-sql/driver-cassandra.c index 59b2b1c29d..2f9841499f 100644 --- a/src/lib-sql/driver-cassandra.c +++ b/src/lib-sql/driver-cassandra.c @@ -383,6 +383,24 @@ static void driver_cassandra_log_error(struct cassandra_db *db, e_error(db->api.event, "%s: %.*s", str, (int)size, message); } +static struct cassandra_callback * +cassandra_callback_detach(struct cassandra_db *db, unsigned int id) +{ + struct cassandra_callback *cb, *const *cbp; + + /* usually there are only a few callbacks, so don't bother with using + a hash table */ + array_foreach(&db->callbacks, cbp) { + cb = *cbp; + if (cb->id == id) { + array_delete(&db->callbacks, + array_foreach_idx(&db->callbacks, cbp), 1); + return cb; + } + } + return NULL; +} + static void cassandra_callback_run(struct cassandra_callback *cb) { timeout_remove(&cb->to); @@ -417,20 +435,12 @@ static void driver_cassandra_future_callback(CassFuture *future ATTR_UNUSED, static void driver_cassandra_input_id(struct cassandra_db *db, unsigned int id) { - struct cassandra_callback *cb, *const *cbp; + struct cassandra_callback *cb; - /* usually there are only a few callbacks, so don't bother with using - a hash table */ - array_foreach(&db->callbacks, cbp) { - cb = *cbp; - if (cb->id == id) { - array_delete(&db->callbacks, - array_foreach_idx(&db->callbacks, cbp), 1); - cassandra_callback_run(cb); - return; - } - } - i_panic("cassandra: Received unknown ID %u", id); + cb = cassandra_callback_detach(db, id); + if (cb == NULL) + i_panic("cassandra: Received unknown ID %u", id); + cassandra_callback_run(cb); } static void driver_cassandra_input(struct cassandra_db *db) -- 2.47.3