Commit 8700faf2 authored by Rusty Russell's avatar Rusty Russell

io: add io_conn_fd()

Useful for getsockname().
Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
parent e40f5c50
......@@ -472,6 +472,11 @@ struct io_plan io_break_(void *ret, struct io_plan plan)
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))
......
......@@ -491,6 +491,14 @@ struct io_plan io_close_cb(struct io_conn *, void *unused);
*/
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
......
......@@ -9,10 +9,12 @@
#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());
}
......@@ -21,6 +23,7 @@ static void init_conn(int fd, int *state)
{
ok1(*state == 0);
(*state)++;
expected_fd = fd;
io_set_finish(io_new_conn(fd, io_close()), finish_ok, state);
}
......@@ -64,7 +67,7 @@ int main(void)
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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment