From b7086a3c9d4c6d9f8fa5a93ab3d96ef0a98faa02 Mon Sep 17 00:00:00 2001 From: rd235 Date: Mon, 14 Feb 2011 14:45:32 +0000 Subject: [PATCH] bugfixes: wirefilter getopt_long option list, vde_switch EAGAIN/EWOULDBLOCK (tnx megurikuru) git-svn-id: https://vde.svn.sourceforge.net/svnroot/vde/trunk@471 d37a7db1-d92d-0410-89df-f68f52f87b57 --- vde-2/src/vde_switch/datasock.c | 6 +++--- vde-2/src/vde_switch/tuntap.c | 9 ++++++--- vde-2/src/wirefilter.c | 5 +++-- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/vde-2/src/vde_switch/datasock.c b/vde-2/src/vde_switch/datasock.c index f706083..2e3b999 100644 --- a/vde-2/src/vde_switch/datasock.c +++ b/vde-2/src/vde_switch/datasock.c @@ -92,7 +92,7 @@ static int send_datasock(int fd, int ctl_fd, void *packet, int len, void *data, if(n){ int rv=errno; #ifndef VDE_PQ - if(errno != EAGAIN) printlog(LOG_WARNING,"send_sockaddr port %d: %s",port,strerror(errno)); + if(errno != EAGAIN && errno != EWOULDBLOCK) printlog(LOG_WARNING,"send_sockaddr port %d: %s",port,strerror(errno)); #endif if (n>len) return -rv; @@ -228,7 +228,7 @@ static void handle_input(unsigned char type,int fd,int revents,int *arg) len=recvfrom(fd, &(packet.p), sizeof(struct packet),0, &sock, &socklen); if(len < 0){ - if (errno == EAGAIN) return; + if (errno == EAGAIN || errno == EWOULDBLOCK) return; printlog(LOG_WARNING,"Reading data: %s",strerror(errno)); } else if(len == 0) @@ -243,7 +243,7 @@ static void handle_input(unsigned char type,int fd,int revents,int *arg) len = read(fd, reqbuf, REQBUFLEN); if (len < 0) { - if(errno != EAGAIN){ + if(errno != EAGAIN && errno != EWOULDBLOCK){ printlog(LOG_WARNING,"Reading request %s", strerror(errno)); remove_fd(fd); } diff --git a/vde-2/src/vde_switch/tuntap.c b/vde-2/src/vde_switch/tuntap.c index 6918032..cad49fe 100644 --- a/vde-2/src/vde_switch/tuntap.c +++ b/vde-2/src/vde_switch/tuntap.c @@ -60,7 +60,8 @@ static int send_tap(int fd, int ctl_fd, void *packet, int len, void *unused, int if(n){ int rv=errno; #ifndef VDE_PQ - if(errno != EAGAIN) printlog(LOG_WARNING,"send_tap port %d: %s",port,strerror(errno)); + if(errno != EAGAIN && errno != EWOULDBLOCK) + printlog(LOG_WARNING,"send_tap port %d: %s",port,strerror(errno)); #endif if (n > len) return -rv; @@ -82,10 +83,12 @@ static void handle_input(unsigned char type,int fd,int revents,int *arg) int len=read(fd, &(packet.p), sizeof(struct packet)); if(len < 0){ - if(errno != EAGAIN) printlog(LOG_WARNING,"Reading tap data: %s",strerror(errno)); + if(errno != EAGAIN && errno != EWOULDBLOCK) + printlog(LOG_WARNING,"Reading tap data: %s",strerror(errno)); } else if(len == 0) { - if(errno != EAGAIN) printlog(LOG_WARNING,"EOF tap data port: %s",strerror(errno)); + if(errno != EAGAIN && errno != EWOULDBLOCK) + printlog(LOG_WARNING,"EOF tap data port: %s",strerror(errno)); /* close tap! */ } else if (len >= ETH_HEADER_SIZE) handle_in_packet(*arg, &(packet.p), len); diff --git a/vde-2/src/wirefilter.c b/vde-2/src/wirefilter.c index d97e478..c392430 100644 --- a/vde-2/src/wirefilter.c +++ b/vde-2/src/wirefilter.c @@ -1453,7 +1453,8 @@ int main(int argc,char *argv[]) {"daemon",0 , 0, DAEMONIZEARG}, {"pidfile", 1, 0, PIDFILEARG}, {"blink",1,0,LOGSOCKETARG}, - {"blinkid",1,0,LOGIDARG} + {"blinkid",1,0,LOGIDARG}, + {0,0,0,0} }; progname=basename(argv[0]); markov_resize(1); @@ -1463,7 +1464,7 @@ int main(int argc,char *argv[]) while(1) { int c; - c = GETOPT_LONG (argc, argv, "hnl:d:M:D:m:b:s:c:v:L:f:", + c = GETOPT_LONG (argc, argv, "hl:n:d:M:D:m:b:s:c:v:L:f:", long_options, &option_index); if (c<0) break; -- 2.11.4.GIT