summaryrefslogtreecommitdiff
path: root/src/usr.bin/nc/netcat.c
diff options
context:
space:
mode:
authorhaesbaert <>2012-07-07 15:33:02 +0000
committerhaesbaert <>2012-07-07 15:33:02 +0000
commit995c38cd464be88005853d62d9c8ac2d96f6dfe1 (patch)
tree9783115d4fc4eeb94c551ef60f301694559dcb99 /src/usr.bin/nc/netcat.c
parent335848c28f31358ed46e5bf33f2fe93200fa4672 (diff)
downloadopenbsd-995c38cd464be88005853d62d9c8ac2d96f6dfe1.tar.gz
openbsd-995c38cd464be88005853d62d9c8ac2d96f6dfe1.tar.bz2
openbsd-995c38cd464be88005853d62d9c8ac2d96f6dfe1.zip
Allow UDP server to receive datagrams from multiple socket pairs with -k
flag. Prompted by a question from dsp at 2f30 dot org, diff from Lazarom Koromil with a few tweaks by me, many thanks. ok mikeb@ nicm@ haesbaert@
Diffstat (limited to 'src/usr.bin/nc/netcat.c')
-rw-r--r--src/usr.bin/nc/netcat.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/usr.bin/nc/netcat.c b/src/usr.bin/nc/netcat.c
index 4bef71a7ca..a034bbab8c 100644
--- a/src/usr.bin/nc/netcat.c
+++ b/src/usr.bin/nc/netcat.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: netcat.c,v 1.108 2012/07/07 09:36:30 haesbaert Exp $ */ 1/* $OpenBSD: netcat.c,v 1.109 2012/07/07 15:33:02 haesbaert Exp $ */
2/* 2/*
3 * Copyright (c) 2001 Eric Jackson <ericj@monkey.org> 3 * Copyright (c) 2001 Eric Jackson <ericj@monkey.org>
4 * 4 *
@@ -345,11 +345,17 @@ main(int argc, char *argv[])
345 if (s < 0) 345 if (s < 0)
346 err(1, NULL); 346 err(1, NULL);
347 /* 347 /*
348 * For UDP, we will use recvfrom() initially 348 * For UDP and -k, don't connect the socket, let it
349 * to wait for a caller, then use the regular 349 * receive datagrams from multiple socket pairs.
350 * functions to talk to the caller.
351 */ 350 */
352 if (uflag) { 351 if (uflag && kflag)
352 readwrite(s);
353 /*
354 * For UDP and not -k, we will use recvfrom() initially
355 * to wait for a caller, then use the regular functions
356 * to talk to the caller.
357 */
358 else if (uflag && !kflag) {
353 int rv, plen; 359 int rv, plen;
354 char buf[16384]; 360 char buf[16384];
355 struct sockaddr_storage z; 361 struct sockaddr_storage z;