From 7b70ed08d261dc9db9e026b215a72da2cbd58089 Mon Sep 17 00:00:00 2001 From: Michael Rash Date: Thu, 23 Oct 2014 23:05:21 -0400 Subject: [PATCH] [server] ensure to break out of while loop and close() UDP socket before returning --- server/udp_server.c | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/server/udp_server.c b/server/udp_server.c index 3dde17be..ba1de8cc 100644 --- a/server/udp_server.c +++ b/server/udp_server.c @@ -53,7 +53,7 @@ int run_udp_server(fko_srv_options_t *opts) { int s_sock, sfd_flags, selval, pkt_len; - int is_err, s_timeout; + int is_err, s_timeout, rv=1; fd_set sfd_set; struct sockaddr_in saddr, caddr; struct timeval tv; @@ -136,10 +136,7 @@ run_udp_server(fko_srv_options_t *opts) while(1) { if(sig_do_stop()) - { - close(s_sock); - return 1; - } + break; /* Check for any expired firewall rules and deal with them. */ @@ -164,8 +161,8 @@ run_udp_server(fko_srv_options_t *opts) */ log_msg(LOG_ERR, "run_udp_server: select error socket: %s", strerror(errno)); - close(s_sock); - return -1; + rv = -1; + break; } if(selval == 0) @@ -212,23 +209,19 @@ run_udp_server(fko_srv_options_t *opts) log_msg(LOG_DEBUG, "run_udp_server() processed: %d packets", opts->packet_ctr); - /* Count the set of processed packets (pcap_dispatch() return - * value) - we use this as a comparison for --packet-limit regardless - * of SPA packet validity at this point. - */ if (opts->packet_ctr_limit && opts->packet_ctr >= opts->packet_ctr_limit) { log_msg(LOG_WARNING, "* Incoming packet count limit of %i reached", opts->packet_ctr_limit ); - return 1; + break; } } /* infinite while loop */ close(s_sock); - return 1; + return rv; } /***EOF***/