#include <assert.h>
#include <ctype.h>
#include <errno.h>
+#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mLib/alloc.h>
#include <mLib/conn.h>
+#include <mLib/macros.h>
#include <mLib/mdwopt.h>
#include <mLib/quis.h>
#include <mLib/report.h>
sel_timer t;
} blast;
+#define sin saddrin
static struct sockaddr_in sin;
static sel_state sel;
static struct timeval ctv = { 0, 500000 };
static sel_timer sec;
static unsigned count = 0;
-static void timers(void);
+static void IGNORABLE timers(void);
static void stats(struct timeval *tv, void *p)
{
else {
count++;
close(fd);
- newconn(b);
}
+ newconn(b);
}
static void timeout(struct timeval *tv, void *p)
sel_timer *t = sel.timers;
while (t) {
struct tab *q; for (q = tab; q->func != t->func; q++) ;
- assert(t->prev->next == t);
- printf("%i.%06i %p %s\n", t->tv.tv_sec, t->tv.tv_usec, t->p, q->name);
+/* assert(t->prev->next == t); */
+ printf("%lu.%06lu %p %s\n", t->tv.tv_sec, t->tv.tv_usec, t->p, q->name);
assert(t != t->next);
t = t->next;
}
puts("");
}
-
+
static void newconn(blast *b)
{
int fd = socket(PF_INET, SOCK_STREAM, 0);
gettimeofday(&tv, 0);
TV_ADD(&tv, &tv, &ctv);
sel_addtimer(&sel, &b->t, &tv, timeout, b);
- conn_init(&b->c, &sel, fd, (struct sockaddr *)&sin, sizeof(sin),
- connected, b);
+ if (conn_init(&b->c, &sel, fd, (struct sockaddr *)&sin, sizeof(sin),
+ connected, b))
+ goto fail;
return;
fail:
+ sel_rmtimer(&b->t);
backoff(b);
}
argv += optind;
argc -= optind;
if (argc != 2) {
- pquis(stderr, "Usage: $ [-t time] [-n count] host port\n");
+ pquis(stderr, "Usage: $ [-t TIME] [-n COUNT] HOST PORT\n");
exit(1);
}