Re: GNU netcat in make tests

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

 



On Fri, Jul 25, 2014 at 4:33 AM, Corinna Vinschen <vinschen@xxxxxxxxxx>
wrote:
>
> [...] or the ncat tool from http://nmap.org/ as used on
> Fedora, both of which provide -U for AF_UNIX sockets.
>

ncat has a different problem: it doesn't handle FD closures properly.  Grab
yourself a decent-sized (a MB or two) data file and try this (this is on
Fedora 20):

$ ncat -l 127.0.0.1 1234 <testdata &
$ ncat 127.0.0.1 1234 >testcopy

This will transfer the full file then hang indefinitely waiting for stdin
to close:

^C
$ ls -l testdata testcopy
-rw-r--r-- 1 dtucker dtucker 5485744 Jul 26 00:45 testcopy
-rwxr-xr-x 1 dtucker dtucker 5485744 Jul 26 00:43 testdata

If you try to work around this by redirecting stdin to /dev/null it'll exit
after one pass through the copy loop even though the TCP stream it's
writing hasn't been completely written:

$ ncat -l 127.0.0.1 1234 <testdata &
$ ncat 127.0.0.1 1234 >testcopy </dev/null
$ ls -l testdata testcopy
-rw-r--r-- 1 dtucker dtucker   16384 Jul 26 00:48 testcopy
-rwxr-xr-x 1 dtucker dtucker 5485744 Jul 26 00:43 testdata

A had a look around and it seems their abstraction layer doesn't allow them
to do this.  They have --send-only and --recv-only which seem like hacks
around the problem, but no other nc implementation either needs or
understands them.

Damien suggested shipping OpenBSD's nc in contrib and I made fun of him for
it, but he may have been right (as usual :-)

-- 
Darren Tucker (dtucker at zip.com.au)
GPG key 8FF4FA69 / D9A3 86E9 7EEE AF4B B2D4  37C9 C982 80C7 8FF4 FA69
    Good judgement comes with experience. Unfortunately, the experience
usually comes from bad judgement.
_______________________________________________
openssh-unix-dev mailing list
openssh-unix-dev@xxxxxxxxxxx
https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev




[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux