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

From: olli hauer <ohauer(at)GMX.de>
Date: Sat, 17 Aug 2013 13:05:01 +0200

On 2013-08-17 12:16, Bernd Walter wrote:
> 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
>

Evtl. hilft der fix fuer netcat in current
http://svnweb.freebsd.org/base?view=revision&revision=249499

Log Message:
 MFV r249496,249498. The most visible change is that we no longer shuts
 down the connection when stdin closes, by default. This matches Hobbit's
 original netcat and GNU netcat.
 Old behavior can be restored with the new -N flag.

--
gruss,
olli
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 - 13:05:08 CEST

search this site