Thema: Delphi Indy FTP Exception

Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#5
  Alt 29. Jun 2003, 14:09
Hm, der FTP-Returncode wäre hilfreicher.
Es müsste aber ein 2xx Code sein, und diese sind keine Fehlercodes sondern Bestätigungscodes das der Server die Aktion erfolgreich ausgeführt hat.

Es sieht wohl so aus das der FTP Server eine zusätzliche Message nachschickt, und deine FTP Komponente damit nicht korrekt umgehen kann.

Falls es die aus dem INDY Package ist dann kann ich bestätigen das diese teilweise nicht korrekt parsed.

es müsste

257 Directory created

sein. Verschiedene Server schicken zusätzliche Infos mit, etwa so

257-"PATHNAME" created
257 Directory created

Genau hier haben aber einige Komponenten Probleme, da sie das FTP Protokoll viel zu starr und unflexibel parsen.
Ich habe einige FTP Komponenten getestet und mich letzendlich für zwei Wege entschieden:
1.) auf Palms und Windows per Sockets selber das FTP Protokoll umgesetzt, ist eigentlich nicht so schwierig
2.) auf Windows die FTPxxxx Funktionien benutzt

Nun, es spricht auf Server Seite aber nichts dagegen einen eigenen Messagecode zu benutzen. Solange er im Bereich von 200-299 liegt, heisst das der Befehl ausgeführt wurde. Die Probleme mit den FTP Komponenten entstehen aber genau in diesem Moment. Sie parsen auf einen festen Returncode, z.b. eben 257, statt zu checken ob der Code zwichen 200-299 liegt. Diese "Fehlinterpretation" des FTP protokolls entsteht durch die Protokolldefinition in den RFC's selber. Dort sind eine Art von Beispielstruktogrammen abgebildet die dazu führen das man annehmen muß das exakt 257 vom Server als Bestätigung geschickt werden muß.
Ich habe einige FTP Sourcen studiert und alle gehen von dieser falschen Annahme aus.

Falls deine FTP Komponente den geparsten Returncode zwischenspeichert, und dann erst die Exception raised, kannste ja im SEH diesen Code selber auswerten. Falls er zwischen 200-299 liegt ist alles ok.

Gruß Hagen
  Mit Zitat antworten Zitat