long total_in;
FILE *reference;
long mtu = 0;
+long bufsize;
char *reorder_data;
size_t reorder_len;
int reorder_countdown;
#if UTCP_DEBUG
-void debug(const char *format, ...) {
- struct timeval now;
- gettimeofday(&now, NULL);
- fprintf(stderr, "%lu.%lu ", now.tv_sec, now.tv_usec / 1000);
+static void debug(const char *format, ...) {
+ struct timespec tv;
+ char buf[1024];
+ int len;
+
+ clock_gettime(CLOCK_REALTIME, &tv);
+ len = snprintf(buf, sizeof(buf), "%ld.%06lu ", (long)tv.tv_sec, tv.tv_nsec / 1000);
va_list ap;
va_start(ap, format);
- vfprintf(stderr, format, ap);
+ len += vsnprintf(buf + len, sizeof(buf) - len, format, ap);
va_end(ap);
+
+ if(len > 0 && (size_t)len < sizeof(buf)) {
+ fwrite(buf, len, 1, stderr);
+ }
}
#else
#define debug(...) do {} while(0)
(void)port;
utcp_accept(nc, do_recv, NULL);
c = nc;
+
+ if(bufsize) {
+ utcp_set_sndbuf(c, bufsize);
+ utcp_set_rcvbuf(c, bufsize);
+ }
+
utcp_set_accept_cb(c->utcp, NULL, NULL);
}
mtu = 1500;
}
- fprintf(stderr, "Using MTU %lu\n", mtu);
+ debug("Using MTU %lu\n", mtu);
utcp_set_mtu(u, mtu ? mtu - 48 : 1300);
}
mtu = atoi(getenv("MTU"));
}
+ if(getenv("BUFSIZE")) {
+ bufsize = atoi(getenv("BUFSIZE"));
+ }
+
char *reference_filename = getenv("REFERENCE");
if(reference_filename) {
if(!server) {
set_mtu(u, s);
c = utcp_connect_ex(u, 1, do_recv, NULL, flags);
+
+ if(bufsize) {
+ utcp_set_sndbuf(c, bufsize);
+ utcp_set_rcvbuf(c, bufsize);
+ }
}
struct pollfd fds[2] = {
if(fds[0].revents) {
fds[0].revents = 0;
- debug("stdin\n");
ssize_t len = read(0, buf, max);
+ debug("stdin %zd\n", len);
if(len <= 0) {
fds[0].fd = -1;
if(fds[1].revents) {
fds[1].revents = 0;
- debug("netin\n");
struct sockaddr_storage ss;
socklen_t sl = sizeof(ss);
int len = recvfrom(s, buf, sizeof(buf), MSG_DONTWAIT, (struct sockaddr *)&ss, &sl);
+ debug("netin %zu\n", len);
if(len <= 0) {
debug("Error receiving UDP packet: %s\n", strerror(errno));