Module: sems Branch: master Commit: cf5e2b560bc492b56ee110e2ab3cb097600c5146 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=cf5e2b560bc492b56ee110e2ab3cb097600c5146
Author: Stefan Sayer <[email protected]> Committer: Stefan Sayer <[email protected]> Date: Mon Nov 21 13:25:38 2011 +0100 introduce timeout for sems-stats management utility based on a patch by T Searle closes #66 --- 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 4c13b4d..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\n",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
