From 08f8355f7465824373f6c3150b0a750f1a27758b Mon Sep 17 00:00:00 2001 From: David Brodski Date: Wed, 22 Dec 2010 15:24:15 +0000 Subject: [PATCH] Errors fixed --- src/transport/gnunet-transport-wlan-helper.c | 44 ++++++++++++------- .../test_plugin_transport_wlan_dummy.c | 34 +++++++++----- 2 files changed, 52 insertions(+), 26 deletions(-) diff --git a/src/transport/gnunet-transport-wlan-helper.c b/src/transport/gnunet-transport-wlan-helper.c index 4332e9a0d..48b628e94 100644 --- a/src/transport/gnunet-transport-wlan-helper.c +++ b/src/transport/gnunet-transport-wlan-helper.c @@ -392,10 +392,11 @@ int ieee80211_radiotap_iterator_next( return -ENOENT; } -#define FIFO_FILE1 "MYFIFOin" -#define FIFO_FILE2 "MYFIFOout" +#define FIFO_FILE1 "/tmp/MYFIFOin" +#define FIFO_FILE2 "/tmp/MYFIFOout" #define MAXLINE 5000 +int first; int closeprog = 0; void sigfunc(int sig) @@ -404,9 +405,14 @@ void sigfunc(int sig) if(sig != SIGINT || sig != SIGTERM || sig != SIGKILL) return; else - { - closeprog = 1; - } + { + closeprog = 1; + if (first == 1) + { + unlink(FIFO_FILE1); + unlink(FIFO_FILE2); + } + } } @@ -416,19 +422,18 @@ testmode(int argc, char *argv[]) { struct stat st; int erg; - int first; + + int fd[2]; FILE *fpin; FILE *fpout; pid_t pid; - signal(SIGINT,sigfunc); - signal(SIGTERM,sigfunc); - signal(SIGKILL,sigfunc); + //make the fifos if needed if (stat(FIFO_FILE1, &st) != 0) { - if (stat(FIFO_FILE2, &st) != 0) + if (stat(FIFO_FILE2, &st) == 0) { perror("FIFO 2 exists, but FIFO 1 not"); exit(1); @@ -452,7 +457,7 @@ testmode(int argc, char *argv[]) else { first = 0; - if (stat(FIFO_FILE2, &st) == 0) + if (stat(FIFO_FILE2, &st) != 0) { perror("FIFO 1 exists, but FIFO 2 not"); exit(1); @@ -472,6 +477,9 @@ testmode(int argc, char *argv[]) // fork + fd[0] = STDIN_FILENO; + fd[1] = STDOUT_FILENO; + if ((pid = fork()) < 0) { perror("FORK ERROR"); @@ -488,6 +496,10 @@ testmode(int argc, char *argv[]) } else if (pid == 0) // CHILD PROCESS { + + signal(SIGINT, sigfunc); + signal(SIGTERM, sigfunc); + signal(SIGKILL, sigfunc); int rv = 0; int readc = 0; int pos = 0; @@ -498,7 +510,7 @@ testmode(int argc, char *argv[]) readc = 0; while (readc < sizeof( struct RadiotapHeader) + sizeof(struct GNUNET_MessageHeader)){ - if ((rv = read(STDIN_FILENO, line, MAXLINE)) < 0) + if ((rv = read(fd[0], line, MAXLINE)) < 0) { perror("READ ERROR FROM STDIN"); } @@ -526,12 +538,14 @@ testmode(int argc, char *argv[]) } else // PARENT PROCESS { + signal(SIGINT, sigfunc); + signal(SIGTERM, sigfunc); + signal(SIGKILL, sigfunc); int rv = 0; ssize_t pos = 0; char line[MAXLINE]; struct Wlan_Helper_Control_Message macmsg; - //Send random mac address macmsg.mac.mac[0] = 0x13; macmsg.mac.mac[1] = 0x22; @@ -544,7 +558,7 @@ testmode(int argc, char *argv[]) pos = 0; while (pos < sizeof(struct Wlan_Helper_Control_Message)) { - pos += write(STDOUT_FILENO, &macmsg + pos, sizeof(struct Wlan_Helper_Control_Message) - pos); + pos += write(fd[1], &macmsg + pos, sizeof(struct Wlan_Helper_Control_Message) - pos); } while (closeprog == 0) @@ -557,7 +571,7 @@ testmode(int argc, char *argv[]) pos = 0; while (pos < rv) { - pos += write(STDOUT_FILENO, &line[pos], rv - pos); + pos += write(fd[1], &line[pos], rv - pos); } } diff --git a/src/transport/test_plugin_transport_wlan_dummy.c b/src/transport/test_plugin_transport_wlan_dummy.c index 53b957eca..85ea223ab 100644 --- a/src/transport/test_plugin_transport_wlan_dummy.c +++ b/src/transport/test_plugin_transport_wlan_dummy.c @@ -50,6 +50,7 @@ void sigfunc(int sig) else { closeprog = 1; + exit(0); } } @@ -58,26 +59,27 @@ void sigfunc(int sig) int main(int argc, char *argv[]) { - struct stat st,st2; + struct stat st; + struct stat st2; int erg; int first; FILE *fpin; FILE *fpout; pid_t pid; - signal(SIGINT,sigfunc); - signal(SIGTERM,sigfunc); - signal(SIGKILL,sigfunc); + perror("Test"); + //make the fifos if needed if (stat(FIFO_FILE1, &st) != 0) { - if (stat(FIFO_FILE2, &st2) != 0) + if (stat(FIFO_FILE2, &st2) == 0) { - perror("FIFO 2 exists, but FIFO 1 not"); + perror("FIFO 2 exists, but FIFO 1 not, blub"); exit(1); } first = 1; + perror("First"); umask(0); erg = mknod(FIFO_FILE1, S_IFIFO | 0666, 0); erg = mknod(FIFO_FILE2, S_IFIFO | 0666, 0); @@ -96,9 +98,10 @@ main(int argc, char *argv[]) else { first = 0; - if (stat(FIFO_FILE2, &st2) == 0) + perror("Second"); + if (stat(FIFO_FILE2, &st2) != 0) { - perror("FIFO 1 exists, but FIFO 2 not"); + perror("FIFO 1 exists, but FIFO 2 not, mäh"); exit(1); } if ((fpout = fopen(FIFO_FILE1, "w")) == NULL) @@ -132,6 +135,10 @@ main(int argc, char *argv[]) } else if (pid == 0) // CHILD PROCESS { + perror("Child"); + signal(SIGINT, sigfunc); + signal(SIGTERM, sigfunc); + signal(SIGKILL, sigfunc); int rv = 0; int readc = 0; int pos = 0; @@ -151,9 +158,9 @@ main(int argc, char *argv[]) pos = 0; - fwrite(&line[pos], 1, sizeof(struct GNUNET_MessageHeader), fpout); + //fwrite(&line[pos], 1, sizeof(struct GNUNET_MessageHeader), fpout); - pos += sizeof(struct GNUNET_MessageHeader); + //pos += sizeof(struct GNUNET_MessageHeader); //do not send radiotap header pos += sizeof( struct RadiotapHeader); @@ -170,6 +177,10 @@ main(int argc, char *argv[]) } else // PARENT PROCESS { + perror("Parent"); + signal(SIGINT, sigfunc); + signal(SIGTERM, sigfunc); + signal(SIGKILL, sigfunc); int rv = 0; ssize_t pos = 0; char line[MAXLINE]; @@ -186,11 +197,12 @@ main(int argc, char *argv[]) macmsg.hdr.size = sizeof(struct Wlan_Helper_Control_Message); pos = 0; + /* while (pos < sizeof(struct Wlan_Helper_Control_Message)) { pos += write(STDOUT_FILENO, &macmsg + pos, sizeof(struct Wlan_Helper_Control_Message) - pos); } - + */ while (closeprog == 0) { if ((rv = fread(line, 1, MAXLINE, fpin)) < 0) -- 2.25.1