Argh. Turns out that GNU netcat and OpenBSD netcat behave differently with the same flags. Much confusion ensued.