Obviously I had left the win32 port un-attended for way too long. I received word yesterday, that Hydranode was not performing well on win32 platform, compared to what it does on linux, so I headed down to investigate.
A quick look at log-analyzer output, and few greps showed two big flaws:
- We'r losing a LOT of connections before they are even established. This is clearly due to the XP / SP2's connection-limiting stuff. While a proper workaround is being developed, lowering connection-limit to 50 seems to clear out the issue.
- We were using 16bit length-value in three of our low-level I/O routines, which caused major breakage for data packets, where data payload exceeded 65k. This never surfaced before, since data packets never exceeded 20k margin, but strangely, recently I'v started receiving up-to 180k data packets, which exposed this issue.
While the first one is still waiting for a proper workaround, the second one was fixed. That second one was causing complete dropping of all clients that transfered us data, which basically meant we only got data from old / non-mule clients.
Other misc changes:
- [ed2k/hnsh] Added add command to modules/ed2k/serverlist dir.
- Save settings on startup right after loading them, to create settings files on first startup.
- Added compile-time self-checks to verify that all our types are of required size (no surprised on ports to wierd hardware, please)
- [ed2k] Cleanup at SourceInfo::addOffered/setReqFile methods, which should lower the de-syncness of various source-counters (and fix few dangling pointer issues between various containers)
Madcat, ZzZz.