mldonkey-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co...


From: mldonkey-commits
Subject: [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co...
Date: Sun, 03 Dec 2006 20:49:43 +0000

CVSROOT:        /sources/mldonkey
Module name:    mldonkey
Changes by:     spiralvoice <spiralvoice>       06/12/03 20:49:43

Modified files:
        distrib        : ChangeLog 
        src/daemon/common: commonGlobals.ml commonInteractive.ml 
                           commonSearch.ml commonTypes.ml 
        src/daemon/driver: driverInteractive.ml 
        src/gtk/newgui : gui_results.ml 
        src/gtk2/gui   : guiMisc.ml 
        src/networks/direct_connect: dcInteractive.ml 
        src/networks/donkey: donkeyClient.ml donkeyImport.ml 
                             donkeyInteractive.ml donkeyMain.ml 
                             donkeyMftp.ml donkeyMftp.mli 
                             donkeyPandora.ml donkeyProtoClient.ml 
                             donkeyProtoKademlia.ml 
                             donkeyProtoOvernet.ml donkeyProtoServer.ml 
                             donkeyProtoUdp.ml donkeyServers.ml 
                             donkeyUdp.ml 
        src/networks/fasttrack: fasttrackNetwork.ml fasttrackProto.ml 
        src/networks/opennap: opennapInteractive.ml 
        src/utils/cdk  : string2.ml string2.mli 

Log message:
        patch #5609

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/mldonkey/distrib/ChangeLog?cvsroot=mldonkey&r1=1.1127&r2=1.1128
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/daemon/common/commonGlobals.ml?cvsroot=mldonkey&r1=1.77&r2=1.78
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/daemon/common/commonInteractive.ml?cvsroot=mldonkey&r1=1.86&r2=1.87
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/daemon/common/commonSearch.ml?cvsroot=mldonkey&r1=1.19&r2=1.20
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/daemon/common/commonTypes.ml?cvsroot=mldonkey&r1=1.64&r2=1.65
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/daemon/driver/driverInteractive.ml?cvsroot=mldonkey&r1=1.120&r2=1.121
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/gtk/newgui/gui_results.ml?cvsroot=mldonkey&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/gtk2/gui/guiMisc.ml?cvsroot=mldonkey&r1=1.21&r2=1.22
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/direct_connect/dcInteractive.ml?cvsroot=mldonkey&r1=1.28&r2=1.29
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyClient.ml?cvsroot=mldonkey&r1=1.113&r2=1.114
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyImport.ml?cvsroot=mldonkey&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyInteractive.ml?cvsroot=mldonkey&r1=1.142&r2=1.143
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyMain.ml?cvsroot=mldonkey&r1=1.63&r2=1.64
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyMftp.ml?cvsroot=mldonkey&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyMftp.mli?cvsroot=mldonkey&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyPandora.ml?cvsroot=mldonkey&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyProtoClient.ml?cvsroot=mldonkey&r1=1.41&r2=1.42
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyProtoKademlia.ml?cvsroot=mldonkey&r1=1.21&r2=1.22
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyProtoOvernet.ml?cvsroot=mldonkey&r1=1.31&r2=1.32
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyProtoServer.ml?cvsroot=mldonkey&r1=1.24&r2=1.25
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyProtoUdp.ml?cvsroot=mldonkey&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyServers.ml?cvsroot=mldonkey&r1=1.68&r2=1.69
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyUdp.ml?cvsroot=mldonkey&r1=1.26&r2=1.27
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/fasttrack/fasttrackNetwork.ml?cvsroot=mldonkey&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/fasttrack/fasttrackProto.ml?cvsroot=mldonkey&r1=1.17&r2=1.18
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/opennap/opennapInteractive.ml?cvsroot=mldonkey&r1=1.26&r2=1.27
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/utils/cdk/string2.ml?cvsroot=mldonkey&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/utils/cdk/string2.mli?cvsroot=mldonkey&r1=1.10&r2=1.11

Patches:
Index: distrib/ChangeLog
===================================================================
RCS file: /sources/mldonkey/mldonkey/distrib/ChangeLog,v
retrieving revision 1.1127
retrieving revision 1.1128
diff -u -b -r1.1127 -r1.1128
--- distrib/ChangeLog   3 Dec 2006 20:47:11 -0000       1.1127
+++ distrib/ChangeLog   3 Dec 2006 20:49:42 -0000       1.1128
@@ -15,6 +15,7 @@
 =========
 
 2006/12/03
+5609: New field type Field_KNOWN, EDK: recognize more HELLO/EmuleInfo tags
 5610: CommonSources: Cleanups and reformatting the code (pango)
 
 2006/12/02

Index: src/daemon/common/commonGlobals.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/daemon/common/commonGlobals.ml,v
retrieving revision 1.77
retrieving revision 1.78
diff -u -b -r1.77 -r1.78
--- src/daemon/common/commonGlobals.ml  28 Nov 2006 23:15:21 -0000      1.77
+++ src/daemon/common/commonGlobals.ml  3 Dec 2006 20:49:42 -0000       1.78
@@ -405,6 +405,7 @@
   | Field_Lastseencomplete -> "lastcompl"
   | Field_Medialength -> "mlen"
   | Field_Mediacodec -> "mediacodec"
+  | Field_KNOWN s -> s
   | Field_UNKNOWN s -> s
 
 let field_of_string t =
@@ -426,10 +427,11 @@
   | "lastcompl" -> Field_Lastseencomplete 
   | "mlen" -> Field_Medialength
   | "mediacodec" -> Field_Mediacodec
-  | _ -> Field_UNKNOWN t
+  | _ -> Field_KNOWN t
 
 let escaped_string_of_field tag =
   match tag.tag_name with
+  | Field_KNOWN s -> String.escaped s
   | Field_UNKNOWN s -> String.escaped s
   | t -> string_of_field t
 
@@ -438,6 +440,10 @@
   Printf.sprintf "  \"%s\" = %s" (escaped_string_of_field tag)
   (string_of_tag_value tag.tag_value)
 
+let hexstring_of_tag tag =
+  Printf.sprintf "  \"%s\" = %s" (String2.hex_string_of_string 
(escaped_string_of_field tag))
+  (string_of_tag_value tag.tag_value)
+
 let rec print_tags tags =
   match tags with
     [] -> ()

Index: src/daemon/common/commonInteractive.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/daemon/common/commonInteractive.ml,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -b -r1.86 -r1.87
--- src/daemon/common/commonInteractive.ml      28 Nov 2006 23:52:17 -0000      
1.86
+++ src/daemon/common/commonInteractive.ml      3 Dec 2006 20:49:42 -0000       
1.87
@@ -714,7 +714,7 @@
       | Q_MP3_BITRATE _ ->
           let bitrate = get_arg "bitrate" in
           if bitrate = "" then raise Not_found;
-          QHasMinVal(Field_UNKNOWN "bitrate", Int64.of_string bitrate)
+          QHasMinVal(Field_KNOWN "bitrate", Int64.of_string bitrate)
 
     in
     try
@@ -874,14 +874,14 @@
     | QHasMinVal (field, value) ->
         begin
           match field with
-            Field_UNKNOWN "bitrate"
+            Field_KNOWN "bitrate"
           | Field_Size
           | _ -> ()
         end
     | QHasMaxVal (field, value) ->
         begin
           match field with
-            Field_UNKNOWN "bitrate"
+            Field_KNOWN "bitrate"
           | Field_Size
           | _ -> ()
         end

Index: src/daemon/common/commonSearch.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/daemon/common/commonSearch.ml,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- src/daemon/common/commonSearch.ml   26 Nov 2006 13:54:09 -0000      1.19
+++ src/daemon/common/commonSearch.ml   3 Dec 2006 20:49:42 -0000       1.20
@@ -113,7 +113,7 @@
     | "-album"  :: format :: args ->
         iter args ((QHasField(Field_Album, format)) :: q)
     | "-field"  :: field :: format :: args ->
-        iter args ((QHasField(Field_UNKNOWN field, format)) :: q)
+        iter args ((QHasField(Field_KNOWN field, format)) :: q)
     | "-network" :: name :: args ->
         net := (network_find_by_name name).network_num;
         iter args q
@@ -892,7 +892,7 @@
         try
           let bitrate =  Int64.of_string s
           in
-          QHasMinVal(Field_UNKNOWN "bitrate", bitrate)
+          QHasMinVal(Field_KNOWN "bitrate", bitrate)
         with _ -> QNone
       end
 

Index: src/daemon/common/commonTypes.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/daemon/common/commonTypes.ml,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -b -r1.64 -r1.65
--- src/daemon/common/commonTypes.ml    26 Nov 2006 16:36:29 -0000      1.64
+++ src/daemon/common/commonTypes.ml    3 Dec 2006 20:49:42 -0000       1.65
@@ -265,6 +265,7 @@
 | Field_Lastseencomplete
 | Field_Mediacodec
 | Field_Medialength
+| Field_KNOWN of string
 | Field_UNKNOWN of string
   
 type tag = {

Index: src/daemon/driver/driverInteractive.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/daemon/driver/driverInteractive.ml,v
retrieving revision 1.120
retrieving revision 1.121
diff -u -b -r1.120 -r1.121
--- src/daemon/driver/driverInteractive.ml      1 Dec 2006 13:52:24 -0000       
1.120
+++ src/daemon/driver/driverInteractive.ml      3 Dec 2006 20:49:42 -0000       
1.121
@@ -1268,7 +1268,7 @@
                       let nl = ref false in
                       List.iter (fun t ->
                           match t.tag_name with
-                          | Field_UNKNOWN "FTH" | Field_UNKNOWN "urn" -> ()
+                          | Field_KNOWN "FTH" | Field_KNOWN "urn" -> ()
                           | _ ->
                               Buffer.add_string buf ((if !nl then "<br>" else 
begin nl := true;"" end) ^
                                 escaped_string_of_field t ^ ": " ^ 
get_tag_value t);
@@ -1284,7 +1284,7 @@
                       let nl = ref false in
                       List.iter (fun t ->
                           match t.tag_name with
-                          | Field_UNKNOWN "FTH" | Field_UNKNOWN "urn" -> ()
+                          | Field_KNOWN "FTH" | Field_KNOWN "urn" -> ()
                           | _ ->
                               Buffer.add_string buf ((if !nl then "\n" else 
begin nl := true;"" end) ^
                                   "|| (" ^
@@ -1340,8 +1340,8 @@
              let cformat = ref "" in
               List.iter (fun t ->
                   (match t.tag_name with
-                    | Field_UNKNOWN "urn"
-                    | Field_UNKNOWN "FTH"  -> hash := get_tag_value t
+                    | Field_KNOWN "urn"
+                    | Field_KNOWN "FTH"  -> hash := get_tag_value t
                     | Field_Availability -> cavail := get_tag_value t
                     | Field_Completesources -> csource := get_tag_value t
                     | Field_Length -> clength := get_tag_value t
@@ -1392,9 +1392,9 @@
                         | Field_Format
                         | Field_Bitrate
 (* TODO : "urn" shouldn't be some kind of Field_Uid of Gnutella ? *)
-                        | Field_UNKNOWN "urn"
+                        | Field_KNOWN "urn"
 (* TODO : "FTH" shouldn't be some kind of Field_Uid of Fasttrack ? *)
-                        | Field_UNKNOWN "FTH"  -> ()
+                        | Field_KNOWN "FTH"  -> ()
                         | _ ->
                             Buffer.add_string buf ("\\<span title=\\\"" ^
                                 get_tag_value t ^ "\\\"\\>(" ^

Index: src/gtk/newgui/gui_results.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/gtk/newgui/gui_results.ml,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- src/gtk/newgui/gui_results.ml       20 Jul 2006 16:56:42 -0000      1.10
+++ src/gtk/newgui/gui_results.ml       3 Dec 2006 20:49:42 -0000       1.11
@@ -289,7 +289,7 @@
   let value = ref "" in
   List.iter (fun t ->
     match t.tag_name with
-        Field_UNKNOWN "codec" -> value := string_of_tag_value t.tag_value
+        Field_KNOWN "codec" -> value := string_of_tag_value t.tag_value
       | _ -> ()
   ) tags;
   !value
@@ -298,7 +298,7 @@
   let value = ref 0 in
   List.iter (fun t ->
     match t.tag_name with
-        Field_UNKNOWN "bitrate" -> value := int_of_tag_value t.tag_value
+        Field_KNOWN "bitrate" -> value := int_of_tag_value t.tag_value
       | _ -> ()
   ) tags;
   !value

Index: src/gtk2/gui/guiMisc.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/gtk2/gui/guiMisc.ml,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- src/gtk2/gui/guiMisc.ml     2 Dec 2006 12:35:46 -0000       1.21
+++ src/gtk2/gui/guiMisc.ml     3 Dec 2006 20:49:42 -0000       1.22
@@ -1055,7 +1055,7 @@
     | Field_Mediacodec -> "codec"
     | Field_Lastseencomplete -> "lastseencompl"
     | Field_Filerating -> "rating"
-    | Field_UNKNOWN s -> U.simple_utf8_of s
+    | Field_KNOWN s -> U.simple_utf8_of s
   
 let tags_to_string tags =
   let s = ref "" in

Index: src/networks/direct_connect/dcInteractive.ml
===================================================================
RCS file: 
/sources/mldonkey/mldonkey/src/networks/direct_connect/dcInteractive.ml,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -b -r1.28 -r1.29
--- src/networks/direct_connect/dcInteractive.ml        1 Oct 2006 17:54:00 
-0000       1.28
+++ src/networks/direct_connect/dcInteractive.ml        3 Dec 2006 20:49:42 
-0000       1.29
@@ -248,13 +248,13 @@
         P.user_tags = (
           let list = if user.user_data > 1. then 
               [ 
-                { tag_name =  Field_UNKNOWN "link"; tag_value = String 
user.user_link };
-                { tag_name =  Field_UNKNOWN "shared"; tag_value = String (
+                { tag_name =  Field_KNOWN "link"; tag_value = String 
user.user_link };
+                { tag_name =  Field_KNOWN "shared"; tag_value = String (
                     Printf.sprintf "%12.0f" user.user_data) }
               ]          else []
           in
           if user.user_admin then
-            { tag_name =  Field_UNKNOWN "admin"; tag_value = String "admin" } 
:: list
+            { tag_name =  Field_KNOWN "admin"; tag_value = String "admin" } :: 
list
           else list
         );
             

Index: src/networks/donkey/donkeyClient.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyClient.ml,v
retrieving revision 1.113
retrieving revision 1.114
diff -u -b -r1.113 -r1.114
--- src/networks/donkey/donkeyClient.ml 2 Dec 2006 12:35:46 -0000       1.113
+++ src/networks/donkey/donkeyClient.ml 3 Dec 2006 20:49:42 -0000       1.114
@@ -606,7 +606,7 @@
       List.iter (fun tag ->
         let s = to_lowercase (string_of_tag_value tag.tag_value) in 
           match tag.tag_name with
-           Field_UNKNOWN "mod_version" ->
+           Field_KNOWN "mod_version" ->
                begin
                let rec iter i len =
                 if i < len then
@@ -671,22 +671,14 @@
   let module M = DonkeyProtoClient in
   List.iter (fun tag ->
       match tag.tag_name with
-      | Field_UNKNOWN "name"
-      | Field_UNKNOWN "port"
-      | Field_UNKNOWN "version"
-      | Field_UNKNOWN "buddy_ip"
-      | Field_UNKNOWN "buddy_udp"
-      | Field_UNKNOWN "mod_plus"
-      | Field_UNKNOWN "l2hac"
-      | Field_UNKNOWN "udpport" -> ()
-      | Field_UNKNOWN "emule_udpports" -> 
+      | Field_KNOWN "emule_udpports" -> 
           for_two_int16_tag tag (fun ed2k_port kad_port ->
 (* Kademlia: we should use this client to bootstrap Kademlia *)
             if kad_port <> 0 && !!enable_kademlia then
               DonkeyProtoKademlia.Kademlia.bootstrap 
                 c.client_ip kad_port
           )
-      | Field_UNKNOWN "emule_miscoptions1" ->
+      | Field_KNOWN "emule_miscoptions1" ->
           for_int64_tag tag (fun i ->
             M.update_emule_proto_from_miscoptions1
             c.client_emule_proto i;
@@ -695,7 +687,7 @@
                 (full_client_identifier c)
                 (M.print_emule_proto_miscoptions1 c.client_emule_proto)
           )
-      | Field_UNKNOWN "emule_miscoptions2" ->
+      | Field_KNOWN "emule_miscoptions2" ->
           for_int64_tag tag (fun i ->
             M.update_emule_proto_from_miscoptions2
             c.client_emule_proto i;
@@ -704,12 +696,12 @@
                 (full_client_identifier c)
                 (M.print_emule_proto_miscoptions2 c.client_emule_proto)
           )
-      | Field_UNKNOWN "emule_compatoptions" ->
+      | Field_KNOWN "emule_compatoptions" ->
           for_int_tag tag (fun i ->
             M.update_emule_proto_from_compatoptions
             c.client_emule_proto i
           )
-      | Field_UNKNOWN "emule_version" ->
+      | Field_KNOWN "emule_version" ->
           for_int_tag tag (fun i ->
             c.client_emule_proto.emule_version <- i;
             let compatibleclient = (i lsr 24) in
@@ -719,59 +711,62 @@
             if c.client_brand = Brand_unknown then
               lprintf_nl "[emule_version] Brand_unknown %s" 
(full_client_identifier c);
           )
-      | Field_UNKNOWN "mod_version" ->
+      | Field_KNOWN "mod_version" ->
           let s = to_lowercase (string_of_tag_value tag.tag_value) in 
           parse_mod_version s c
-      | _ -> 
-            lprintf_nl "update_client_from_tags, unknown tag: [%s] (%s)" 
(string_of_tag tag) (full_client_identifier c)
+      | Field_KNOWN _ -> if !verbose_unknown_messages then
+            lprintf_nl "update_client_from_tags, known tag: [%s] (%s)" 
(string_of_tag tag) (full_client_identifier c)
+      | _ -> if not (DonkeySources.source_brand c.client_source) then
+            lprintf_nl "update_client_from_tags, unknown tag: [%s] (%s) %s"
+              (hexstring_of_tag tag) (full_client_identifier c) 
(string_of_tags_list tags)
   ) tags
     
 let update_emule_proto_from_tags c tags =
   List.iter (fun tag ->
       match tag.tag_name with
-        Field_UNKNOWN "compatibleclient" ->
+        Field_KNOWN "compatibleclient" ->
           for_int_tag tag (fun i ->
             c.client_brand <- parse_compatible_client i c.client_brand;
             if c.client_brand = Brand_unknown then
               lprintf_nl "unknown compatibleclient %d (%s) (please report to 
dev team)" i (full_client_identifier c)
           )
-      | Field_UNKNOWN "compression" ->
+      | Field_KNOWN "compression" ->
           for_int_tag tag (fun i ->
             c.client_emule_proto.emule_compression <- i
           )
-      | Field_UNKNOWN "udpver" ->
+      | Field_KNOWN "udpver" ->
           for_int_tag tag (fun i ->
             c.client_emule_proto.emule_udpver <- i
           )
-      | Field_UNKNOWN "sourceexchange" ->
+      | Field_KNOWN "sourceexchange" ->
           for_int_tag tag (fun i ->
             c.client_emule_proto.emule_sourceexchange <- i
           ) 
-      | Field_UNKNOWN "comments" ->
+      | Field_KNOWN "comments" ->
           for_int_tag tag (fun i ->
             c.client_emule_proto.emule_comments <- i
           )
-      | Field_UNKNOWN "extendedrequest" ->
+      | Field_KNOWN "extendedrequest" ->
           for_int_tag tag (fun i ->
             c.client_emule_proto.emule_extendedrequest <- i
           )
-      | Field_UNKNOWN "features" ->
+      | Field_KNOWN "features" ->
           for_int_tag tag (fun i ->
             c.client_emule_proto.emule_secident <- i land 0x3
           )
-      | Field_UNKNOWN "mod_version" ->
+      | Field_KNOWN "mod_version" ->
           parse_mod_version (to_lowercase (string_of_tag_value tag.tag_value)) 
c;
 
-      | Field_UNKNOWN "os_info" ->
+      | Field_KNOWN "os_info" ->
           let s = to_lowercase (string_of_tag_value tag.tag_value) in 
          (match c.client_osinfo with
            Some _ -> ()
          | _ ->  if s <> "" then c.client_osinfo <- Some s)
-      | Field_UNKNOWN "udpport"
-      | Field_UNKNOWN "mod_plus"
-      | Field_UNKNOWN "l2hac" -> ()
-      | _ -> 
-            lprintf_nl "update_emule_proto_from_tags, unknown tag: [%s] (%s)" 
(string_of_tag tag) (full_client_identifier c)
+      | Field_KNOWN _ -> if !verbose_unknown_messages then
+            lprintf_nl "update_emule_proto_from_tags, known tag: [%s] (%s)" 
(string_of_tag tag) (full_client_identifier c)
+      | _ -> if not (DonkeySources.source_brand c.client_source) then
+            lprintf_nl "update_emule_proto_from_tags, unknown tag: [%s] (%s) 
%s"
+              (hexstring_of_tag tag) (full_client_identifier c) 
(string_of_tags_list tags)
   ) tags
 
 let fight_disguised_mods c =
@@ -792,7 +787,7 @@
        emule_info with
        DonkeyProtoClient.EmuleClientInfo.protversion = 255;
        DonkeyProtoClient.EmuleClientInfo.tags = [
-         string_tag (Field_UNKNOWN "os_info") (String2.upp_initial 
Autoconf.system);
+         string_tag (Field_KNOWN "os_info") (String2.upp_initial 
Autoconf.system);
        ]} in
       client_send c (DonkeyProtoClient.EmuleClientInfoReq emule_osinfo);
       c.client_osinfo_sent <- true
@@ -1181,7 +1176,7 @@
 
       List.iter (fun tag ->
           match tag with
-            { tag_name = Field_UNKNOWN "name"; tag_value = String s } -> 
+            { tag_name = Field_KNOWN "name"; tag_value = String s } -> 
               set_client_name c s t.CR.md4
           | _ -> ()
       ) c.client_tags;
@@ -2214,7 +2209,7 @@
       let name = ref "" in
       List.iter (fun tag ->
           match tag with
-            { tag_name = Field_UNKNOWN "name"; tag_value = String s } -> name 
:= s
+            { tag_name = Field_KNOWN "name"; tag_value = String s } -> name := 
s
           | _ ->  ()
       ) t.CR.tags;
 

Index: src/networks/donkey/donkeyImport.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyImport.ml,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- src/networks/donkey/donkeyImport.ml 14 Nov 2006 18:42:59 -0000      1.10
+++ src/networks/donkey/donkeyImport.ml 3 Dec 2006 20:49:42 -0000       1.11
@@ -56,26 +56,26 @@
     let names_of_tag =
 (* eMule sourcefile opcodes.h //server.met *)
       [
-        "\001", Field_UNKNOWN "name";                (* 0x01 string *)
-        "\011", Field_UNKNOWN "description";         (* 0x0B string *)
-        "\012", Field_UNKNOWN "ping";                (* 0x0C uint32 *)
-        "\013", Field_UNKNOWN "history";             (* 0x0D ST_FAIL *)
-        "\014", Field_UNKNOWN "prof";                (* 0x0E ST_PREFERENCE *)
-        "\015", Field_UNKNOWN "port";                (* 0x0F uint32 *)
-        "\016", Field_UNKNOWN "ip";                  (* 0x10 uint32 *)
-        "\133", Field_UNKNOWN "dynip";               (* 0x85 string *)
-        "\135", Field_UNKNOWN "maxusers";            (* 0x87 uint32 *)
-        "\136", Field_UNKNOWN "softfiles";           (* 0x88 uint32 *)
-        "\137", Field_UNKNOWN "hardfiles";           (* 0x89 uint32 *)
-        "\144", Field_UNKNOWN "lastping";            (* 0x90 uint32 *)
-        "\145", Field_UNKNOWN "version";             (* 0x91 string|uint32 *)
-        "\146", Field_UNKNOWN "udpflags";            (* 0x92 uint32 *)
-        "\147", Field_UNKNOWN "auxportslist";        (* 0x93 string *)
-        "\148", Field_UNKNOWN "lowidusers";          (* 0x94 uint32 *)
-        "\149", Field_UNKNOWN "udpkey";              (* 0x95 uint32 *)
-        "\150", Field_UNKNOWN "udpkeyip";            (* 0x96 uint32 *)
-        "\151", Field_UNKNOWN "tcpportobfuscation";  (* 0x97 uint16 *)
-        "\152", Field_UNKNOWN "udpportobfuscation";  (* 0x98 uint16 *)
+        "\001", Field_KNOWN "name";                (* 0x01 string *)
+        "\011", Field_KNOWN "description";         (* 0x0B string *)
+        "\012", Field_KNOWN "ping";                (* 0x0C uint32 *)
+        "\013", Field_KNOWN "history";             (* 0x0D ST_FAIL *)
+        "\014", Field_KNOWN "prof";                (* 0x0E ST_PREFERENCE *)
+        "\015", Field_KNOWN "port";                (* 0x0F uint32 *)
+        "\016", Field_KNOWN "ip";                  (* 0x10 uint32 *)
+        "\133", Field_KNOWN "dynip";               (* 0x85 string *)
+        "\135", Field_KNOWN "maxusers";            (* 0x87 uint32 *)
+        "\136", Field_KNOWN "softfiles";           (* 0x88 uint32 *)
+        "\137", Field_KNOWN "hardfiles";           (* 0x89 uint32 *)
+        "\144", Field_KNOWN "lastping";            (* 0x90 uint32 *)
+        "\145", Field_KNOWN "version";             (* 0x91 string|uint32 *)
+        "\146", Field_KNOWN "udpflags";            (* 0x92 uint32 *)
+        "\147", Field_KNOWN "auxportslist";        (* 0x93 string *)
+        "\148", Field_KNOWN "lowidusers";          (* 0x94 uint32 *)
+        "\149", Field_KNOWN "udpkey";              (* 0x95 uint32 *)
+        "\150", Field_KNOWN "udpkeyip";            (* 0x96 uint32 *)
+        "\151", Field_KNOWN "tcpportobfuscation";  (* 0x97 uint16 *)
+        "\152", Field_KNOWN "udpportobfuscation";  (* 0x98 uint16 *)
       ]
     
     
@@ -204,12 +204,12 @@
     
     let names_of_tag =
       [
-        "\008", Field_UNKNOWN "downloaded";
-        "\018", Field_UNKNOWN "diskname";
-        "\019", Field_UNKNOWN "priority";
-        "\020", Field_UNKNOWN "status";
-        "\t", Field_UNKNOWN "start_pos";
-        "\n", Field_UNKNOWN "absent";
+        "\008", Field_KNOWN "downloaded";
+        "\018", Field_KNOWN "diskname";
+        "\019", Field_KNOWN "priority";
+        "\020", Field_KNOWN "status";
+        "\t", Field_KNOWN "start_pos";
+        "\n", Field_KNOWN "absent";
       ] @ file_common_tags
     
     
@@ -231,8 +231,8 @@
       List.iter (fun tag ->
           let s = tag.tag_name in
           match s, tag.tag_value with
-            Field_UNKNOWN "start_pos", Uint64 p -> start_pos := p;
-          | Field_UNKNOWN "absent", Uint64 p -> 
+            Field_KNOWN "start_pos", Uint64 p -> start_pos := p;
+          | Field_KNOWN "absent", Uint64 p -> 
                 absents := (!start_pos, p) :: !absents;
             | _ -> ()
       ) tags;
@@ -285,9 +285,9 @@
     
     let names_of_client_tag =
       [
-        "\001", Field_UNKNOWN  "name";
-        "\017", Field_UNKNOWN "version";
-        "\015", Field_UNKNOWN "port";
+        "\001", Field_KNOWN  "name";
+        "\017", Field_KNOWN "version";
+        "\015", Field_KNOWN "port";
       ]
       
     let names_of_option_tag = []

Index: src/networks/donkey/donkeyInteractive.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyInteractive.ml,v
retrieving revision 1.142
retrieving revision 1.143
diff -u -b -r1.142 -r1.143
--- src/networks/donkey/donkeyInteractive.ml    2 Dec 2006 12:35:46 -0000       
1.142
+++ src/networks/donkey/donkeyInteractive.ml    3 Dec 2006 20:49:42 -0000       
1.143
@@ -113,44 +113,44 @@
           let server = check_add_server r.S.ip r.S.port in
           List.iter (fun tag ->
               match tag with
-              |  { tag_name = Field_UNKNOWN "name"; tag_value = String s } ->
+              |  { tag_name = Field_KNOWN "name"; tag_value = String s } ->
                   server.server_name <- s;
-              |  { tag_name = Field_UNKNOWN "description" ; tag_value = String 
s } ->
+              |  { tag_name = Field_KNOWN "description" ; tag_value = String s 
} ->
                   server.server_description <- s
-              |  { tag_name = Field_UNKNOWN "version" ; tag_value = Uint64 s } 
->
+              |  { tag_name = Field_KNOWN "version" ; tag_value = Uint64 s } ->
                   server.server_version <- Printf.sprintf "%d.%d"
                                            ((Int64.to_int s) lsr 16) 
((Int64.to_int s) land 0xFFFF)
-              |  { tag_name = Field_UNKNOWN "ping" ; tag_value = Uint64 s } ->
+              |  { tag_name = Field_KNOWN "ping" ; tag_value = Uint64 s } ->
                   server.server_ping <- (Int64.to_int s)
-              |  { tag_name = Field_UNKNOWN "dynip" ; tag_value = String s } ->
+              |  { tag_name = Field_KNOWN "dynip" ; tag_value = String s } ->
                   server.server_dynip <- s
-              |  { tag_name = Field_UNKNOWN "users" ; tag_value = Uint64 s } ->
+              |  { tag_name = Field_KNOWN "users" ; tag_value = Uint64 s } ->
                   (match server.server_nusers with
                  | None -> server.server_nusers <- Some s | _ -> ())
-              |  { tag_name = Field_UNKNOWN "files" ; tag_value = Uint64 s } ->
+              |  { tag_name = Field_KNOWN "files" ; tag_value = Uint64 s } ->
                   (match server.server_nfiles with
                  | None -> server.server_nfiles <- Some s | _ -> ())
-              |  { tag_name = Field_UNKNOWN "maxusers" ; tag_value = Uint64 s 
} ->
+              |  { tag_name = Field_KNOWN "maxusers" ; tag_value = Uint64 s } 
->
                   (match server.server_max_users with
                  | None -> server.server_max_users <- Some s | _ -> ())
-              |  { tag_name = Field_UNKNOWN "softfiles" ; tag_value = Uint64 s 
} ->
+              |  { tag_name = Field_KNOWN "softfiles" ; tag_value = Uint64 s } 
->
                   (match server.server_soft_limit with
                  | None -> server.server_soft_limit <- Some s | _ -> ())
-              |  { tag_name = Field_UNKNOWN "hardfiles" ; tag_value = Uint64 s 
} ->
+              |  { tag_name = Field_KNOWN "hardfiles" ; tag_value = Uint64 s } 
->
                   (match server.server_hard_limit with
                  | None -> server.server_hard_limit <- Some s | _ -> ())
-              |  { tag_name = Field_UNKNOWN "auxportslist" ; tag_value = 
String s } ->
+              |  { tag_name = Field_KNOWN "auxportslist" ; tag_value = String 
s } ->
                   server.server_auxportslist <- s
-              |  { tag_name = Field_UNKNOWN "lowusers" ; tag_value = Uint64 s 
} ->
+              |  { tag_name = Field_KNOWN "lowusers" ; tag_value = Uint64 s } 
->
                   (match server.server_lowid_users with
                  | None -> server.server_lowid_users <- Some s | _ -> ())
-              |  { tag_name = Field_UNKNOWN "tcpportobfuscation" ; tag_value = 
Uint64 s } ->
+              |  { tag_name = Field_KNOWN "tcpportobfuscation" ; tag_value = 
Uint64 s } ->
                   server.server_obfuscation_tcp <- Some (Int64.to_int s)
-              |  { tag_name = Field_UNKNOWN "udpportobfuscation" ; tag_value = 
Uint64 s } ->
+              |  { tag_name = Field_KNOWN "udpportobfuscation" ; tag_value = 
Uint64 s } ->
                   server.server_obfuscation_udp <- Some (Int64.to_int s)
-              |  { tag_name = Field_UNKNOWN "country" ; tag_value = String s } 
-> ()
-              |  { tag_name = Field_UNKNOWN "udpflags" ; tag_value = Uint64  s 
} -> ()
-              |  { tag_name = Field_UNKNOWN "refs" ; tag_value = Uint64  s } 
-> ()
+              |  { tag_name = Field_KNOWN "country" ; tag_value = String s } 
-> ()
+              |  { tag_name = Field_KNOWN "udpflags" ; tag_value = Uint64  s } 
-> ()
+              |  { tag_name = Field_KNOWN "refs" ; tag_value = Uint64  s } -> 
()
               | _ -> lprintf_nl "parsing server.met, unknown field %s" 
(string_of_tag tag)
           ) r.S.tags;
          server_must_update server
@@ -448,16 +448,16 @@
 
   List.iter (fun tag ->
       match tag with
-      | { tag_name = Field_UNKNOWN "name"; tag_value = String s } ->
+      | { tag_name = Field_KNOWN "name"; tag_value = String s } ->
           login =:=  s
-      | { tag_name = Field_UNKNOWN "port"; tag_value = Uint64 v } ->
+      | { tag_name = Field_KNOWN "port"; tag_value = Uint64 v } ->
           donkey_port =:=  Int64.to_int v
       | _ -> ()
   ) ct;
 
   List.iter (fun tag ->
       match tag with
-      | { tag_name = Field_UNKNOWN "temp"; tag_value = String s } ->
+      | { tag_name = Field_KNOWN "temp"; tag_value = String s } ->
           if Sys.file_exists s then (* be careful on that *)
             temp_dir := s
           else (lprintf_nl "Bad temp directory, using default";

Index: src/networks/donkey/donkeyMain.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyMain.ml,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -b -r1.63 -r1.64
--- src/networks/donkey/donkeyMain.ml   26 Nov 2006 16:36:29 -0000      1.63
+++ src/networks/donkey/donkeyMain.ml   3 Dec 2006 20:49:42 -0000       1.64
@@ -137,14 +137,14 @@
   let emule_compatoptions = D.emule_compatoptions m in
   client_to_client_tags :=
   [
-    string_tag (Field_UNKNOWN "name") (local_login ());
-    int_tag (Field_UNKNOWN "port") !!donkey_port;
-    int_tag (Field_UNKNOWN "version") protocol_version;
-    int_tag (Field_UNKNOWN "emule_udpports") (!!donkey_port+4);
-    int_tag (Field_UNKNOWN "emule_version") m.emule_version;
-    int64_tag (Field_UNKNOWN "emule_miscoptions1") emule_miscoptions1;
-    int64_tag (Field_UNKNOWN "emule_miscoptions2") emule_miscoptions2;
-    int_tag (Field_UNKNOWN "emule_compatoptions") emule_compatoptions;
+    string_tag (Field_KNOWN "name") (local_login ());
+    int_tag (Field_KNOWN "port") !!donkey_port;
+    int_tag (Field_KNOWN "version") protocol_version;
+    int_tag (Field_KNOWN "emule_udpports") (!!donkey_port+4);
+    int_tag (Field_KNOWN "emule_version") m.emule_version;
+    int64_tag (Field_KNOWN "emule_miscoptions1") emule_miscoptions1;
+    int64_tag (Field_KNOWN "emule_miscoptions2") emule_miscoptions2;
+    int_tag (Field_KNOWN "emule_compatoptions") emule_compatoptions;
   ];
 
 (* server capabilities *)
@@ -161,42 +161,42 @@
 
   client_to_server_tags :=
   [
-    string_tag (Field_UNKNOWN "name") (local_login ());
-    int_tag (Field_UNKNOWN "version") protocol_version;
-    int_tag (Field_UNKNOWN "extended") !extended;
-    int_tag (Field_UNKNOWN "emule_version") m.emule_version;
+    string_tag (Field_KNOWN "name") (local_login ());
+    int_tag (Field_KNOWN "version") protocol_version;
+    int_tag (Field_KNOWN "extended") !extended;
+    int_tag (Field_KNOWN "emule_version") m.emule_version;
   ];
 
   client_to_server_reply_tags :=
   [
-    string_tag (Field_UNKNOWN "name") (local_login ());
-    int_tag (Field_UNKNOWN "version") protocol_version;
-    int_tag (Field_UNKNOWN "emule_udpports") (!!donkey_port+4);
-    int64_tag (Field_UNKNOWN "emule_miscoptions1") emule_miscoptions1;
-    int64_tag (Field_UNKNOWN "emule_miscoptions2") emule_miscoptions2;
-    int_tag (Field_UNKNOWN "emule_version") m.emule_version;
+    string_tag (Field_KNOWN "name") (local_login ());
+    int_tag (Field_KNOWN "version") protocol_version;
+    int_tag (Field_KNOWN "emule_udpports") (!!donkey_port+4);
+    int64_tag (Field_KNOWN "emule_miscoptions1") emule_miscoptions1;
+    int64_tag (Field_KNOWN "emule_miscoptions2") emule_miscoptions2;
+    int_tag (Field_KNOWN "emule_version") m.emule_version;
   ];
 
   emule_info.DonkeyProtoClient.EmuleClientInfo.tags <- [
-    int_tag (Field_UNKNOWN "compression") m.emule_compression;
-    int_tag (Field_UNKNOWN "udpver") m.emule_udpver;
-    int_tag (Field_UNKNOWN "udpport") (!!donkey_port+4);
-    int_tag (Field_UNKNOWN "sourceexchange") m.emule_sourceexchange;
-    int_tag (Field_UNKNOWN "comments") m.emule_comments;
-    int_tag (Field_UNKNOWN "compatibleclient") 
!DonkeyProtoClient.compatibleclient; 
-    int_tag (Field_UNKNOWN "extendedrequest") m.emule_extendedrequest;
-    int_tag (Field_UNKNOWN "features") m.emule_features;
+    int_tag (Field_KNOWN "compression") m.emule_compression;
+    int_tag (Field_KNOWN "udpver") m.emule_udpver;
+    int_tag (Field_KNOWN "udpport") (!!donkey_port+4);
+    int_tag (Field_KNOWN "sourceexchange") m.emule_sourceexchange;
+    int_tag (Field_KNOWN "comments") m.emule_comments;
+    int_tag (Field_KNOWN "compatibleclient") 
!DonkeyProtoClient.compatibleclient; 
+    int_tag (Field_KNOWN "extendedrequest") m.emule_extendedrequest;
+    int_tag (Field_KNOWN "features") m.emule_features;
     
   ];
   overnet_connect_tags :=
   [
-    string_tag (Field_UNKNOWN "name") (local_login ());
-    int_tag (Field_UNKNOWN "version") 
!!DonkeyProtoOvernet.overnet_protocol_connect_version; 
+    string_tag (Field_KNOWN "name") (local_login ());
+    int_tag (Field_KNOWN "version") 
!!DonkeyProtoOvernet.overnet_protocol_connect_version; 
   ];
   overnet_connectreply_tags :=
   [
-    string_tag (Field_UNKNOWN "name") (local_login ());
-    int_tag (Field_UNKNOWN "version") 
!!DonkeyProtoOvernet.overnet_protocol_connectreply_version; 
+    string_tag (Field_KNOWN "name") (local_login ());
+    int_tag (Field_KNOWN "version") 
!!DonkeyProtoOvernet.overnet_protocol_connectreply_version; 
   ]
   
 let enable () =

Index: src/networks/donkey/donkeyMftp.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyMftp.ml,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- src/networks/donkey/donkeyMftp.ml   9 Feb 2006 11:45:12 -0000       1.13
+++ src/networks/donkey/donkeyMftp.ml   3 Dec 2006 20:49:42 -0000       1.14
@@ -179,7 +179,9 @@
         List.assoc name names_of_tag
       with Not_found ->
 (*          lprintf "Unknown tag \"%s\"\n" (String.escaped name); *)
-          field_of_string name);
+          match field_of_string name with
+          | Field_KNOWN s -> Field_UNKNOWN s
+          | field -> field);
     tag_value = v
   }, pos
   
@@ -223,3 +225,74 @@
     "Album", Field_Album;
     "Title", Field_Title;
   ]
+
+let client_common_tags =
+      [
+        "\001", "name";
+        "\015", "port";
+        "\017", "version";
+        "\031", "udpport";
+        "\032", "compression";
+        "\033", "udpport";
+        "\034", "udpver";
+        "\035", "sourceexchange";
+        "\036", "comments";
+        "\037", "extendedrequest";
+        "\038", "compatibleclient";
+        "\039", "features";
+        "\059", "extrainfo";
+        "\060", "downloadtime";
+        "\061", "incompleteparts";
+        "\062", "l2hac";
+        "\063", "realparts";
+        "\065", "mod_unknown41";
+        "\066", "mod_unknown42";
+        "\067", "mod_unknown43";
+        "\078", "neo_features";
+        "\084", "mod_featureset";
+        "\085", "mod_version";
+        "\086", "mod_protocol";
+        "\090", "mod_bowlfish";
+        "\092", "mod_secure_community";
+        "\093", "mod_unknown0x5d";
+        "\096", "mod_unknown0x60";
+        "\102", "mod_fusion";
+        "\103", "mod_fusion_version";
+
+(* 
http://forums.shareaza.com/showthread.php?threadid=37323&perpage=15&pagenumber=2
 *)
+        "\105", "edonkeyclc serverip?";
+        "\106", "edonkeyclc serverport?";
+
+        "\118", "mod_unknown0x76";
+        "\119", "mod_tarod";
+        "\120", "mod_tarod_version";
+        "\121", "mod_morph";
+        "\128", "mod_morph_version";
+        "\130", "mod_mortillo";
+        "\131", "mod_mortillo_version";
+        "\132", "chanblard_version";
+        "\133", "signature";
+        "\134", "cache";
+        "\135", "mod_lsd";
+        "\136", "mod_lsd_version";
+        "\144", "mod_lovelace_version";
+        "\148", "os_info"; (* reused by aMule to transfer client OS type *)
+        "\153", "mod_plus";
+        "\160", "mod_wombat";
+        "\161", "dev_wombat";
+        "\170", "koizo"; (* http://sourceforge.net/projects/koizo *)
+        "\205", "mod_unknown0xcd";
+        "\224", "isp_bypass";
+        "\225", "nat_tunneling";
+        "\239", "emule_compatoptions";
+        "\240", "nat_security";
+        "\249", "emule_udpports";
+        "\250", "emule_miscoptions1";
+        "\251", "emule_version";
+        "\252", "buddy_ip";
+        "\253", "buddy_udp";
+        "\254", "emule_miscoptions2";
+        "pr",   "edonkeyclc horde";
+        "wombia", "wombat a";
+        "wombib", "wombat b";
+      ]

Index: src/networks/donkey/donkeyMftp.mli
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyMftp.mli,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- src/networks/donkey/donkeyMftp.mli  19 Jan 2006 00:44:47 -0000      1.6
+++ src/networks/donkey/donkeyMftp.mli  3 Dec 2006 20:49:42 -0000       1.7
@@ -52,3 +52,4 @@
     val write : Buffer.t -> t -> unit
   end
 val file_common_tags : (string * CommonTypes.field) list
\ No newline at end of file
+val client_common_tags : (string * string) list

Index: src/networks/donkey/donkeyPandora.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyPandora.ml,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- src/networks/donkey/donkeyPandora.ml        3 Apr 2006 20:50:09 -0000       
1.7
+++ src/networks/donkey/donkeyPandora.ml        3 Dec 2006 20:49:42 -0000       
1.8
@@ -98,23 +98,23 @@
 let update_emule_proto_from_tags e tags = 
   List.iter (fun tag -> 
       match tag.tag_name with
-      | Field_UNKNOWN "compression" ->
+      | Field_KNOWN "compression" ->
           for_int_tag tag (fun i -> 
               e.emule_compression <- i)
-      | Field_UNKNOWN "udpver" ->
+      | Field_KNOWN "udpver" ->
           for_int_tag tag (fun i -> 
               e.emule_udpver <- i)          
-      | Field_UNKNOWN "udpport" -> ()
-      | Field_UNKNOWN "sourceexchange" ->
+      | Field_KNOWN "udpport" -> ()
+      | Field_KNOWN "sourceexchange" ->
           for_int_tag tag (fun i -> 
               e.emule_sourceexchange <- i)          
-      | Field_UNKNOWN "comments" ->
+      | Field_KNOWN "comments" ->
           for_int_tag tag (fun i -> 
               e.emule_comments <- i)          
-      | Field_UNKNOWN "extendedrequest" ->
+      | Field_KNOWN "extendedrequest" ->
           for_int_tag tag (fun i -> 
               e.emule_extendedrequest <- i)          
-      | Field_UNKNOWN "features" ->
+      | Field_KNOWN "features" ->
           for_int_tag tag (fun i -> 
               e.emule_secident <- i land 0x3)          
       | s -> 
@@ -138,7 +138,7 @@
             
             begin
               try
-                let options = find_tag (Field_UNKNOWN "emule_miscoptions1") 
tags in
+                let options = find_tag (Field_KNOWN "emule_miscoptions1") tags 
in
                 match options with
                   Uint64 v | Fint64 v ->
                     update_emule_proto_from_miscoptions1 emule v

Index: src/networks/donkey/donkeyProtoClient.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyProtoClient.ml,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -b -r1.41 -r1.42
--- src/networks/donkey/donkeyProtoClient.ml    28 Nov 2006 23:50:33 -0000      
1.41
+++ src/networks/donkey/donkeyProtoClient.ml    3 Dec 2006 20:49:42 -0000       
1.42
@@ -190,23 +190,10 @@
         left_bytes : string;
       }
 
+    let names_of_tag = client_common_tags
+
     let names_of_tag =
-      [
-        "\001", Field_UNKNOWN "name";
-        "\015", Field_UNKNOWN "port";
-        "\017", Field_UNKNOWN "version";
-        "\031", Field_UNKNOWN "udpport";
-        "\060", Field_UNKNOWN "downloadtime";
-        "\061", Field_UNKNOWN "incompleteparts";
-        "\085", Field_UNKNOWN "mod_version";
-        "\239", Field_UNKNOWN "emule_compatoptions";
-        "\249", Field_UNKNOWN "emule_udpports";
-        "\250", Field_UNKNOWN "emule_miscoptions1";
-        "\251", Field_UNKNOWN "emule_version";
-        "\252", Field_UNKNOWN "buddy_ip";
-        "\253", Field_UNKNOWN "buddy_udp";
-        "\254", Field_UNKNOWN "emule_miscoptions2";
-      ]
+      List.map (fun (v, name) -> (v, Field_KNOWN name)) names_of_tag
 
     let parse reply len s =
       let hash_len, pos = if not reply then get_uint8 s 1, 2 else -1, 1 in
@@ -831,49 +818,10 @@
         mutable tags : tag list;
       }
 
-    let names_of_tag =
-      [
-        "\032", "compression";
-        "\033", "udpport";
-        "\034", "udpver";
-        "\035", "sourceexchange";
-        "\036", "comments";
-        "\037", "extendedrequest";
-        "\038", "compatibleclient";
-        "\039", "features";
-        "\060", "downloadtime";
-        "\061", "incompleteparts";
-        "\062", "l2hac";
-        "\065", "mod_unknown41";
-        "\066", "mod_unknown42";
-        "\067", "mod_unknown43";
-        "\084", "mod_featureset";
-        "\086", "mod_protocol";
-        "\085", "mod_version";
-        "\090", "mod_bowlfish";
-        "\092", "mod_secure_community";
-        "\102", "mod_fusion";
-        "\103", "mod_fusion_version";
-        "\119", "mod_tarod";
-        "\120", "mod_tarod_version";
-        "\121", "mod_morph";
-        "\128", "mod_morph_version";
-        "\130", "mod_mortillo";
-        "\131", "mod_mortillo_version";
-        "\132", "chanblard_version";
-        "\133", "signature";
-        "\134", "cache";
-        "\135", "mod_lsd";
-        "\136", "mod_lsd_version";
-        "\144", "mod_lovelace_version";
-        "\148", "os_info"; (* reused by aMule to transfer client OS type *)
-        "\153", "mod_plus";
-        "\160", "mod_wombat";
-        "\161", "dev_wombat";
-      ]
+    let names_of_tag = client_common_tags
 
     let names_of_tag =
-      List.map (fun (v, name) -> (v, Field_UNKNOWN name)) names_of_tag
+      List.map (fun (v, name) -> (v, Field_KNOWN name)) names_of_tag
 
     let parse len s =
       let version = get_uint8 s 1 in

Index: src/networks/donkey/donkeyProtoKademlia.ml
===================================================================
RCS file: 
/sources/mldonkey/mldonkey/src/networks/donkey/donkeyProtoKademlia.ml,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- src/networks/donkey/donkeyProtoKademlia.ml  31 Oct 2006 15:42:48 -0000      
1.21
+++ src/networks/donkey/donkeyProtoKademlia.ml  3 Dec 2006 20:49:42 -0000       
1.22
@@ -45,15 +45,15 @@
 
     let names_of_tag =
       [
-        "\243", Field_UNKNOWN "encryption"; (* 0xF3 *)
-        "\248", Field_UNKNOWN "buddyhash"; (* 0xF8 *)
-        "\249", Field_UNKNOWN "clientlowid"; (* 0xF9 *)
-        "\250", Field_UNKNOWN "serverport"; (* 0xFA *)
-        "\251", Field_UNKNOWN "serverip";   (* 0xFB *)
-        "\252", Field_UNKNOWN "sourceuport"; (* 0xFC *)
-        "\253", Field_UNKNOWN "sourceport"; (* 0xFD *)
-        "\254", Field_UNKNOWN "sourceip"; (* 0xFE *)
-        "\255", Field_UNKNOWN "sourcetype";  (* 0xFF *)
+        "\243", Field_KNOWN "encryption"; (* 0xF3 *)
+        "\248", Field_KNOWN "buddyhash"; (* 0xF8 *)
+        "\249", Field_KNOWN "clientlowid"; (* 0xF9 *)
+        "\250", Field_KNOWN "serverport"; (* 0xFA *)
+        "\251", Field_KNOWN "serverip";   (* 0xFB *)
+        "\252", Field_KNOWN "sourceuport"; (* 0xFC *)
+        "\253", Field_KNOWN "sourceport"; (* 0xFD *)
+        "\254", Field_KNOWN "sourceip"; (* 0xFE *)
+        "\255", Field_KNOWN "sourcetype";  (* 0xFF *)
       ] @ file_common_tags
 
 (* This fucking Emule implementation uses 4 32-bits integers instead of
@@ -248,17 +248,17 @@
           let peer_kind = ref 0 in
           List.iter (fun tag ->
               match tag.tag_name with
-                Field_UNKNOWN "sourceport" ->
+                Field_KNOWN "sourceport" ->
                   for_int_tag tag (fun port ->
                       peer_tcpport := port)
-              | Field_UNKNOWN "sourceuport" ->
+              | Field_KNOWN "sourceuport" ->
                   for_int_tag tag (fun port ->
                       peer_udpport := port)
-              | Field_UNKNOWN "sourceip" ->
+              | Field_KNOWN "sourceip" ->
                   for_int64_tag tag (fun ip ->
                       peer_ip := Ip.of_int64 ip
                   )
-              | Field_UNKNOWN "sourcetype" ->
+              | Field_KNOWN "sourcetype" ->
                   for_int_tag tag (fun kind ->
                       peer_kind := 3)
               | _ ->
@@ -333,7 +333,7 @@
               (_, first_tags) :: _ ->
                 let sources = ref false in
                 List.iter (fun tag ->
-                    if tag.tag_name = Field_UNKNOWN "sourceport" then sources 
:= true;
+                    if tag.tag_name = Field_KNOWN "sourceport" then sources := 
true;
                 ) first_tags;
                 if !sources then
                   let peers = get_peers_from_results Ip.null 0 answers in
@@ -359,7 +359,7 @@
               (_, first_tags) :: _ ->
                 let sources = ref false in
                 List.iter (fun tag ->
-                    if tag.tag_name = Field_UNKNOWN "sourceport" then sources 
:= true;
+                    if tag.tag_name = Field_KNOWN "sourceport" then sources := 
true;
                 ) first_tags;
                 if !sources then
                   let peers = get_peers_from_results ip port answers in

Index: src/networks/donkey/donkeyProtoOvernet.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyProtoOvernet.ml,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -b -r1.31 -r1.32
--- src/networks/donkey/donkeyProtoOvernet.ml   5 Nov 2006 14:13:51 -0000       
1.31
+++ src/networks/donkey/donkeyProtoOvernet.ml   3 Dec 2006 20:49:42 -0000       
1.32
@@ -40,7 +40,9 @@
     let lprintf_n fmt =
       lprintf2 log_prefix fmt
 
-   let names_of_tag = file_common_tags
+   let names_of_tag = [
+      "loc", Field_KNOWN "loc";
+      ] @ file_common_tags
 
     let buf_peer buf p =
       buf_md4 buf p.peer_md4;
@@ -187,7 +189,7 @@
       let peer_tcpport = ref 0 in
       List.iter (fun tag ->
           match tag.tag_name with
-            Field_UNKNOWN "loc" ->
+            Field_KNOWN "loc" ->
               for_string_tag tag (fun bcp ->
                   if !verbose_overnet then lprintf_nl "loc tag : [%s]" bcp;
                   if String2.starts_with bcp "bcp://" then
@@ -295,7 +297,7 @@
             let r_tags, pos = get_tags s 32 names_of_tag in
             let sources = ref false in
             List.iter (fun tag ->
-                if tag.tag_name = Field_UNKNOWN "loc" then sources := true;
+                if tag.tag_name = Field_KNOWN "loc" then sources := true;
             ) r_tags;
             if !sources then
               let peer = get_peer_from_result ip port r_md4 r_tags in
@@ -311,7 +313,7 @@
             let r_tags, pos = get_tags s 32 names_of_tag in
             let sources = ref false in
             List.iter (fun tag ->
-                if tag.tag_name = Field_UNKNOWN "loc" then sources := true;
+                if tag.tag_name = Field_KNOWN "loc" then sources := true;
             ) r_tags;
             if !sources then
               let peer = get_peer_from_result ip port r_md4 r_tags in

Index: src/networks/donkey/donkeyProtoServer.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyProtoServer.ml,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- src/networks/donkey/donkeyProtoServer.ml    28 Nov 2006 23:50:33 -0000      
1.24
+++ src/networks/donkey/donkeyProtoServer.ml    3 Dec 2006 20:49:42 -0000       
1.25
@@ -38,10 +38,10 @@
 
     let names_of_tag =
       [
-       "\001", Field_UNKNOWN "name";          (* CT_NAME          0x01 *)
-       "\017", Field_UNKNOWN "version";       (* CT_VERSION       0x11 *)
-       "\032", Field_UNKNOWN "extended";      (* CT_SERVER_FLAGS  0x20 *)
-       "\251", Field_UNKNOWN "emule_version"; (* CT_EMULE_VERSION 0xfb *)
+       "\001", Field_KNOWN "name";          (* CT_NAME          0x01 *)
+       "\017", Field_KNOWN "version";       (* CT_VERSION       0x11 *)
+       "\032", Field_KNOWN "extended";      (* CT_SERVER_FLAGS  0x20 *)
+       "\251", Field_KNOWN "emule_version"; (* CT_EMULE_VERSION 0xfb *)
       ]
 
     let parse len s =
@@ -363,8 +363,8 @@
 
     let names_of_tag =
       [
-        "\001", Field_UNKNOWN "name";
-        "\011", Field_UNKNOWN "description";
+        "\001", Field_KNOWN "name";
+        "\011", Field_KNOWN "description";
       ]
 
     let parse len s =
@@ -735,9 +735,9 @@
 
     let names_of_tag =
       [
-        "\001", Field_UNKNOWN "name";
-        "\017", Field_UNKNOWN "version";
-        "\015", Field_UNKNOWN "port";
+        "\001", Field_KNOWN "name";
+        "\017", Field_KNOWN "version";
+        "\015", Field_KNOWN "port";
       ]
 
     let rec parse_clients s pos nclients left =

Index: src/networks/donkey/donkeyProtoUdp.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyProtoUdp.ml,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- src/networks/donkey/donkeyProtoUdp.ml       26 Nov 2006 16:36:29 -0000      
1.16
+++ src/networks/donkey/donkeyProtoUdp.ml       3 Dec 2006 20:49:42 -0000       
1.17
@@ -233,22 +233,22 @@
   }
 
   let names_of_tag = [
-    "\001", Field_UNKNOWN "servername";
-    "\011", Field_UNKNOWN "description";
-    "\012", Field_UNKNOWN "ping";
-    "\013", Field_UNKNOWN "fail";
-    "\014", Field_UNKNOWN "preference";
-    "\015", Field_UNKNOWN "port";
-    "\016", Field_UNKNOWN "ip";
-    "\133", Field_UNKNOWN "dynip";
-    "\135", Field_UNKNOWN "maxusers";
-    "\136", Field_UNKNOWN "softfiles";
-    "\137", Field_UNKNOWN "hardfiles";
-    "\144", Field_UNKNOWN "lastping";
-    "\145", Field_UNKNOWN "version";
-    "\146", Field_UNKNOWN "udpflags";
-    "\147", Field_UNKNOWN "auxportslist";
-    "\148", Field_UNKNOWN "lowidusers";
+    "\001", Field_KNOWN "servername";
+    "\011", Field_KNOWN "description";
+    "\012", Field_KNOWN "ping";
+    "\013", Field_KNOWN "fail";
+    "\014", Field_KNOWN "preference";
+    "\015", Field_KNOWN "port";
+    "\016", Field_KNOWN "ip";
+    "\133", Field_KNOWN "dynip";
+    "\135", Field_KNOWN "maxusers";
+    "\136", Field_KNOWN "softfiles";
+    "\137", Field_KNOWN "hardfiles";
+    "\144", Field_KNOWN "lastping";
+    "\145", Field_KNOWN "version";
+    "\146", Field_KNOWN "udpflags";
+    "\147", Field_KNOWN "auxportslist";
+    "\148", Field_KNOWN "lowidusers";
   ]
 
   let parse1 len s challenge =
@@ -267,9 +267,9 @@
     let desc = ref "" in
     List.iter (fun tag ->
       match tag with
-      | { tag_name = Field_UNKNOWN "servername"; tag_value = String v } ->
+      | { tag_name = Field_KNOWN "servername"; tag_value = String v } ->
             name := v
-      | { tag_name = Field_UNKNOWN "description"; tag_value = String v } ->
+      | { tag_name = Field_KNOWN "description"; tag_value = String v } ->
             desc := v
       | _ -> ()
     ) stags;

Index: src/networks/donkey/donkeyServers.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyServers.ml,v
retrieving revision 1.68
retrieving revision 1.69
diff -u -b -r1.68 -r1.69
--- src/networks/donkey/donkeyServers.ml        26 Nov 2006 16:36:29 -0000      
1.68
+++ src/networks/donkey/donkeyServers.ml        3 Dec 2006 20:49:42 -0000       
1.69
@@ -399,9 +399,9 @@
       List.iter (
         fun tag ->
           match tag with
-              { tag_name = Field_UNKNOWN "name"; tag_value = String name } ->
+              { tag_name = Field_KNOWN "name"; tag_value = String name } ->
                 s.server_name <- name
-            | { tag_name = Field_UNKNOWN "description"; tag_value = String 
desc } ->
+            | { tag_name = Field_KNOWN "description"; tag_value = String desc 
} ->
                 s.server_description <- desc
             | _ -> lprintf_nl "parsing donkeyServers.ServerInfo, unknown field 
%s" (string_of_tag tag)
       ) s.server_tags
@@ -504,7 +504,7 @@
           user_add user_impl;
           List.iter (fun tag ->
               match tag with
-                { tag_name = Field_UNKNOWN "name"; tag_value = String s } ->
+                { tag_name = Field_KNOWN "name"; tag_value = String s } ->
                   user.user_name <- s
               | _ -> ()
           ) user.user_tags;

Index: src/networks/donkey/donkeyUdp.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyUdp.ml,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -b -r1.26 -r1.27
--- src/networks/donkey/donkeyUdp.ml    26 Nov 2006 16:36:29 -0000      1.26
+++ src/networks/donkey/donkeyUdp.ml    3 Dec 2006 20:49:42 -0000       1.27
@@ -322,12 +322,12 @@
       s.server_udp_desc_challenge <- None;
       List.iter (fun tag ->
           match tag with
-              { tag_name = Field_UNKNOWN "version"; tag_value = Uint64 i } ->
+              { tag_name = Field_KNOWN "version"; tag_value = Uint64 i } ->
                 let i = Int64.to_int i in
                 s.server_version <- Printf.sprintf "%d.%d" (i lsr 16) (i land 
0xFFFF);
-           | { tag_name = Field_UNKNOWN "auxportslist" ; tag_value = String 
aux } ->
+           | { tag_name = Field_KNOWN "auxportslist" ; tag_value = String aux 
} ->
                s.server_auxportslist <- aux
-           |  { tag_name = Field_UNKNOWN "dynip" ; tag_value = String dynip } 
->
+           |  { tag_name = Field_KNOWN "dynip" ; tag_value = String dynip } ->
                s.server_dynip <- dynip
             | _ -> ()
       ) t.M.tags;

Index: src/networks/fasttrack/fasttrackNetwork.ml
===================================================================
RCS file: 
/sources/mldonkey/mldonkey/src/networks/fasttrack/fasttrackNetwork.ml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- src/networks/fasttrack/fasttrackNetwork.ml  7 Aug 2005 12:57:22 -0000       
1.2
+++ src/networks/fasttrack/fasttrackNetwork.ml  3 Dec 2006 20:49:42 -0000       
1.3
@@ -34,30 +34,30 @@
 (* any = 0 *)
 let name_of_tag =
   [
-    Field_UNKNOWN "any", 0;
-    Field_UNKNOWN "year", 1;
+    Field_KNOWN "any", 0;
+    Field_KNOWN "year", 1;
     Field_Filename, 2;
     Field_Uid, 3;
     Field_Title, 4;
-    Field_UNKNOWN "time", 5;
+    Field_KNOWN "time", 5;
     Field_Artist, 6;
     Field_Album, 8;
-    Field_UNKNOWN "language", 0x0A;
-    Field_UNKNOWN "keywords", 0x0C;
-    Field_UNKNOWN "resolution", 0x0D;
-    Field_UNKNOWN "genre", 0x0E;
-    Field_UNKNOWN "OS", 0x10;
-    Field_UNKNOWN "bitdepth", 0x11;
+    Field_KNOWN "language", 0x0A;
+    Field_KNOWN "keywords", 0x0C;
+    Field_KNOWN "resolution", 0x0D;
+    Field_KNOWN "genre", 0x0E;
+    Field_KNOWN "OS", 0x10;
+    Field_KNOWN "bitdepth", 0x11;
     Field_Type, 0x12;
-    Field_UNKNOWN "quality", 0x15;
-    Field_UNKNOWN "version", 0x18;
-    Field_UNKNOWN "comment", 0x1A;
+    Field_KNOWN "quality", 0x15;
+    Field_KNOWN "version", 0x18;
+    Field_KNOWN "comment", 0x1A;
     Field_Codec, 0x1C; (* "divx" *)
-    Field_UNKNOWN "rating", 0x1D;
+    Field_KNOWN "rating", 0x1D;
     Field_Size, 0x21;
     Field_Type, 0x22; (* "movie", "video clip",... *)
-    Field_UNKNOWN "49", 49;
-    Field_UNKNOWN "53", 53;
+    Field_KNOWN "49", 49;
+    Field_KNOWN "53", 53;
   ]
 
 type cipher

Index: src/networks/fasttrack/fasttrackProto.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/fasttrack/fasttrackProto.ml,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- src/networks/fasttrack/fasttrackProto.ml    28 Aug 2006 18:19:16 -0000      
1.17
+++ src/networks/fasttrack/fasttrackProto.ml    3 Dec 2006 20:49:42 -0000       
1.18
@@ -108,30 +108,30 @@
 
 let tag_of_tag tag s =
   match tag with
-  | Field_UNKNOWN "any"
+  | Field_KNOWN "any"
   | Field_Filename
   | Field_Uid
   | Field_Title
-  | Field_UNKNOWN "time"
+  | Field_KNOWN "time"
   | Field_Artist
   | Field_Album
-  | Field_UNKNOWN "language"
-  | Field_UNKNOWN "keywords"
-  | Field_UNKNOWN "genre"
-  | Field_UNKNOWN "OS"
+  | Field_KNOWN "language"
+  | Field_KNOWN "keywords"
+  | Field_KNOWN "genre"
+  | Field_KNOWN "OS"
   | Field_Type
-  | Field_UNKNOWN "version"
-  | Field_UNKNOWN "comment"
+  | Field_KNOWN "version"
+  | Field_KNOWN "comment"
   | Field_Codec ->
       string_tag tag s
-  | Field_UNKNOWN "bitdepth"
-  | Field_UNKNOWN "year"
-  | Field_UNKNOWN "rating"
-  | Field_UNKNOWN "quality"
+  | Field_KNOWN "bitdepth"
+  | Field_KNOWN "year"
+  | Field_KNOWN "rating"
+  | Field_KNOWN "quality"
   | Field_Size ->
       let s, _ = get_dynint s 0 in
       int64_tag tag s
-  | Field_UNKNOWN "resolution" ->
+  | Field_KNOWN "resolution" ->
       let n1, pos = get_dynint s 0 in
       let n2, pos = get_dynint s pos in
       { tag_name =  tag; tag_value = Pair (n1, n2) }
@@ -145,7 +145,8 @@
   | Field_Lastseencomplete
   | Field_Mediacodec
   | Field_Medialength
-  | Field_UNKNOWN _ ->
+  | Field_UNKNOWN _
+  | Field_KNOWN _ ->
       string_tag tag s
 
 
@@ -433,7 +434,7 @@
 
           let tags =
             if words <> "" then
-              (Substring, string_tag (Field_UNKNOWN "any") words) :: tags
+              (Substring, string_tag (Field_KNOWN "any") words) :: tags
             else tags in
           buf_int8 b (List.length tags);
 
@@ -458,7 +459,7 @@
               buf_int8 b (
                 try List.assoc tag name_of_tag with
                   _ -> match tag with
-                      Field_UNKNOWN n -> int_of_string n
+                      Field_KNOWN n -> int_of_string n
                     | _ -> assert false);
               buf_string b s;
           ) tags;
@@ -869,7 +870,7 @@
           let tag = try
               List2.assoc_inv tag name_of_tag
             with _ ->
-                Field_UNKNOWN (string_of_int tag)
+                Field_KNOWN (string_of_int tag)
           in
           iter_tags (pos + tag_len) (n-1)
           ((new_tag tag tagdata) :: tags)
@@ -916,7 +917,7 @@
                 List2.assoc_inv tag name_of_tag
               with Not_found ->
                   lprintf "WARNING Unknown tag %d\n" tag;
-                  Field_UNKNOWN (string_of_int tag)
+                  Field_KNOWN (string_of_int tag)
             in
             let v, pos = get_string m (pos+2) in
             let tag = tag_of_tag tag v in
@@ -1939,6 +1940,7 @@
           | Field_Artist
           | Field_Title
           | Field_Codec
+          | Field_KNOWN _
           | Field_UNKNOWN _
           | Field_Filename ->
               tags := (Substring, string_tag field w) :: !tags
@@ -1957,14 +1959,14 @@
         begin
           match field with
           | Field_Size
-          | Field_UNKNOWN _
+          | Field_KNOWN _
             -> tags := (AtLeast, int64_tag field value) :: !tags
           | _ -> ()
         end
     | QHasMaxVal (field, value) ->
         begin
           match field with
-          | Field_UNKNOWN _
+          | Field_KNOWN _
           | Field_Size ->
               tags := (AtMost, int64_tag field value) :: !tags
           | _ -> ()

Index: src/networks/opennap/opennapInteractive.ml
===================================================================
RCS file: 
/sources/mldonkey/mldonkey/src/networks/opennap/opennapInteractive.ml,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -b -r1.26 -r1.27
--- src/networks/opennap/opennapInteractive.ml  1 Oct 2006 17:54:00 -0000       
1.26
+++ src/networks/opennap/opennapInteractive.ml  3 Dec 2006 20:49:42 -0000       
1.27
@@ -78,7 +78,7 @@
         | QHasMinVal (field, value) ->
             begin
               match field with
-                Field_UNKNOWN "bitrate" ->  
+                Field_KNOWN "bitrate" ->  
                   { t with S.bitrate = Some (Int64.to_int value, OP.AtLeast) };
               | Field_Size -> t
               | _ -> t
@@ -86,7 +86,7 @@
         | QHasMaxVal (field, value) ->
             begin
               match field with
-                Field_UNKNOWN "bitrate" -> 
+                Field_KNOWN "bitrate" -> 
                   { t with S.bitrate = Some (Int64.to_int value, OP.AtBest) };
               | Field_Size -> t
               | _ -> t

Index: src/utils/cdk/string2.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/utils/cdk/string2.ml,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- src/utils/cdk/string2.ml    20 Jul 2006 15:30:21 -0000      1.9
+++ src/utils/cdk/string2.ml    3 Dec 2006 20:49:43 -0000       1.10
@@ -322,3 +322,9 @@
     i >= l || p s.[i] && aux (i+1) in
   aux 0
 
+let hex_string_of_string s =
+  let buf = Buffer.create 100 in
+  String.iter (fun c ->
+    Printf.bprintf buf "%02x " (int_of_char c)
+  ) s;
+  Buffer.contents buf

Index: src/utils/cdk/string2.mli
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/utils/cdk/string2.mli,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- src/utils/cdk/string2.mli   20 Jul 2006 15:30:21 -0000      1.10
+++ src/utils/cdk/string2.mli   3 Dec 2006 20:49:43 -0000       1.11
@@ -103,3 +103,4 @@
 val exists: (char -> bool) -> string -> bool
 val existsi: (int -> char -> bool) -> string -> bool
 val for_all: (char -> bool) -> string -> bool
+val hex_string_of_string : string -> string




reply via email to

[Prev in Thread] Current Thread [Next in Thread]