From: Aron Xu Date: Tue, 14 Feb 2012 23:02:00 +0800 Subject: serialized handling multiple clients --- netcat.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) --- a/netcat.c +++ b/netcat.c @@ -708,7 +708,10 @@ main(int argc, char *argv[]) s = unix_bind(host, 0); else s = unix_listen(host); - } + } else + s = local_listen(host, uport, hints); + if (s < 0) + err(1, NULL); # if defined(TLS) if (usetls) { @@ -722,13 +725,6 @@ main(int argc, char *argv[]) # endif /* Allow only one connection at a time, but stay alive. */ for (;;) { - if (family != AF_UNIX) { - if (s != -1) - close(s); - s = local_listen(host, uport, hints); - } - if (s == -1) - err(1, NULL); if (uflag && kflag) { /* * For UDP and -k, don't connect the socket, @@ -805,8 +801,11 @@ main(int argc, char *argv[]) err(1, "connect"); } - if (!kflag) + if (!kflag) { + if (s != -1) + close(s); break; + } } } else if (family == AF_UNIX) { ret = 0;