From: Timo Sirainen Date: Wed, 5 May 2021 13:47:43 +0000 (+0300) Subject: dict-ldap: Fix calling dict_wait() on async lookup X-Git-Tag: 2.3.16~211 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3d2a582d56dbbb33af9873930cb62006fe834557;p=thirdparty%2Fdovecot%2Fcore.git dict-ldap: Fix calling dict_wait() on async lookup The dict_wait() could have waited forever because nothing stopped the ioloop. Also fix calling the callback with the proper active ioloop. --- diff --git a/src/lib-dict-backend/dict-ldap.c b/src/lib-dict-backend/dict-ldap.c index 961451e00f..d7086402ae 100644 --- a/src/lib-dict-backend/dict-ldap.c +++ b/src/lib-dict-backend/dict-ldap.c @@ -342,7 +342,13 @@ ldap_dict_lookup_callback(struct ldap_result *result, struct dict_ldap_op *op) } ldap_search_iterator_deinit(&iter); } + if (op->dict->dict.prev_ioloop != NULL) + io_loop_set_current(op->dict->dict.prev_ioloop); op->callback(&op->res, op->callback_ctx); + if (op->dict->dict.prev_ioloop != NULL) { + io_loop_set_current(op->dict->dict.ioloop); + io_loop_stop(op->dict->dict.ioloop); + } pool_unref(&pool); }