X-Git-Url: http://git.meshlink.io/?p=utcp;a=blobdiff_plain;f=selftest.c;h=dacdd0c9e7748706fafe64fd34b68a2feb278bb5;hp=c0ecd3a600bffc05b335e1032454ed10ae9c75ab;hb=HEAD;hpb=45780e57bcc77d6c5f146dea0bb1924cad25bd83 diff --git a/selftest.c b/selftest.c index c0ecd3a..dacdd0c 100644 --- a/selftest.c +++ b/selftest.c @@ -10,53 +10,65 @@ struct utcp *a; struct utcp *b; struct utcp_connection *c; -int do_recv(struct utcp_connection *x, const void *data, size_t len) { +ssize_t do_recv(struct utcp_connection *x, const void *data, size_t len) { if(!len) { - if(errno) - fprintf(stderr, "%p Error: %s\n", x->utcp, strerror(errno)); - else - fprintf(stderr, "%p Connection closed by peer\n", x->utcp); + if(errno) { + fprintf(stderr, "%p Error: %s\n", (void *)x->utcp, strerror(errno)); + } else { + fprintf(stderr, "%p Connection closed by peer\n", (void *)x->utcp); + } + if(x != c) { fprintf(stderr, "closing my side too...\n"); utcp_close(x); } + return -1; } - if(x == c) - write(0, data, len); - else - utcp_send(x, data, len); - - return 0; + if(x == c) { + return write(0, data, len); + } else { + return utcp_send(x, data, len); + } } bool do_pre_accept(struct utcp *utcp, uint16_t port) { + (void)utcp; fprintf(stderr, "pre-accept\n"); - if(port != 7) + + if(port != 7) { return false; + } + return true; } void do_accept(struct utcp_connection *c, uint16_t port) { + (void)port; fprintf(stderr, "accept\n"); utcp_accept(c, do_recv, NULL); } -int do_send(struct utcp *utcp, const void *data, size_t len) { +ssize_t do_send(struct utcp *utcp, const void *data, size_t len) { static int count = 0; + if(++count > 1000) { fprintf(stderr, "Too many packets!\n"); abort(); } - if(utcp == a) + if(utcp == a) { return utcp_recv(b, data, len); - else + } else { return utcp_recv(a, data, len); + } } int main(int argc, char *argv[]) { + (void)argc; + (void)argv; + srand(time(NULL)); a = utcp_init(do_accept, do_pre_accept, do_send, NULL); @@ -84,18 +96,21 @@ int main(int argc, char *argv[]) { ssize_t len = utcp_send(c, "Hello world!\n", 13); if(len != 13) { - if(len < 0) + if(len == -1) { fprintf(stderr, "Error: %s\n", strerror(errno)); - else + } else { fprintf(stderr, "Short write %zd!\n", len); + } } + len = utcp_send(c, "This is a test.\n", 16); if(len != 16) { - if(len < 0) + if(len == -1) { fprintf(stderr, "Error: %s\n", strerror(errno)); - else + } else { fprintf(stderr, "Short write %zd!\n", len); + } } fprintf(stderr, "closing...\n"); @@ -107,13 +122,17 @@ int main(int argc, char *argv[]) { utcp_set_sndbuf(c, 10240); char buf[20480] = "buf"; - len = utcp_send(c, buf, sizeof buf); - if(len != 10240) + len = utcp_send(c, buf, sizeof(buf)); + + if(len != 10240) { fprintf(stderr, "Error: utcp_send() returned %zd, expected 10240\n", len); + } fprintf(stderr, "closing...\n"); utcp_close(c); + utcp_exit(a); + utcp_exit(b); return 0; }