Re: Rätsel: gzip | nc <-> nc | gzcat = gzcat: (stdin): unexpected end of file

From: Bernd Walter <ticso(at)cicely7.cicely.de>
Date: Sat, 17 Aug 2013 12:16:01 +0200

On Fri, Aug 16, 2013 at 06:27:44PM +0200, Till Toenges wrote:
> Hallo allerseits,
>
> ich habe in FreeBSD 9.1 ein Problem mit gzip und nc. Und zwar kriege ich
> unter bestimmten Umständen immer eine defekte Datei.
>
> server1.example (Sender):
>
> # dd if=/dev/urandom of=/tank/r bs=1m count=3072
> ...
> # md5 /tank/r
> MD5 (/tank/r) = 980d04f51da3df56b3498d8f047ddfec
> # < /tank/r gzip -1 | nc server2.example 1234
> # < /tank/r cat | nc server2.example 1234
>
> server2.example (Empfänger):
>
> # nc -l 1234 | gzcat > /dev/null
> gzcat: (stdin): unexpected end of file

Kenne ich von meiner CNC-Fräse.
Ich schicke auch per netcat auf einen TCP-Port und die letzten Bytes fehlen.
Also workaround mache ich einen sleep rein:
[253]cicely7> cat ~/bin/cnc
#!/bin/sh
(cat $1 ; sleep 6000000) | nc cnc 1578

Offensichtlich macht der nc die TCP-Verbindung zu, wenn stdin zu geht
und vergisst, dass er noch was im Buffer hat.
nc ist für mich seit der Erkenntniss eines solchen Bugs eher gestorben,
aber ich hatte noch keine Gelegenheit mir eines der vielen Alternativen
anzusehen.

> # nc -l 1234 | md5
> 980d04f51da3df56b3498d8f047ddfec
>
> Der Fehler tritt zuverlässig auf, und immer (etwa) an der gleichen
> Stelle zum Ende hin. Ohne gzip wird die Datei auch korrekt übertragen
> (md5 ist gleich). Es ist also kein Leitungsproblem. Mit kleineren
> Dateien klappt es auch mit gzip ohne Fehler. Oder auch, wenn statt
> /dev/urandom /dev/zero verwendet wird.
>
> Was aber ohne Probleme geht:
>
> # < /tank/r gzip -1 | gzcat > /dev/null
> # < /tank/r gzip -1 | cat | gzcat > /dev/null
>
> Es ist also auch kein reines gzip Problem. Sondern irgendwie eine
> absonderliche Kombination aus gzip und nc.
>
> Hat da jemand eine Idee, woran das liegen kann?

PS: Eine Partnerfirma sucht immer noch Auszubildende für den Standort Lübeck

-- 
B.Walter <bernd@bwct.de> http://www.bwct.de
Modbus/TCP Ethernet I/O Baugruppen, ARM basierte FreeBSD Rechner uvm.
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sat 17 Aug 2013 - 12:16:20 CEST

search this site