Another full day of stabilization and fine-tuning. Da list:
- No more crashes when running out of servers in serverlist
- hnanalyzer perl script (by chemical), which parses hydranode.log and generates nice statistics graphs. Found in utils/ subdir, resulting graphs go to $(HOME)/.hydranode/graph1.png
- Fixed bug #6 (crash in Hash::operator=).
- Handle the situation where client sends StartUploadReq WITHOUT including filehash, and hasnt been given UploadInfo (or QueueInfo) status yet gracefully (e.g. ignore the packet).
- Some clients (using ClientID 0xe8) send AcceptUploadReq when transfering is already in progress, this caused us to send chunkreqs multiple times, leading to some chunks being transfered multiple times. Now chunkreqs are only sent when needed.
- Lower select() timeout to 50ms. This affects entire application running speed (used to be 100ms), thus raising the precision of speed calculations, and other things.
- Added passive source aquisition - when client wants a file from us, and we are also downloading it, request download from that client too. (Just for the record: eMule seems to do it also)
- Fixed duplicate sources problem; ClientList now uses multi_index lookups for id-lookups.
- Hydranode should recover from some more odd network behaviours on remote client side more gracefully.
- make dist works correctly again. Entire testsuit also now compiles again.
- Added latest source tarball to downloads page.
Next up... don't know yet. There's UDP stuff, but I'm not sure I want to go there just yet - would like to get more TCP-based protocol features done, like secident, some useful packets (multipacket for example), source exchange, and some more...
Madcat, ZzZz
PS: The two test-files are now at 58% and 40% completed, respectivly. Last night the core ran 7 hrs before crashing (the server connection bug), we'll see how long it survives this time.