From ce2dc6982101ffb964feb5f29354d2b061c4b2b6 Mon Sep 17 00:00:00 2001 From: Niklas Date: Thu, 1 Sep 2011 17:26:32 +0200 Subject: we tried some fixes for the messge loss problem, but we failed. Sebastian will look at the code later. server is now a echo server which sends ack for every received message. --- UnixDomainSocketServer/server | Bin 7638 -> 7638 bytes UnixDomainSocketServer/server.c | 8 ++++---- customdhcpcd/src/customdhcpcd | Bin 175254 -> 175292 bytes customdhcpcd/src/logwriter.c | 7 ++++--- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/UnixDomainSocketServer/server b/UnixDomainSocketServer/server index b90d066..05ff3ec 100755 Binary files a/UnixDomainSocketServer/server and b/UnixDomainSocketServer/server differ diff --git a/UnixDomainSocketServer/server.c b/UnixDomainSocketServer/server.c index 7746b49..1faf499 100644 --- a/UnixDomainSocketServer/server.c +++ b/UnixDomainSocketServer/server.c @@ -17,7 +17,7 @@ int main(int argc, char *argv[]) { int sockfd, newsockfd; socklen_t clilen; char buffer[1024]; - char ack[4]; + const char ack[4] = "ACK"; struct sockaddr_un serv_addr, cli_addr; int n; @@ -37,7 +37,6 @@ int main(int argc, char *argv[]) { error("ERROR on listen"); } - strcpy(ack,"ACK"); for (;;) { int done; @@ -52,14 +51,15 @@ int main(int argc, char *argv[]) { done = 0; do { - bzero(buffer, 1024); - n = read(newsockfd, buffer, 1023); + bzero(buffer, 2048); + n = read(newsockfd, buffer, 2048); if (n <= 0) { if (n<0) error("ERROR reading from socket"); done = 1; } printf("Here is the message: \"%s\"\n", buffer); if(!done) { + printf("send ACK"); if (send(newsockfd, ack, sizeof(ack), 0) < 0) { error("ERROR on send"); done = 1; diff --git a/customdhcpcd/src/customdhcpcd b/customdhcpcd/src/customdhcpcd index 1fd0594..65aedd0 100755 Binary files a/customdhcpcd/src/customdhcpcd and b/customdhcpcd/src/customdhcpcd differ diff --git a/customdhcpcd/src/logwriter.c b/customdhcpcd/src/logwriter.c index cc7a595..378d805 100644 --- a/customdhcpcd/src/logwriter.c +++ b/customdhcpcd/src/logwriter.c @@ -82,7 +82,7 @@ void sendToQt(log_msg * msg) { int t; const char *tpl = "%s;%d;%d;%s\n"; char *outbuf; - char ack[4]; + char ack[8]; size_t outbuf_size = sizeof(char) * 4 + // ";" *3 + newline sizeof(int) * 2 + // status, substatus sizeof(msg->device) + // devicename @@ -104,9 +104,10 @@ void sendToQt(log_msg * msg) { msg->status, msg->substatus, msg->msg, msg->device); // fprintf(stdout, "ERROR writing to socket: %s", msg); } - if ((t = recv(sockfd, ack, 4, 0)) > 0) { - ack[t] = '\0'; + memset(ack,0,sizeof(ack)); + if ((t = recv(sockfd, ack, sizeof(ack), 0)) > 0) { syslog(LOG_ERR, "[fbgui] recv ack echo> %s", ack); + printf("received: %s\n", ack); } else { if (t < 0) syslog(LOG_ERR, "[fbgui] ERROR receiving from socket"); -- cgit v1.2.3-55-g7522