Revert "s3:messages: allow messaging_{dgm,ctdb}_register_tevent_context() to use...
authorRalph Boehme <slow@samba.org>
Thu, 27 Dec 2018 11:45:42 +0000 (12:45 +0100)
committerStefan Metzmacher <metze@samba.org>
Fri, 11 Jan 2019 22:11:16 +0000 (23:11 +0100)
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.

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
source3/lib/messages_ctdb.c
source3/lib/messages_dgm.c

index 11fe72661cc302383a34e5cfd15643c5922e7421..a1aeb37af19867ef2fa9093d75322a5620aa7b65 100644 (file)
@@ -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;
index af12be8d82eb9a2c90823e0de223015742696b4f..a661a16c99aa19af1a802016d3e7a192948fb36b 100644 (file)
@@ -1683,6 +1683,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;
@@ -1700,40 +1708,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;