taskmldonkey, a multi-networks file-sharing client - Tasks: task #4194, selectable update for...


You are not allowed to post comments on this tracker with your current authentication level.

task #4194: selectable update for update_server_list (servers/clients/Ov/Kad)

Submitted by:  Adrien <camarade_tux>
Submitted on:  Sat 28 May 2005 08:11:36 PM UTC  
Category:  eDonkey-plugin Priority:  5 - Normal
Status:  Done Assigned to:  None
Open/Closed:  Closed Should Start On:  Sat 28 May 2005 12:00:00 AM UTC
Should be Finished on:  Tue 28 Jun 2005 12:00:00 AM UTC

( Jump to the original submission)

Mon 20 Jun 2005 06:58:30 PM UTC, comment #11: 

Applied to CVS on 2005/06/20

spiralvoice <spiralvoice>
Project Administrator
Sat 18 Jun 2005 08:21:37 PM UTC, comment #10: 
spiralvoice <spiralvoice>
Project Administrator
Sat 11 Jun 2005 07:58:46 PM UTC, comment #9: 

"update on server should be set to false by default"
I prefer to have it true by default so users don´t complain about
empty serverlists. And to have it enabled when there are less
than x servers makes no sense as I want to have a purely static
server list with both options set to false.

spiralvoice <spiralvoice>
Project Administrator
Sat 11 Jun 2005 07:56:22 PM UTC, comment #8: 

UDP callbacks are already removed from the code, see

"this fixes the problem with Lugdunum servers"

in donkeyClient.ml

Only connected servers are asked for a callback.

I updated the patch so only if !!update_server_list_client = true
not connected servers are now added+connected.

I also removed some commented code and removed lots of whitespaces.

spiralvoice <spiralvoice>
Project Administrator
Sat 11 Jun 2005 07:33:07 AM UTC, comment #7: 

> I thought there was UDP callbacks.
> I can remember that one day, on the forum, lugdunum asked for the > UDP callbacks to be removed.

Yes, please look at:

Fri 10 Jun 2005 06:15:00 PM UTC, comment #6: 


*Running really nice
*update on server should be set to false by default (or to true only if there are less than 20 servers in list)

NB: I may have more "firewalled" clients in uploaders than "direct" ones.
Rather, I'm sure. Are there any stats discriminating Low/HighID clients in mldonkey ?

Adrien <camarade_tux>
Tue 31 May 2005 08:42:14 AM UTC, comment #5: 

the hydranode ed2k documnetation seems to cover most of the information about how stuff works http://hydranode.com/docs/ed2k/ed2kproto.php

Mon 30 May 2005 06:34:00 PM UTC, comment #4: 

I don´t know if my code interpretation is right, nor did I do
anything about Lugdunums request because MLDonkey does not have
a well working handling of firewalled clients anyway.

spiralvoice <spiralvoice>
Project Administrator
Mon 30 May 2005 04:22:51 PM UTC, comment #3: 

One word about firewalled clients.

I thought there was UDP callbacks.
I can remember that one day, on the forum, lugdunum asked for the UDP callbacks to be removed.

Adrien <camarade_tux>
Mon 30 May 2005 01:35:53 PM UTC, comment #2: 

First patch version attached, I don´t have much time to debug
currently, so please test it and tell me if some checks are
still missing.

spiralvoice <spiralvoice>
Project Administrator
Mon 30 May 2005 01:17:34 PM UTC, comment #1: 

Currently I am working on this but I found some code where I don´t know what to do:

  DonkeySources.functions.DonkeySources.function_connect <-
    (fun s_uid ->
        match s_uid with
          Direct_address _ ->
            let c = new_client s_uid in
            reconnect_client c
        | Invalid_address _ -> ()
        | Indirect_address (ip, port, id) ->

       if low_id ip && ip_reachable ip then
              query_id ip port id;
This code is called when we are connected by a client.
If the client is firewalled (low_id ip true) we have to make
contact with this client (id) through its server (ip, port).

query_id called is also in donkeyClient.ml
let query_id ip port id =
  let client_ip = client_ip None in

  if ip_reachable client_ip then
    let module Q = DonkeyProtoUdp.QueryCallUdp in
(*    lprintf "Ask connection from indirect client\n"; *)

    let s = check_add_server ip port in
which calles check_add_server, there is a check for "if !!update_server_list"
which, if set to false, breaks the connection between MLDonkey
and that client because the server never receives our "callback"
to the firewalled client.

So currently we can only connect to firewalled clients if they
are on the same server than we.

My plan for implementing the requested feature is to move the
"if !!update_server_list_***" statements into the code where
check_add_server and safe_add_server are called and remove the
checks from the mentioned functions completely.

Some (ip, port) ->  if !!update_server_list_client then safe_add_server ip port

But what to do with the firewalled clients which are on other servers?

spiralvoice <spiralvoice>
Project Administrator
Sat 28 May 2005 08:11:36 PM UTC, original submission:  


At this moment, when update_server_list is set to true, mldonkey will update :
1) ed2k servers when connecting to servers and to clients
2) Ov and Kad nodes (as it searches for sources ?)

I want my ed2k server list to remain clean.
The problem is that servers received when connecting to servers and clients are mainly shit (buggy, dynIP, not a server, RIAA).

So, I have set (as many people) ED2K-update_server_list = false

But this creates another problem : overnet nodes and eMule Kademlia nodes are not updated.

Last week, I had no kad nodes. Bootstrapped kept on failing until I switched the update to true. Within a few seconds I had plenty of nodes (it means they were stored on my computer in kad_boots).

Would it be possible to have (at least) 4 different options ?
For example, ED2K-update_server_list_onserver, ED2K-update_server_list_onclient, OV-update_nodes, KAD-update_nodes

This should greatly improve ov and kad performance and/or efficiency.


Adrien <camarade_tux>


Attached Files
file #3669:  update_server.patch added by spiralvoice (13KiB - application/octet-stream)


Depends on the following items: None found

Items that depend on this one: None found


CC list is empty


Do you think this task is very important?
If so, you can add your encouragement to it.
This task has 0 encouragements so far.

Only logged-in users can vote.




Follow 6 latest changes.

Date Changed by Updated Field Previous Value => Replaced by
2005-07-08 spiralvoice StatusReady For Test => Done
    Open/ClosedOpen => Closed
2005-06-20 spiralvoice StatusNone => Ready For Test
2005-06-11 spiralvoice Attached File#180 => Removed
2005-06-11 spiralvoice Attached File- => Added update_server.patch, #196
2005-05-30 spiralvoice Attached File- => Added update_server.patch, #180

Back to the top

Powered by Savane 3.7