On Tue, Mar 19, 2013 at 08:12:15PM +0100, Martin Pelikan wrote:
> > >> Yes, but it would even be better if there would be an option to get
> > >> the shutdown on EOF behaviour back.
> > >>
> > >> Some servers wait until they see the shutdown from the client to finish
> > >> their work.
> >
> > woah. Can somebody explain, using very small words, exactly what the
> > problem is?
>
> Once upon a time, there was a bug. It haunted people across systems for
> more than ten years, and people have invented workarounds in fear someone
> actually depend on the bug. That is apparently the "some servers" otto
> is talking about. I haven't seen any yet, but some bugs can arise
> because people are using nc(1) in their scripts.
>
> Now the bug is gone and there are many opinions about what to do.
> I wanted to kill it and tell people to fix their software from now on.
> That obviously isn't acceptable if the whole world has adopted the
> earlier behavior *and* if this would cause more harm than good.
>
>
> > From reading the ubuntu bug report, their problem comes from adding a
> > -q flag very similar to the proposed -N flag, and *that's* what broke.
> > Unmodified netcat does not have whatever bug they're talking about.
>
> Unmodified netcat terminates the wrong socket prematurely (on stdin EOF).
> That's the problem. Some people decided to do their own actions without
> bothering to inform upstream.
>
> If someone is commenting on a bug with an option *they* added, it's
> *their* problem. Until I see a real reason why their -q is needed here,
> I'm against. *Our* problem is people might depend on what -N does.
> Otto mentioned that and proposed -N.
>
>
> > For that matter, if this is a real problem, why are we using -N and
> > not -q? This seems like a wholly gratuitous difference for no benefit.
>
> Because it does two different things. -N preserves the old buggy
> behavior and -q does (according to their man page) waiting in seconds.
>
> What does 'q' stand for anyway?
> --
> Martin Pelikan
I'd like to say that the client signalling the server it's done by
doing a shutdown is very valid. I would not say that is a bug. It's
the easiet way of saying 'I'm done' without the need of some form of
protocol on top of TCP.
-Otto