From d3a454e48c77c986c201cec18dd88defe73c12f1 Mon Sep 17 00:00:00 2001 From: Jeremy Lakeman Date: Thu, 23 Jan 2014 14:09:00 +1030 Subject: [PATCH] Ensure ping flooding doesn't block --- commandline.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/commandline.c b/commandline.c index 528e623d..04ddd772 100644 --- a/commandline.c +++ b/commandline.c @@ -1043,7 +1043,9 @@ int app_mdp_ping(const struct cli_parsed *parsed, struct cli_context *context) timeout_ms = 60 * 60000; // 1 hour... int64_t interval_ms = 1000; str_to_uint64_interval_ms(opt_interval, &interval_ms, NULL); - + if (interval_ms == 0) + interval_ms = 1000; + /* First sequence number in the echo frames */ unsigned int firstSeq=random(); unsigned int sequence_number=firstSeq; @@ -1054,6 +1056,7 @@ int app_mdp_ping(const struct cli_parsed *parsed, struct cli_context *context) if ((mdp_sockfd = mdp_socket()) < 0) return WHY("Cannot create MDP socket"); + set_nonblock(mdp_sockfd); struct mdp_header mdp_header; bzero(&mdp_header, sizeof(mdp_header)); @@ -1083,7 +1086,7 @@ int app_mdp_ping(const struct cli_parsed *parsed, struct cli_context *context) sigIntFlag = 0; signal(SIGINT, sigIntHandler); - for (; sigIntFlag==0 && (icount==0 || tx_count