tristanls / discover

Node discovery based on Kademlia DHT protocol.
MIT License
69 stars 10 forks source link

Transport does not guarantee arbiter properties to be transported #9

Open tristanls opened 10 years ago

tristanls commented 10 years ago

Currently, the transport interface guarantees that contact.id and contact.data will be transported. Additionally, the transport interface reserves contact.transport property for internal use.

The behavior, when transported, of properties used by the example arbiters, such as contact.vectorClock or contact.workerNodes is undefined.

It would not do to simply add these properties into contact.data, because the user might not give a crap that vector clocks or other magic are being used.

One approach would be to require the transport interface to guarantee that contact.arbiter property is transported and standardize around the arbiters using that much in the same way that transports standardize around using contact.transport. This approach allows the user to only care about contact.id and contact.data, while not preventing arbiters to rewrite contact.data based on information in contact.arbiter.

tristanls commented 10 years ago

This is a protocol clarification bug. discover-tcp-transport, for example, currently transmits all properties of the contact object.