X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;ds=sidebyside;f=test.c;h=10ebc9a63c441571fee10852cc94e58c8b8cd183;hb=5b99f2504f553edfd31ce5d0b05f825dd8dc4632;hp=956d1efd8d8fc5cee726b19b41ef55ba6a623888;hpb=c93ef1391476090d5afacb899632df5476f964ed;p=utcp diff --git a/test.c b/test.c index 956d1ef..10ebc9a 100644 --- a/test.c +++ b/test.c @@ -17,17 +17,18 @@ struct utcp_connection *c; int dir = 3; bool running = true; -int do_recv(struct utcp_connection *c, void *data, size_t len) { +int do_recv(struct utcp_connection *c, const void *data, size_t len) { if(!data || !len) { - if(errno) + if(errno) { fprintf(stderr, "Error: %s\n", strerror(errno)); - else { + dir = 0; + } else { dir &= ~2; fprintf(stderr, "Connection closed by peer\n"); } return 0; } - return write(0, data, len); + return write(1, data, len); } void do_accept(struct utcp_connection *nc, uint16_t port) { @@ -35,7 +36,7 @@ void do_accept(struct utcp_connection *nc, uint16_t port) { c = nc; } -int do_send(struct utcp *utcp, void *data, size_t len) { +int do_send(struct utcp *utcp, const void *data, size_t len) { int s = *(int *)utcp->priv; return send(s, data, len, MSG_DONTWAIT); } @@ -76,6 +77,8 @@ int main(int argc, char *argv[]) { if(!u) return 1; + utcp_set_connection_timeout(u, 10); + if(!server) c = utcp_connect(u, 1, do_recv, NULL); @@ -85,13 +88,10 @@ int main(int argc, char *argv[]) { }; char buf[1024]; + int timeout = utcp_timeout(u); while(dir) { - int r = poll(fds, 2, 1000); - if(!r) { - utcp_timeout(u); - continue; - } + poll(fds, 2, timeout); if(fds[0].revents) { int len = read(0, buf, sizeof buf); @@ -120,6 +120,8 @@ int main(int argc, char *argv[]) { connected = true; utcp_recv(u, buf, len); } + + timeout = utcp_timeout(u); }; utcp_close(c);