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) ...@@ -472,6 +472,11 @@ struct io_plan io_break_(void *ret, struct io_plan plan)
return 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 io_set_alloc(void *(*allocfn)(size_t size),
void *(*reallocfn)(void *ptr, size_t size), void *(*reallocfn)(void *ptr, size_t size),
void (*freefn)(void *ptr)) void (*freefn)(void *ptr))
......
...@@ -491,6 +491,14 @@ struct io_plan io_close_cb(struct io_conn *, void *unused); ...@@ -491,6 +491,14 @@ struct io_plan io_close_cb(struct io_conn *, void *unused);
*/ */
void *io_loop(void); 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. * io_set_alloc - set alloc/realloc/free function for io to use.
* @allocfn: allocator function * @allocfn: allocator function
......
...@@ -9,10 +9,12 @@ ...@@ -9,10 +9,12 @@
#ifndef PORT #ifndef PORT
#define PORT "65001" #define PORT "65001"
#endif #endif
static int expected_fd;
static void finish_ok(struct io_conn *conn, int *state) static void finish_ok(struct io_conn *conn, int *state)
{ {
ok1(*state == 1); ok1(*state == 1);
ok1(io_conn_fd(conn) == expected_fd);
(*state)++; (*state)++;
io_break(state + 1, io_idle()); io_break(state + 1, io_idle());
} }
...@@ -21,6 +23,7 @@ static void init_conn(int fd, int *state) ...@@ -21,6 +23,7 @@ static void init_conn(int fd, int *state)
{ {
ok1(*state == 0); ok1(*state == 0);
(*state)++; (*state)++;
expected_fd = fd;
io_set_finish(io_new_conn(fd, io_close()), finish_ok, state); io_set_finish(io_new_conn(fd, io_close()), finish_ok, state);
} }
...@@ -64,7 +67,7 @@ int main(void) ...@@ -64,7 +67,7 @@ int main(void)
int fd; int fd;
/* This is how many tests you plan to run */ /* This is how many tests you plan to run */
plan_tests(9); plan_tests(10);
fd = make_listen_fd(PORT, &addrinfo); fd = make_listen_fd(PORT, &addrinfo);
ok1(fd >= 0); ok1(fd >= 0);
l = io_new_listener(fd, init_conn, &state); 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