- ok1(io_duplex(conn, write_out, finish_ok, d));
- return io_read(d->buf, sizeof(d->buf), io_next(conn, io_close, d));
+ io_set_finish(conn, finish_ok, d);
+
+ return io_duplex(conn,
+ io_read(conn, d->buf, sizeof(d->buf), rw_done, d),
+ io_write(conn, d->wbuf, sizeof(d->wbuf), rw_done, d));