io: don't do wakeup immediately.
[ccan] / ccan / io / io.c
index c0af6bf7e4d66ec761307b49931dcca85f64e3a8..7dbb9c5a3962d3a802bf1aae502ceeda4bb1b685 100644 (file)
@@ -384,10 +384,13 @@ void io_do_always(struct io_conn *conn)
                next_plan(conn, &conn->plan[IO_OUT]);
 }
 
-void io_do_wakeup(struct io_conn *conn, struct io_plan *plan)
+void io_do_wakeup(struct io_conn *conn, enum io_direction dir)
 {
+       struct io_plan *plan = &conn->plan[dir];
+
        assert(plan->status == IO_WAITING);
-       next_plan(conn, plan);
+
+       set_always(conn, dir, plan->next, plan->next_arg);
 }
 
 /* Close the connection, we're done. */