From: Ralph Boehme Date: Thu, 27 Dec 2018 11:45:42 +0000 (+0100) Subject: Revert "s3:messages: allow messaging_{dgm,ctdb}_register_tevent_context() to use... X-Git-Tag: samba-4.9.12~52 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5a3fa18389b76bb31541e8b93de8353fa6b548d7;p=thirdparty%2Fsamba.git Revert "s3:messages: allow messaging_{dgm,ctdb}_register_tevent_context() to use wrapper tevent_context" This reverts commit 660cf86639753edaa7a7a21a5b5ae207ae7d4260. See the discussion in https://lists.samba.org/archive/samba-technical/2018-December/131731.html for the reasoning behind this revert. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14033 Signed-off-by: Ralph Boehme Reviewed-by: Volker Lendecke Reviewed-by: Stefan Metzmacher (cherry picked from commit 1c3676f3aa9c1564eb140a24ced5ee72b859b87f) --- diff --git a/source3/lib/messages_ctdb.c b/source3/lib/messages_ctdb.c index 11fe72661cc..a1aeb37af19 100644 --- a/source3/lib/messages_ctdb.c +++ b/source3/lib/messages_ctdb.c @@ -209,6 +209,14 @@ struct messaging_ctdb_fde *messaging_ctdb_register_tevent_context( return NULL; } + if (tevent_context_is_wrapper(ev)) { + /* + * This is really a programmer error! + */ + DBG_ERR("Should not be used with a wrapper tevent context\n"); + return NULL; + } + fde = talloc(mem_ctx, struct messaging_ctdb_fde); if (fde == NULL) { return NULL; @@ -226,24 +234,7 @@ struct messaging_ctdb_fde *messaging_ctdb_register_tevent_context( */ continue; } - - /* - * We can only have one tevent_fd - * per low level tevent_context. - * - * This means any wrapper tevent_context - * needs to share the structure with - * the main tevent_context and/or - * any sibling wrapper tevent_context. - * - * This means we need to use tevent_context_same_loop() - * instead of just (fde_ev->ev == ev). - * - * Note: the tevent_context_is_wrapper() check below - * makes sure that fde_ev->ev is always a raw - * tevent context. - */ - if (tevent_context_same_loop(fde_ev->ev, ev)) { + if (fde_ev->ev == ev) { break; } } @@ -251,17 +242,6 @@ struct messaging_ctdb_fde *messaging_ctdb_register_tevent_context( if (fde_ev == NULL) { int sock = ctdbd_conn_get_fd(ctx->conn); - if (tevent_context_is_wrapper(ev)) { - /* - * This is really a programmer error! - * - * The main/raw tevent context should - * have been registered first! - */ - DBG_ERR("Should not be used with a wrapper tevent context\n"); - return NULL; - } - fde_ev = talloc(fde, struct messaging_ctdb_fde_ev); if (fde_ev == NULL) { return NULL; diff --git a/source3/lib/messages_dgm.c b/source3/lib/messages_dgm.c index 90d253d8e26..60ac9988db7 100644 --- a/source3/lib/messages_dgm.c +++ b/source3/lib/messages_dgm.c @@ -1695,6 +1695,14 @@ struct messaging_dgm_fde *messaging_dgm_register_tevent_context( return NULL; } + if (tevent_context_is_wrapper(ev)) { + /* + * This is really a programmer error! + */ + DBG_ERR("Should not be used with a wrapper tevent context\n"); + return NULL; + } + fde = talloc(mem_ctx, struct messaging_dgm_fde); if (fde == NULL) { return NULL; @@ -1712,40 +1720,12 @@ struct messaging_dgm_fde *messaging_dgm_register_tevent_context( */ continue; } - - /* - * We can only have one tevent_fd - * per low level tevent_context. - * - * This means any wrapper tevent_context - * needs to share the structure with - * the main tevent_context and/or - * any sibling wrapper tevent_context. - * - * This means we need to use tevent_context_same_loop() - * instead of just (fde_ev->ev == ev). - * - * Note: the tevent_context_is_wrapper() check below - * makes sure that fde_ev->ev is always a raw - * tevent context. - */ - if (tevent_context_same_loop(fde_ev->ev, ev)) { + if (fde_ev->ev == ev) { break; } } if (fde_ev == NULL) { - if (tevent_context_is_wrapper(ev)) { - /* - * This is really a programmer error! - * - * The main/raw tevent context should - * have been registered first! - */ - DBG_ERR("Should not be used with a wrapper tevent context\n"); - return NULL; - } - fde_ev = talloc(fde, struct messaging_dgm_fde_ev); if (fde_ev == NULL) { return NULL;