X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=jam.c;h=d447debb1c723849714fd3b65356a3ca024ed0d5;hb=4122bc3e390fa1cc93fbd2854757067a6c34e763;hp=f7417e373b5583e852d24b7a7378c9def90f2be3;hpb=f37bf230ab686ac4c964758666406afa1319d0b7;p=jam diff --git a/jam.c b/jam.c index f7417e3..d447deb 100644 --- a/jam.c +++ b/jam.c @@ -10,6 +10,7 @@ #include #include #include +#include unsigned short port = 2007; @@ -173,7 +174,7 @@ void generate_new_sender(int ep_fd) sin.sin_addr = destinations[dst_num]; // non-blocking connect (will be detected by epoll later) - if (connect(sock, (struct sockaddr *)&sin, sizeof(sin)) == -1) { + if (connect(sock, (struct sockaddr *)&sin, sizeof(sin)) == -1 && errno != EINPROGRESS) { perror("connect()"); exit(1); } @@ -219,8 +220,13 @@ void *sender_worker(void *arg) generate_new_sender(ep_fd); for ( ;; ) { - int ret = epoll_wait(ep_fd, events, num_sockets_per_sender, -1); - for (i = 0; i < ret; ++i) { + int num_active = epoll_wait(ep_fd, events, num_sockets_per_sender, -1); + if (num_active == -1) { + perror("epoll_wait"); + exit(1); + } + + for (i = 0; i < num_active; ++i) { unsigned bytes_to_send = events[i].data.u64; unsigned ret;