From de136c9b1a65c1df343437bc2e3656832f20539f Mon Sep 17 00:00:00 2001 From: Razvan Deaconescu Date: Thu, 11 Nov 2010 17:33:43 +0200 Subject: [PATCH] test-socket-signal: properly handle receive error in receiver --- Utils/test-socket-signal/receiver.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Utils/test-socket-signal/receiver.c b/Utils/test-socket-signal/receiver.c index d744a49..d519b7f 100644 --- a/Utils/test-socket-signal/receiver.c +++ b/Utils/test-socket-signal/receiver.c @@ -109,7 +109,9 @@ static ssize_t receive_buffer(int sockfd) while (nbytes < (ssize_t) PACKET_SIZE) { n = recv(sockfd, rcv_buf, PACKET_SIZE - nbytes, 0); - if (n <= 0) + DIE(n < 0, "recv"); + + if (n == 0) break; nbytes += n; } @@ -218,10 +220,13 @@ int main(int argc, char **argv) parse_args(argc, argv); + init(); + listenfd = tcp_listen_connections(cmd_args.listen_port, DEFAULT_SERVER_BACKLOG); DIE(listenfd < 0, "tcp_listen_connections"); +new_connection: sockfd = accept(listenfd, (SSA *) &addr, &addrlen); DIE(sockfd < 0, "accept"); @@ -230,8 +235,10 @@ int main(int argc, char **argv) nbytes = receive_buffer(sockfd); DIE(nbytes < 0, "receive_buffer"); - if (nbytes == 0) - break; + if (nbytes == 0) { + printf("Connection closed.\n"); + goto new_connection; + } print_buffer_meta(rcv_buf, PACKET_SIZE); } @@ -239,5 +246,7 @@ int main(int argc, char **argv) close(sockfd); close(listenfd); + cleanup(); + return 0; } -- 2.20.1