X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fio%2Ftest%2Frun-09-connect.c;fp=ccan%2Fio%2Ftest%2Frun-09-connect.c;h=8f57f00d8e0f4a6474f63280b20f3b3b6946883d;hb=cdffdf5d61f8330cfc3467e73a84876eb3928e9b;hp=fd7e1606232e2a59e112e87654f3194dbec7b857;hpb=12e924346b342c61219a3fdc57eb6b00a27f1cd1;p=ccan diff --git a/ccan/io/test/run-09-connect.c b/ccan/io/test/run-09-connect.c index fd7e1606..8f57f00d 100644 --- a/ccan/io/test/run-09-connect.c +++ b/ccan/io/test/run-09-connect.c @@ -11,31 +11,33 @@ #endif static struct io_listener *l; +static struct data *d2; struct data { int state; char buf[10]; }; -static struct io_plan closer(struct io_conn *conn, struct data *d) +static struct io_plan *closer(struct io_conn *conn, struct data *d) { d->state++; - return io_close(); + return io_close(conn); } -static struct io_plan connected(struct io_conn *conn, struct data *d2) +static struct io_plan *connected(struct io_conn *conn, struct data *d2) { ok1(d2->state == 0); d2->state++; - return io_read(d2->buf, sizeof(d2->buf), closer, d2); + return io_read(conn, d2->buf, sizeof(d2->buf), closer, d2); } -static void init_conn(int fd, struct data *d) +static struct io_plan *init_conn(struct io_conn *conn, struct data *d) { ok1(d->state == 0); d->state++; - io_new_conn(fd, io_write(d->buf, sizeof(d->buf), closer, d)); io_close_listener(l); + + return io_write(conn, d->buf, sizeof(d->buf), closer, d); } static int make_listen_fd(const char *port, struct addrinfo **info) @@ -70,9 +72,17 @@ static int make_listen_fd(const char *port, struct addrinfo **info) return fd; } +static struct io_plan *setup_connect(struct io_conn *conn, + struct addrinfo *addrinfo) +{ + d2 = malloc(sizeof(*d2)); + d2->state = 0; + return io_connect(conn, addrinfo, connected, d2); +} + int main(void) { - struct data *d = malloc(sizeof(*d)), *d2 = malloc(sizeof(*d2)); + struct data *d = malloc(sizeof(*d)); struct addrinfo *addrinfo; int fd; @@ -82,13 +92,12 @@ int main(void) memset(d->buf, 'a', sizeof(d->buf)); fd = make_listen_fd(PORT, &addrinfo); ok1(fd >= 0); - l = io_new_listener(fd, init_conn, d); + l = io_new_listener(NULL, fd, init_conn, d); ok1(l); fd = socket(addrinfo->ai_family, addrinfo->ai_socktype, addrinfo->ai_protocol); - d2->state = 0; - ok1(io_new_conn(fd, io_connect(fd, addrinfo, connected, d2))); + ok1(io_new_conn(NULL, fd, setup_connect, addrinfo)); ok1(io_loop() == NULL); ok1(d->state == 2);