Useful for getsockname().
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
return plan;
}
+int io_conn_fd(const struct io_conn *conn)
+{
+ return conn->fd.fd;
+}
+
void io_set_alloc(void *(*allocfn)(size_t size),
void *(*reallocfn)(void *ptr, size_t size),
void (*freefn)(void *ptr))
*/
void *io_loop(void);
+/**
+ * io_conn_fd - get the fd from a connection.
+ * @conn: the connection.
+ *
+ * Sometimes useful, eg for getsockname().
+ */
+int io_conn_fd(const struct io_conn *conn);
+
/**
* io_set_alloc - set alloc/realloc/free function for io to use.
* @allocfn: allocator function
#ifndef PORT
#define PORT "65001"
#endif
+static int expected_fd;
static void finish_ok(struct io_conn *conn, int *state)
{
ok1(*state == 1);
+ ok1(io_conn_fd(conn) == expected_fd);
(*state)++;
io_break(state + 1, io_idle());
}
{
ok1(*state == 0);
(*state)++;
+ expected_fd = fd;
io_set_finish(io_new_conn(fd, io_close()), finish_ok, state);
}
int fd;
/* This is how many tests you plan to run */
- plan_tests(9);
+ plan_tests(10);
fd = make_listen_fd(PORT, &addrinfo);
ok1(fd >= 0);
l = io_new_listener(fd, init_conn, &state);