[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/driver/dr...
From: |
mldonkey-commits |
Subject: |
[Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/driver/dr... |
Date: |
Sun, 11 Mar 2007 16:14:35 +0000 |
CVSROOT: /sources/mldonkey
Module name: mldonkey
Changes by: spiralvoice <spiralvoice> 07/03/11 16:14:35
Modified files:
distrib : ChangeLog
src/daemon/driver: driverControlers.ml
src/utils/lib : url.ml url.mli
src/utils/net : http_client.ml
Log message:
patch #5775
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/mldonkey/distrib/ChangeLog?cvsroot=mldonkey&r1=1.1201&r2=1.1202
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/daemon/driver/driverControlers.ml?cvsroot=mldonkey&r1=1.97&r2=1.98
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/utils/lib/url.ml?cvsroot=mldonkey&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/utils/lib/url.mli?cvsroot=mldonkey&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/utils/net/http_client.ml?cvsroot=mldonkey&r1=1.36&r2=1.37
Patches:
Index: distrib/ChangeLog
===================================================================
RCS file: /sources/mldonkey/mldonkey/distrib/ChangeLog,v
retrieving revision 1.1201
retrieving revision 1.1202
diff -u -b -r1.1201 -r1.1202
--- distrib/ChangeLog 11 Mar 2007 16:09:29 -0000 1.1201
+++ distrib/ChangeLog 11 Mar 2007 16:14:35 -0000 1.1202
@@ -15,6 +15,7 @@
=========
2007/03/11
+5775: HTML: Fix url parsing for URLs with ()' (orbit)
5774: BT: fix upload managment (orbit)
5786: HTML: small javascript search improve (orbit)
Index: src/daemon/driver/driverControlers.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/daemon/driver/driverControlers.ml,v
retrieving revision 1.97
retrieving revision 1.98
diff -u -b -r1.97 -r1.98
--- src/daemon/driver/driverControlers.ml 8 Mar 2007 21:01:02 -0000
1.97
+++ src/daemon/driver/driverControlers.ml 11 Mar 2007 16:14:35 -0000
1.98
@@ -103,7 +103,7 @@
let eval auth cmd o =
let buf = o.conn_buf in
- let cmd = Url.decode cmd in
+ let cmd = Url.decode ~raw:false cmd in
let cmd =
if String2.check_prefix cmd "ed2k://" ||
String2.check_prefix cmd "ftp://" ||
Index: src/utils/lib/url.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/utils/lib/url.ml,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- src/utils/lib/url.ml 25 Feb 2006 21:09:03 -0000 1.6
+++ src/utils/lib/url.ml 11 Mar 2007 16:14:35 -0000 1.7
@@ -32,7 +32,7 @@
string : string;
}
-(* encode using x-www-form-urlencoded form *)
+(* encode using RFC 1738 form *)
let encode s =
let pos = ref 0 in
let len = String.length s in
@@ -42,9 +42,8 @@
else Char.chr (Char.code '0' + x) in
for i=0 to len-1 do
match s.[i] with
- | 'a'..'z' | 'A'..'Z' | '0'..'9' | '.' | '-' | '*' | '_' ->
+ | 'a'..'z' | 'A'..'Z' | '0'..'9' | '.' | '-' | '*' | '_' | '\''| '(' |
')'->
res.[!pos] <- s.[i]; incr pos
-(* | ' ' -> res.[!pos] <- '+'; incr pos *)
| c ->
res.[!pos] <- '%';
res.[!pos+1] <- hexa_digit (Char.code c / 16);
@@ -53,28 +52,22 @@
done;
String.sub res 0 !pos
-(* decode using x-www-form-urlencoded form *)
-
-let digit_hexa x =
- match x with
- | 'a' .. 'f' -> (Char.code x) + 10 - (Char.code 'a')
- | 'A' .. 'F' -> (Char.code x) + 10 - (Char.code 'A')
- | '0' .. '9' -> (Char.code x) - (Char.code '0')
- | _ -> failwith "Not an hexa number (encode.ml)"
-
-let decode s =
+(** decodes a sting according RFC 1738
+or x-www-form-urlencoded ('+' with ' ')
+ @param raw true use RFC 1738
+ @param string string to decode
+*)
+let decode ?(raw=true) s =
let len = String.length s in
let r = Buffer.create len in
let rec iter i =
if i < len then
match s.[i] with
- | '+' -> Buffer.add_char r ' '; iter (i+1)
| '%' ->
let n =
try
- let fst = digit_hexa s.[i+1] in
- let snd = digit_hexa s.[i+2] in
- Buffer.add_char r (char_of_int (fst*16 + snd));
+ (* int_of_string with leading "0x", string is read hexadecimal *)
+ Buffer.add_char r (char_of_int (int_of_string ("0x" ^
(String.sub s (i+1) 2))));
3
with _ ->
Buffer.add_char r '%';
@@ -82,6 +75,10 @@
in
iter (i+n)
+ (* if not raw decode '+' -> ' ' else don't change char *)
+ | '+' -> let c = if raw then '+' else ' ' in
+ Buffer.add_char r c; iter (i+1)
+
| c -> Buffer.add_char r c; iter (i+1)
in
iter 0;
@@ -117,7 +114,7 @@
let args = String2.split url_end '&' in
List.map (fun s ->
let (name, value) = String2.cut_at s '=' in
- decode name, decode value
+ decode ~raw:false name, decode ~raw:false value
) args
let create proto user passwd server port full_file =
Index: src/utils/lib/url.mli
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/utils/lib/url.mli,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- src/utils/lib/url.mli 7 Mar 2004 09:34:28 -0000 1.2
+++ src/utils/lib/url.mli 11 Mar 2007 16:14:35 -0000 1.3
@@ -54,7 +54,7 @@
val encode : string -> string
-val decode : string -> string
+val decode : ?raw:bool -> string -> string
val option : url Options.option_class
\ No newline at end of file
Index: src/utils/net/http_client.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/utils/net/http_client.ml,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -b -r1.36 -r1.37
--- src/utils/net/http_client.ml 4 Feb 2007 17:27:45 -0000 1.36
+++ src/utils/net/http_client.ml 11 Mar 2007 16:14:35 -0000 1.37
@@ -90,8 +90,7 @@
then Url.to_string_no_args url
else url.short_file
in
- (* I get a lot more bittorrent urls with this line: *)
- let url = (Str.global_replace (Str.regexp " ") "%20" url) in
+ let url = Url.encode url in
let url = if is_real_post then url else
Url.put_args url args
in