*Narf*, ich hätte nicht erwartet, dass ich mich in meinem Leben mal mit obskuren Ausnahmeregelunge von HTTP herumschlagen muß. Das ganze geht immer noch um dieses Proxy-Problem und ich habe inzwischen zumindestens mal die Fehlerursache herausgefunden.
Unser Client baut eine HTTP-Verbindung zum Server auf – diese nach der Protokollversion 1.1 persistent , das heißt, das die Verbindung nicht geschlossen wird, sondern über die gesamte Sitzungsdauer offen bleibt. Anders als bei V 1.0 ist eine persistente Verbindung in 1.1 default und kann nur noch explizit _nicht_ angefordert werden, und da begann dann das Problem…
Unser Client versucht also einen Verbindungsaufbau, in der Annahme, dass natürlich die Verbindung offen bleibt, was aber dieser spezielle Proxy nicht unterstützt und daher den Request (gültig) beantwortet und dann ein Connection: Close in den Header klatscht, was wir nicht abfangen.
In der RFC 2616 liest sich das dann so:
8.1.1 HTTP implementations SHOULD implement persistent connections.
14.10 HTTP/1.1 applications that do not support persistent connections MUST include the „close“ connection option in every message.
Die wichtigen Wörter sind dann auch schon groß geschrieben – should und must. Der Proxy verhält sich (leider) standardkonform, nutzt aber eine Ausnahmeregelung, an die wohl keiner unserer Coder gedacht hatte.
Na dann, zurück an’s Zeichenbrettzur IDE.