Module: sems
Branch: 1.4
Commit: f755fac491982ddeca84e5cab03b64a02e5251a5
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=f755fac491982ddeca84e5cab03b64a02e5251a5

Author: Stefan Sayer <[email protected]>
Committer: Stefan Sayer <[email protected]>
Date:   Mon Nov 21 13:36:31 2011 +0100

introduce timeout for sems-stats management utility

based on a patch by T Searle

closes #66

Conflicts:

        core/plug-in/stats/query_stats.cxx

---

 core/plug-in/stats/query_stats.cxx |   32 ++++++++++++++++++++++++--------
 1 files changed, 24 insertions(+), 8 deletions(-)

diff --git a/core/plug-in/stats/query_stats.cxx 
b/core/plug-in/stats/query_stats.cxx
index 674f16c..f226be5 100644
--- a/core/plug-in/stats/query_stats.cxx
+++ b/core/plug-in/stats/query_stats.cxx
@@ -127,17 +127,33 @@ int main(int argc, char** argv)
     
   if(err == -1){
     fprintf(stderr,"sendto: %s\n",strerror(errno));
-  }
-  else {
-    int msg_size = recv(sd,rcv_buf,MSG_BUF_SIZE,0);
-    if(msg_size == -1)
-      fprintf(stderr,"recv: %s\n",strerror(errno));
-    else
-      printf("received:\n%.*s",msg_size-1,rcv_buf);
+  } else {
+    err = 0;
+    struct timeval timeout = {5,0};
+    fd_set rcv_fd;
+    FD_ZERO(&rcv_fd);
+    FD_SET(sd, &rcv_fd);
+
+    int select_result = select(sd+1, &rcv_fd, NULL, NULL, &timeout);
+    if(select_result == -1) {
+      fprintf(stderr,"select: %s\n",strerror(errno));
+      err = 1;
+    } else if(select_result == 0) {
+      fprintf(stderr,"read timeout!\n");
+      err = 1;
+    } else {
+      int msg_size = recv(sd,rcv_buf,MSG_BUF_SIZE,0);
+      if(msg_size == -1) {
+        fprintf(stderr,"recv: %s\n",strerror(errno));
+       err = 2;
+      } else {
+        printf("received:\n%.*s\n",msg_size-1,rcv_buf);
+      }
+    }
   }
     
   close(sd);
-  return 0;
+  return err;
 }
 
 

_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev

Reply via email to