Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Client has incomplete request - aber weshalb?

13 views
Skip to first unread message

Stefan Froehlich

unread,
Jan 18, 2022, 12:29:30 PM1/18/22
to
Ich schicke POST-Requests von unterschiedlichen (eigenen) Servern an
unterschiedliche (fremde) Server. Bei zwei Zielen kommt es seit
kurzem bei Übertragungsversuchen von einer der Quellen aus zu
Fehlern. Diese Quelle (Q2) hat einen deutlich höheren Versionsstand
(curl 7.74.0, openssl 1.1.1k) als die Quelle Q1 (mit curl 7.64.0 und
openssl 1.0.1t), bei der seit Jahr und Tag alles funktioniert.

Ich habe mir einen Testempfänger geschrieben, der mir die
übertragenen Header und Daten ausgibt - die sind bei Q1 und Q2
ident (Hostnamen, Passwort und IP-Adressen geaendert):

#v+
Host: reflektor.domain.example
Authorization: Basic dGVzdDpnZWhlaW0=
User-Agent: some string
Accept: */*
Referer: https://source.domain.example/
Content-Type: text/xml
Content-Length: 3692
Expect: 100-continue

[3692 Bytes Nutzdaten]
#v-

Q2 erhält als Antwort vom Zielserver einen Code 400 und die folgende
Information:

#v+
Client a.b.c.d:40672 has incomplete request: Estimated length was 3994 byte(s), received 3899 byte(s)
#v-

Zähle ich Header und Body zusammen komme ich auf eine Länge zwischen
den beiden genannten Zahlen... und kurioserweise klappt die
Übertragung, sobald ich bei Q2 den Content-Length Header weglasse
(wiewohl der genau den gleichen Wert enthält, wie bei Q1).

Hat irgendjemand eine Idee, was die Ursache des Problem sein könnte?
Ich kann auch (nahezu) beliebiges zur Informationsbeschaffung
ausprobieren, aber mir sind inzwischen die Ideen ausgegangen. Und
die Betreiber der Zielserver sind leider nur wenig hilfreich :(

Servus,
Stefan

--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Stefan muß mehr als Spaß machen!
(Sloganizer)

Markus Schaaf

unread,
Feb 7, 2022, 8:25:10 AM2/7/22
to
Am 18.01.22 um 18:29 schrieb Stefan Froehlich:

> Zähle ich Header und Body zusammen komme ich auf eine Länge zwischen
> den beiden genannten Zahlen...

Content-Length sollte schon stimmen. Die Bytes des Bodys (alles
nach der ersten Leerzeile) werden gezählt, wobei auf
CR/LF-Zeilenenden zu achten ist. Übrigens ist der Expect-Header
sehr ungewöhnlich und wird praktisch nur von curl gesendet. Evtl.
hat der Server da einen Bug.

Stefan Froehlich

unread,
Feb 8, 2022, 4:25:36 AM2/8/22
to
Mit oder ohne Expect hat keinen sichtbaren Unterschied gemacht.
Allerdings setzt curl den Content-Length Header (korrekt) selber,
und wenn ich es dabei belasse, klappen alle Übertragungen. Keine
Ahnung, was curl tut, wenn ich den gleichen Header mit dem gleichen
Wert auch selber setze - auf meinen eigenen Server umgeleitet sehen
die Requests exakt identisch aus, nur die zwei Fremdserver zeigen
sich irritiert.

Wie auch immer, das reicht mir im Grund genommen völlig aus. Ich
habe im Repository nachgesehen, Content-Length wird von mir seit
wenigstens 15 Jahren gesetzt (weiter reicht das Repository nicht);
möglicherweise war das damals noch nötig, jetzt ist es offenbar
nicht nur redundant, sondern kontraproduktiv.

Servus,
Stefan

--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Frech bleibt frech: Stefan für alle Fälle!
(Sloganizer)
0 new messages