From 29342280057b6cde4174c4a4aa61f84a31fb3d61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20Gallou=C3=ABt?= Date: Thu, 27 Oct 2016 15:04:11 +0000 Subject: [PATCH] Remove pull/push of mud --- mud | 2 +- src/main.c | 66 +++++++++++++++++++++--------------------------------- 2 files changed, 27 insertions(+), 41 deletions(-) diff --git a/mud b/mud index df0d941..22d6178 160000 --- a/mud +++ b/mud @@ -1 +1 @@ -Subproject commit df0d941241f9a72538807fefc45ce3d202271001 +Subproject commit 22d61780fd0492785d05625612b469476d8220bc diff --git a/src/main.c b/src/main.c index b304cd8..880c9c7 100644 --- a/src/main.c +++ b/src/main.c @@ -401,22 +401,19 @@ int main (int argc, char **argv) int send_next_tc = 0; while (!gt.quit) { - FD_SET(tun_fd, &rfds); + if (send_size0) { if (send_size>send_limit) memmove(send.buf, &send.buf[send_limit], send_size-send_limit); send_size -= send_limit; @@ -505,7 +500,6 @@ int main (int argc, char **argv) if (tun_set_mtu(tun_name, new_mtu)==-1) { perror("tun_set_mtu"); - gt.quit |= 1; break; } @@ -541,39 +535,31 @@ int main (int argc, char **argv) } } - if (mud_push(mud)==-1 && errno!=EAGAIN) - perror("mud_push"); - if (FD_ISSET(mud_fd, &rfds)) { - if (mud_pull(mud)==-1 && errno!=EAGAIN) - perror("mud_pull"); - } + while (1) { + const int size = mud_recv(mud, recv.buf, mtu); - while (!gt.quit) { - const int size = mud_recv(mud, recv.buf, mtu); - - if (size<=0) { - if (size==-1 && errno!=EAGAIN) - perror("mud_recv"); - break; - } - - int p = 0; - - while (psize-p) - break; - - const ssize_t r = tun_write(tun_fd, recv.buf+p, ic.size); - - if (r<=0) { - gt.quit |= !r; + if (size<=0) { + if (size==-1 && errno!=EAGAIN) + perror("mud_recv"); break; } - p += ic.size; + int p = 0; + + while (psize-p) + break; + + const ssize_t r = tun_write(tun_fd, recv.buf+p, ic.size); + + if (r<=0) + break; + + p += ic.size; + } } } }