+ return;
+
+need_subclient:
+ if (!get_subclient(c)) {
+ /* We can't get one: go to sleep until someone find_oracle() */
+ tevent_fd_set_flags(c->fde, 0);
+ } else
+ /* In case they are waiting... */
+ wakeup(c->subclient);
+ return;
+
+need_answer:
+ /* If we don't have an oracle and find one, that's OK. */
+ if (!c->oracle && get_oracle(c)) {
+ /* In case they are waiting... */
+ wakeup(c->oracle);
+ return;
+ }
+
+ /* Either our oracle is not finished, or we don't have one: sleep. */
+ tevent_fd_set_flags(c->fde, 0);