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));
}
if(x == c)
- write(0, data, len);
+ return write(0, data, len);
else
- utcp_send(x, data, len);
-
- return 0;
+ return utcp_send(x, data, len);
}
bool do_pre_accept(struct utcp *utcp, uint16_t port) {
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");
fprintf(stderr, "closing...\n");
utcp_close(c);
+ fprintf(stderr, "\nTesting connection with huge data transfer\n\n");
+
+ c = utcp_connect(b, 7, do_recv, NULL);
+ utcp_set_sndbuf(c, 10240);
+ char buf[20480] = "buf";
+
+ 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;
}