Re: [libtorrent] ssl support?
Brought to you by:
arvidn
From: Arvid N. <c9...@cs...> - 2005-03-23 15:10:21
|
Liu Shuai wrote: > [SNIP] > Where is the peer communication being done? Is peer_connection the only > class I need to look at? I have not read through the whole library yet > and hope you can give me some pointer before doing so. > I am hoping that I can change/swap the implementation with minimal > impact on other existing code. peer_connetion handles all peer-messages. There is a function peer_connection::dispatch_message() that is called every time some data is received, not only when a whole message is received. (The reason for this is to be able to record the amount of data received with higher precision than 16kB blocks). The dispatch function will use a message lookup table to call the appropriate handler, depending on the message id. The table is initialized at the top of peer_connection.cpp and contains member function pointers to the handlers. I would suggest a feature like this within the extension protocol that is used by libtorrent. Meaning that you add another extension to the extension_index enum in peer_connection.hpp and then add a handler for that message in peer_connection::on_extended(). You would also have to add a function that can send pieces using this extension. The function peer_connection::send_data() contains the code that actually sends the piece-messages. That code would have to use your function to send pieces in case the peer supports the extension. (if this extension would be used, it is likely that you don't want to use the non-encrypted piece-message since that would defeat the whole purpose). You could probably copy-paste most code from peer_connection::on_piece() and add decryption. Anyway, it may be easier just to make a patch that always encrypts without implementing it as an extension. Since you probably don't want to use encryption together with clients that don't support it anyway. -- Arvid Norberg |