X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=jam.c;fp=jam.c;h=5faf0379d4b7eb13299dd48595641d935e6e409a;hb=2f5350f30cbfeebde0bd287d16fb118639536493;hp=581d51c91200a69696aabe8d39e9519b19c250ca;hpb=b1ce9404c6aaf3105377489bfc8d0bf27ad67b3b;p=jam diff --git a/jam.c b/jam.c index 581d51c..5faf037 100644 --- a/jam.c +++ b/jam.c @@ -148,21 +148,14 @@ struct sender { unsigned long long bytes_left; }; -void generate_new_sender(int ep_fd) +void generate_new_sender(int ep_fd, struct sender *s) { int sock, one = 1; unsigned src_num, dst_num; unsigned long long num_bytes; struct sockaddr_in sin; struct epoll_event ev; - struct sender *s; - s = (struct sender *)malloc(sizeof(struct sender)); - if (s == NULL) { - perror("malloc()"); - exit(1); - } - sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); if (sock == -1) { perror("socket()"); @@ -230,8 +223,15 @@ void *sender_worker(void *arg) buf[i] = rand() & 0xff; // allocate all the senders - for (i = 0; i < num_sockets_per_sender; ++i) - generate_new_sender(ep_fd); + for (i = 0; i < num_sockets_per_sender; ++i) { + struct sender *s = (struct sender *)malloc(sizeof(struct sender)); + if (s == NULL) { + perror("malloc()"); + exit(1); + } + + generate_new_sender(ep_fd, s); + } for ( ;; ) { int num_active = epoll_wait(ep_fd, events, num_sockets_per_sender, -1); @@ -277,9 +277,7 @@ void *sender_worker(void *arg) exit(1); } close(s->fd); - - free(s); - generate_new_sender(ep_fd); + generate_new_sender(ep_fd, s); } } }