diff options
Diffstat (limited to 'network/netcat-openbsd/patches/0006-quit-timer.patch')
-rw-r--r-- | network/netcat-openbsd/patches/0006-quit-timer.patch | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/network/netcat-openbsd/patches/0006-quit-timer.patch b/network/netcat-openbsd/patches/0006-quit-timer.patch deleted file mode 100644 index 4d64cc100a..0000000000 --- a/network/netcat-openbsd/patches/0006-quit-timer.patch +++ /dev/null @@ -1,143 +0,0 @@ -From: Aron Xu <aron@debian.org> -Date: Mon, 13 Feb 2012 15:16:04 +0800 -Subject: quit timer - ---- - nc.1 | 10 ++++++++++ - netcat.c | 50 +++++++++++++++++++++++++++++++++++++++++--------- - 2 files changed, 51 insertions(+), 9 deletions(-) - ---- a/nc.1 -+++ b/nc.1 -@@ -41,6 +41,7 @@ - .Op Fl O Ar length - .Op Fl P Ar proxy_username - .Op Fl p Ar source_port -+.Op Fl q Ar seconds - .Op Fl s Ar source - .Op Fl T Ar keyword - .Op Fl V Ar rtable -@@ -167,6 +168,15 @@ Proxy authentication is only supported f - Specify the source port - .Nm - should use, subject to privilege restrictions and availability. -+.It Fl q Ar seconds -+after EOF on stdin, wait the specified number of -+.Ar seconds -+and then quit. If -+.Ar seconds -+is negative, wait forever (default). Specifying a non-negative -+.Ar seconds -+implies -+.Fl N . - .It Fl r - Choose source and/or destination ports randomly - instead of sequentially within a range or in the order that the system ---- a/netcat.c -+++ b/netcat.c -@@ -139,6 +139,7 @@ int Nflag; /* shutdown() network soc - int nflag; /* Don't do name look up */ - char *Pflag; /* Proxy username */ - char *pflag; /* Localport flag */ -+int qflag = -1; /* Quit after some secs */ - int rflag; /* Random ports flag */ - char *sflag; /* Source Address */ - int tflag; /* Telnet Emulation */ -@@ -224,6 +225,8 @@ ssize_t fillbuf(int, unsigned char *, si - static int connect_with_timeout(int fd, const struct sockaddr *sa, - socklen_t salen, int ctimeout); - -+static void quit(); -+ - int - main(int argc, char *argv[]) - { -@@ -256,9 +259,9 @@ main(int argc, char *argv[]) - - while ((ch = getopt(argc, argv, - # if defined(TLS) -- "46C:cDde:FH:hI:i:K:klM:m:NnO:o:P:p:R:rSs:T:tUuV:vW:w:X:x:Z:z")) -+ "46C:cDde:FH:hI:i:K:klM:m:NnO:o:P:p:q:R:rSs:T:tUuV:vW:w:X:x:Z:z")) - # else -- "46CDdFhI:i:klM:m:NnO:P:p:rSs:T:tUuV:vW:w:X:x:z")) -+ "46CDdFhI:i:klM:m:NnO:P:p:q:rSs:T:tUuV:vW:w:X:x:z")) - # endif - != -1) { - switch (ch) { -@@ -350,6 +353,13 @@ main(int argc, char *argv[]) - case 'p': - pflag = optarg; - break; -+ case 'q': -+ qflag = strtonum(optarg, INT_MIN, INT_MAX, &errstr); -+ if (errstr) -+ errx(1, "quit timer %s: %s", errstr, optarg); -+ if (qflag >= 0) -+ Nflag = 1; -+ break; - # if defined(TLS) - case 'R': - tls_cachanged = 1; -@@ -1320,15 +1330,27 @@ readwrite(int net_fd) - while (1) { - /* both inputs are gone, buffers are empty, we are done */ - if (pfd[POLL_STDIN].fd == -1 && pfd[POLL_NETIN].fd == -1 && -- stdinbufpos == 0 && netinbufpos == 0) -- return; -+ stdinbufpos == 0 && netinbufpos == 0) { -+ if (qflag <= 0) -+ return; -+ goto delay_exit; -+ } - /* both outputs are gone, we can't continue */ -- if (pfd[POLL_NETOUT].fd == -1 && pfd[POLL_STDOUT].fd == -1) -- return; -+ if (pfd[POLL_NETOUT].fd == -1 && pfd[POLL_STDOUT].fd == -1) { -+ if (qflag <= 0) -+ return; -+ goto delay_exit; -+ } - /* listen and net in gone, queues empty, done */ - if (lflag && pfd[POLL_NETIN].fd == -1 && -- stdinbufpos == 0 && netinbufpos == 0) -- return; -+ stdinbufpos == 0 && netinbufpos == 0) { -+ if (qflag <= 0) -+ return; -+delay_exit: -+ close(net_fd); -+ signal(SIGALRM, quit); -+ alarm(qflag); -+ } - - /* poll */ - num_fds = poll(pfd, 4, timeout); -@@ -2053,6 +2075,7 @@ help(void) - \t-O length TCP send buffer length\n\ - \t-P proxyuser\tUsername for proxy authentication\n\ - \t-p port\t Specify local port for remote connects\n\ -+ \t-q secs\t quit after EOF on stdin and delay of secs\n\ - \t-r Randomize remote ports\n\ - \t-S Enable the TCP MD5 signature option\n\ - \t-s source Local source address\n\ -@@ -2077,10 +2100,19 @@ usage(int ret) - fprintf(stderr, - "usage: nc [-46CDdFhklNnrStUuvz] [-I length] [-i interval] [-M ttl]\n" - "\t [-m minttl] [-O length] [-P proxy_username] [-p source_port]\n" -- "\t [-s source] [-T keyword] [-V rtable] [-W recvlimit] " -+ "\t [-q seconds] [-s source] [-T keyword] [-V rtable] [-W recvlimit] " - "[-w timeout]\n" - "\t [-X proxy_protocol] [-x proxy_address[:port]] " - "\t [destination] [port]\n"); - if (ret) - exit(1); - } -+ -+/* -+ * quit() -+ * handler for a "-q" timeout (exit 0 instead of 1) -+ */ -+static void quit() -+{ -+ exit(0); -+} |