- if (!conn->debug)
- return plan;
-
- if (io_loop_return) {
- io_debug_complete(conn);
- return plan;
- }
-
- switch (plan->status) {
- case IO_POLLING:
- while (do_plan(conn, plan) == 0);
- break;
- /* Shouldn't happen, since you said you did plan! */
- case IO_UNSET:
- abort();
- case IO_ALWAYS:
- /* If other one is ALWAYS, leave in list! */
- if (plan == &conn->plan[IO_IN])
- other = &conn->plan[IO_OUT];
- else
- other = &conn->plan[IO_IN];
- if (other->status != IO_ALWAYS)
- remove_from_always(conn);
- next_plan(conn, plan);
- break;
- case IO_WAITING:
- case IO_CLOSING:
- io_debug_complete(conn);
- }
-