free(l);
}
-struct io_conn *io_new_conn_(int fd,
- struct io_plan plan,
- void (*finish)(struct io_conn *, void *),
- void *arg)
+struct io_conn *io_new_conn_(int fd, struct io_plan plan)
{
struct io_conn *conn = malloc(sizeof(*conn));
conn->fd.listener = false;
conn->fd.fd = fd;
conn->plan = plan;
- conn->finish = finish;
- conn->finish_arg = arg;
+ conn->finish = NULL;
+ conn->finish_arg = NULL;
conn->duplex = NULL;
conn->timeout = NULL;
if (!add_conn(conn)) {
return conn;
}
-struct io_conn *io_duplex_(struct io_conn *old,
- struct io_plan plan,
- void (*finish)(struct io_conn *, void *),
- void *arg)
+void io_set_finish_(struct io_conn *conn,
+ void (*finish)(struct io_conn *, void *),
+ void *arg)
+{
+ conn->finish = finish;
+ conn->finish_arg = arg;
+}
+
+struct io_conn *io_duplex_(struct io_conn *old, struct io_plan plan)
{
struct io_conn *conn;
conn->fd.fd = old->fd.fd;
conn->plan = plan;
conn->duplex = old;
- conn->finish = finish;
- conn->finish_arg = arg;
+ conn->finish = NULL;
+ conn->finish_arg = NULL;
conn->timeout = NULL;
if (!add_duplex(conn)) {
free(conn);