lib: Enhance poll_funcs_tevent for multiple tevent_contexts
commitdca572ff1ce1559a2254d9ba46d4f86d48c38c21
authorVolker Lendecke <vl@samba.org>
Mon, 5 May 2014 06:45:52 +0000 (5 08:45 +0200)
committerVolker Lendecke <vl@samba.org>
Thu, 8 May 2014 07:10:12 +0000 (8 09:10 +0200)
treea64405496fff30d898ab000e924262b6af4275d0
parent5601576d9d182ca1741da6db5eb7cae405333329
lib: Enhance poll_funcs_tevent for multiple tevent_contexts

With this patch it will be possible to use nested event contexts with
messaging_filtered_read_send/recv. Before this patchset only the one and only
event context a messaging_context is initialized with is able to receive
datagrams from the unix domain socket. So if you want to code a synchronous
RPC-like operation using a nested event context, you will not see the reply,
because the nested event context does not have the required tevent_fd's.
Unfortunately, this patchset has to add some advanced array voodoo. The idea
is that state->watches[] contains what we hand out with watch_new, and
state->contexts contains references to the tevent_contexts. For every watch we
need a tevent_fd in every event context, and the routines make sure that the
arrays are properly maintained.

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/lib/messages_dgm.c
source3/lib/poll_funcs/poll_funcs_tevent.c
source3/lib/poll_funcs/poll_funcs_tevent.h
source3/lib/unix_msg/test_drain.c
source3/lib/unix_msg/test_source.c
source3/lib/unix_msg/tests.c