POST mit "Body"-Grö�?e von 0 funktioniert nicht über Proxy

Hier finden YaCy User Hilfe wenn was nicht funktioniert oder anders funktioniert als man dachte. Bei offensichtlichen Fehlern diese bitte gleich in die Bugs (http://bugs.yacy.net) eintragen.
Forumsregeln
In diesem Forum geht es um Benutzungsprobleme und Anfragen für Hilfe. Wird dabei ein Bug identifiziert, wird der thread zur Bearbeitung in die Bug-Sektion verschoben. Wer hier also einen Thread eingestellt hat und ihn vermisst, wird ihn sicherlich in der Bug-Sektion wiederfinden.

POST mit "Body"-Grö�?e von 0 funktioniert nicht über Proxy

Beitragvon celle » Fr Aug 22, 2008 6:04 pm

Hallo,

ich wollte etwas von http://uploaded.to/?id=rw9y3c herunterladen. Die Webseite benutzt HTTP POSTs anstatt GETs um auf die Dateien zuzugreifen. Die Requestlänge ist dabei jedoch neu. Dies funktioniert nicht, der Request timed aus. Meine Analyse hat ergeben dass serverFileUtils.copy(body, buffer, requestLength) bei einer Requestlänge von 0 zwar ausgeführt wird, jedoch dabei hängt (Aufruf wird nicht beendet).

httpdProxyHandler.java

if(requestLength > -1) {
final ByteArrayOutputStream buffer = new ByteArrayOutputStream();
serverFileUtils.copy(body, buffer, requestLength);
body = new ByteArrayInputStream(buffer.toByteArray());
}


Ich habe testweise den Befehl nur ausgeführt, wenn die Requestlänge grö�?er 0 ist, da ich nicht wei�?, ob der Fehler hier oder bei serverFileUtils.copy() vorhanden ist. Das müsste man mal genauer anschauen. Jedenfalls funktioniert damit alles wie gewünscht.

if (requestLength > 0)
serverFileUtils.copy(body, buffer, requestLength);


tschüss

celle
celle
 
Beiträge: 47
Registriert: Mi Jun 27, 2007 11:52 am

Re: POST mit "Body"-Grö�?e von 0 funktioniert nicht über Proxy

Beitragvon DanielR » Sa Aug 23, 2008 12:47 am

Danke für die gute Analyse. Ja, das Problem ist das ServerFileUtils.copy():
Code: Alles auswählen
int chunkSize = (int) ((count > 0) ? Math.min(count, DEFAULT_BUFFER_SIZE) : DEFAULT_BUFFER_SIZE);

Es wird bei einer Länge von 0 die DEFAULT_BUFFER_SIZE genommen. Auf diese wird dann ewig gewartet, da nichts kommt.

Hab' das auf beiden Seiten gefixt:
- ServerFileUtils.copy() bricht bei Länge Null sofort ab (nichts zu kopieren)
- httpdProxyHandler.doPost() ruft bei Größe Null gar nicht erst copy() auf
in r5073
DanielR
 
Beiträge: 395
Registriert: Di Feb 12, 2008 2:22 pm


Zurück zu Fragen und Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste