From: Razvan Deaconescu Date: Thu, 11 Nov 2010 15:33:43 +0000 (+0200) Subject: test-socket-signal: properly handle receive error in receiver X-Git-Url: http://p2p-next.cs.pub.ro/gitweb/?a=commitdiff_plain;h=de136c9b1a65c1df343437bc2e3656832f20539f;p=p2p-testing-infrastructure.git test-socket-signal: properly handle receive error in receiver --- 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; }