[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Mldonkey-commits] mldonkey distrib/ChangeLog src/networks/fileTP/...
From: |
mldonkey-commits |
Subject: |
[Mldonkey-commits] mldonkey distrib/ChangeLog src/networks/fileTP/... |
Date: |
Sun, 07 Jul 2013 11:00:54 +0000 |
CVSROOT: /sources/mldonkey
Module name: mldonkey
Changes by: spiralvoice <spiralvoice> 13/07/07 11:00:54
Modified files:
distrib : ChangeLog
src/networks/fileTP: fileTPFTP.ml
Log message:
patch #8109
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/mldonkey/distrib/ChangeLog?cvsroot=mldonkey&r1=1.1573&r2=1.1574
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/fileTP/fileTPFTP.ml?cvsroot=mldonkey&r1=1.18&r2=1.19
Patches:
Index: distrib/ChangeLog
===================================================================
RCS file: /sources/mldonkey/mldonkey/distrib/ChangeLog,v
retrieving revision 1.1573
retrieving revision 1.1574
diff -u -b -r1.1573 -r1.1574
--- distrib/ChangeLog 7 Jul 2013 11:00:21 -0000 1.1573
+++ distrib/ChangeLog 7 Jul 2013 11:00:52 -0000 1.1574
@@ -15,6 +15,7 @@
=========
2013/07/07:
+8109: FTP: fix CWD (ygrek)
8108: FTP: fix authentication (ygrek)
8107: HTML: fix "Request URI too large" errors (ygrek)
drop unused selectPriority parameters
Index: src/networks/fileTP/fileTPFTP.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/fileTP/fileTPFTP.ml,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- src/networks/fileTP/fileTPFTP.ml 7 Jul 2013 11:00:21 -0000 1.18
+++ src/networks/fileTP/fileTPFTP.ml 7 Jul 2013 11:00:53 -0000 1.19
@@ -185,6 +185,11 @@
(* *)
(*************************************************************************)
+let get_path_components s =
+ match List.rev (List.map (Url.decode ~raw:true) (String2.split s '/')) with
+ | file::path -> String.concat "/" (List.rev path), file
+ | [] -> ("","") (* empty path *)
+
let ftp_send_range_request c (x,y) sock d =
if !verbose then lprintf_nl "Asking range %Ld-%Ld" x y;
@@ -230,7 +235,13 @@
let reqs = ["TYPE I"] in
write_reqs sock reqs;
| "200 " ->
- let reqs = [Printf.sprintf "CWD %s" (Filename.dirname file)]
in
+ let reqs =
+ match get_path_components file with
+ | ("",_) -> (* no CWD needed *) ["PASV"]
+ | (dir,_) -> [Printf.sprintf "CWD %s" dir]
+ in
+ (* FIXME should really issue several CWDs (one for each
directory)
+ TODO implement state for protocol *)
write_reqs sock reqs;
| "227 " ->
(try
@@ -253,7 +264,7 @@
lprintf_nl "Error %s in reader" (Printexc.to_string e);
close sock Closed_by_user)
| "350 " ->
- let reqs = [Printf.sprintf "RETR %s" (Filename.basename
file)] in
+ let reqs = [Printf.sprintf "RETR %s" (snd
(get_path_components file))] in
write_reqs sock reqs;
| "150 " ->
if !verbose then begin
@@ -372,8 +383,7 @@
*)
- let dirname = Filename.dirname url.Url.full_file in
- let basename = Filename.basename url.Url.full_file in
+ let (dirname,basename) = get_path_components url.Url.full_file in
let server, port = url.Url.server, url.Url.port in
(* lprintf "async_ip ...\n"; *)
Ip.async_ip server (fun ip ->
@@ -417,7 +427,11 @@
let reqs = ["TYPE I"] in
write_reqs sock reqs;
| "200 " ->
- let reqs = [Printf.sprintf "CWD %s" dirname] in
+ let reqs =
+ match dirname with
+ | "" -> (* no CWD needed *) [Printf.sprintf "SIZE %s"
basename]
+ | dir -> [Printf.sprintf "CWD %s" dir]
+ in
write_reqs sock reqs;
| "250 " ->
let reqs = [Printf.sprintf "SIZE %s" basename] in