Host A:
tar cf - stuff | dd | nc -N -l 12987
Host B:
nc a.example.com 12987 | dd | tar tf -
On host A dd
prints its summary after tar
completes. Thus it is clear, that tar closes the pipe/file -> EOF
.
165040+0 records in 165040+0 records out 84500480 bytes transferred in 25.464802 secs (3318325 bytes/sec)
On both hosts nc
happily sits there without exiting.
nc(1)
:
-N shutdown(2) the network socket after EOF on the input. Some
servers require this to finish their work.
Thus on host A nc
should have seen EOF
, closed the damn socket and on host B nc
should have seen the TCP connection terminate and should have closed stdout
(stdin
of dd
/tar
).
How do I tell nc
to close stdout
/ terminate on host B and terminate on host A.
nc
bug?
-D
(debug) does nothing. nc
can't even tell its version number... sigh
Both hosts are FreeBSD 10.3-RELEASE-p4, IPv4 only.