-rw-r--r-- | noncore/net/wellenreiter/daemon/source/daemon.cc | 1 | ||||
-rw-r--r-- | noncore/net/wellenreiter/daemon/source/sendgui.cc | 47 | ||||
-rw-r--r-- | noncore/net/wellenreiter/daemon/source/sendgui.hh | 1 |
3 files changed, 8 insertions, 41 deletions
diff --git a/noncore/net/wellenreiter/daemon/source/daemon.cc b/noncore/net/wellenreiter/daemon/source/daemon.cc index 7972c0f..8724efa 100644 --- a/noncore/net/wellenreiter/daemon/source/daemon.cc +++ b/noncore/net/wellenreiter/daemon/source/daemon.cc @@ -64,16 +64,17 @@ int main(int argc, char **argv) if(FD_ISSET(fileno(fp), &rset)) { memset(buffer, 0, sizeof(buffer)); if(fgets(buffer, sizeof(buffer) - 1, fp) == NULL) { log_err("Cannot read from stdin: %s", strerror(errno)); break; } + log_info("Sending command to '%s': %s", GUIADDR, buffer); /* Send string to GUI */ sendgui("%d: %s", 1234, buffer); } } diff --git a/noncore/net/wellenreiter/daemon/source/sendgui.cc b/noncore/net/wellenreiter/daemon/source/sendgui.cc index 48ad5b8..9e57094 100644 --- a/noncore/net/wellenreiter/daemon/source/sendgui.cc +++ b/noncore/net/wellenreiter/daemon/source/sendgui.cc @@ -3,73 +3,40 @@ * * $Id$ */ #include "config.hh" #include "sendgui.hh" #include "log.hh" -/* Simple dummy for alarm timer */ -static void alarmdummy(int signo) -{ - alarm (0); -} - -/* Connect to given IP on given port */ -int connect_server(int *sock, unsigned int ipaddr, int port) -{ - struct sockaddr_in saddr; - int retval=0; - - *sock = socket (PF_INET, SOCK_STREAM, 0); - saddr.sin_family = PF_INET; - saddr.sin_port = htons (port); - saddr.sin_addr.s_addr = ipaddr; - - signal (SIGALRM, alarmdummy); - siginterrupt (SIGALRM, 1); - - alarm(5); - retval=connect (*sock, (struct sockaddr *) &saddr, sizeof (saddr)); - alarm(0); - - if(retval < 0) - { - close (*sock); - return 0; - } - - return 1; -} - /* Send a string to the GUI */ int sendgui(const char *string, ...) { int sock=0; char buffer[4096]; + struct sockaddr_in saddr; va_list ap; /* Generate string */ memset(buffer, 0, sizeof(buffer)); va_start(ap, string); vsnprintf(buffer, sizeof(buffer)-1, string, ap); va_end(ap); - if(!connect_server(&sock, inet_addr(GUIADDR), GUIPORT)) - { - log_err("Connect to GUI at '%s' failed: %s", GUIADDR, strerror(errno)); - return 0; - } + /* Setup socket */ + sock = socket (AF_INET, SOCK_DGRAM, 0); + saddr.sin_family = AF_INET; + saddr.sin_port = htons(GUIPORT); + saddr.sin_addr.s_addr = inet_addr(GUIADDR); - if(write(sock, buffer, sizeof(buffer)) < 0) + if(sendto(sock, buffer, sizeof(buffer), 0, (struct sockaddr *)&saddr, sizeof(saddr)) < 0) { log_err("Cannot write to socket: %s", strerror(errno)); close(sock); return 0; } if(close(sock) < 0) log_err("Cannot close socket: %s", strerror(errno)); return 1; } - diff --git a/noncore/net/wellenreiter/daemon/source/sendgui.hh b/noncore/net/wellenreiter/daemon/source/sendgui.hh index e083704..d9b3fcd 100644 --- a/noncore/net/wellenreiter/daemon/source/sendgui.hh +++ b/noncore/net/wellenreiter/daemon/source/sendgui.hh @@ -9,12 +9,11 @@ #include <arpa/inet.h> #include <signal.h> #include <errno.h> #include <string.h> #include <stdio.h> #include <unistd.h> #include <stdlib.h> -int connect_server(int *, unsigned int, int); int sendgui(const char *string, ...); #endif /* SENDGUI_HH */ |