source: npl/overig/netcat_openbsd/patches/0010-serialized-handling-multiple-clients.patch @ 51c3d1a

perl-5.22
Last change on this file since 51c3d1a was c5c522c, checked in by Edwin Eefting <edwin@datux.nl>, 8 years ago

initial commit, transferred from cleaned syn3 svn tree

  • Property mode set to 100644
File size: 1.6 KB
RevLine 
[c5c522c]1From: Aron Xu <aron@debian.org>
2Date: Tue, 14 Feb 2012 23:02:00 +0800
3Subject: serialized handling multiple clients
4
5---
6 netcat.c |   39 +++++++++++++++++++--------------------
7 1 file changed, 19 insertions(+), 20 deletions(-)
8
9diff --git a/netcat.c b/netcat.c
10index 56cc15e..bf9940f 100644
11--- a/netcat.c
12+++ b/netcat.c
13@@ -447,26 +447,24 @@ main(int argc, char *argv[])
14                                s = unix_bind(host);
15                        else
16                                s = unix_listen(host);
17-               }
18+               } else
19+                       s = local_listen(host, uport, hints);
20+               if (s < 0)
21+                       err(1, NULL);
22+
23+               char* local;
24+               if (family == AF_INET6)
25+                       local = ":::";
26+               else
27+                       local = "0.0.0.0";
28+               fprintf(stderr, "Listening on [%s] (family %d, port %d)\n",
29+                       host ?: local,
30+                       family,
31+                       *uport);
32 
33                /* Allow only one connection at a time, but stay alive. */
34                for (;;) {
35-                       if (family != AF_UNIX)
36-                               s = local_listen(host, uport, hints);
37-                       if (s < 0)
38-                               err(1, NULL);
39 
40-                       char* local;
41-                       if (family == AF_INET6 )
42-                               local = "0.0.0.0";
43-                       else if (family == AF_INET)
44-                               local = ":::";
45-                       else
46-                               local = "unknown";
47-                       fprintf(stderr, "Listening on [%s] (family %d, port %d)\n",
48-                               host ?: local,
49-                               family,
50-                               *uport);
51                        /*
52                         * For UDP, we will use recvfrom() initially
53                         * to wait for a caller, then use the regular
54@@ -536,15 +534,16 @@ main(int argc, char *argv[])
55                                close(connfd);
56                        }
57 
58-                       if (family != AF_UNIX)
59+                       if (kflag)
60+                               continue;
61+                       if (family != AF_UNIX) {
62                                close(s);
63+                       }
64                        else if (uflag) {
65                                if (connect(s, NULL, 0) < 0)
66                                        err(1, "connect");
67                        }
68-
69-                       if (!kflag)
70-                               break;
71+                       break;
72                }
73        } else if (family == AF_UNIX) {
74                ret = 0;
75--
Note: See TracBrowser for help on using the repository browser.