]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
cassandra: Cleanup - Move code to cassandra_callback_detach()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Fri, 9 Aug 2019 09:18:04 +0000 (12:18 +0300)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Tue, 10 Sep 2019 07:02:18 +0000 (10:02 +0300)
src/lib-sql/driver-cassandra.c

index 59b2b1c29dea6f38ba03284d93c89a1ddc49e33a..2f9841499f257541aef658c94be0eef3357406ad 100644 (file)
@@ -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)