After many hours of trying to debug, debugging why i can't debug, debugging the debugger debugging, then eventually trying to isolate the vista problem
I have identified that whatever it is, i can't see it... everything looks correct, everything is being returned correctly and winmx s getting the exact answers it is meant to get... right before deciding to disconnect for no reason
Primary seems to be fine for just about everyone, and secondary seems fine on patch 2.2 without the filtering, but not on 3.0... so i've come up with a fix
Basically if i remove all of the code for filtering on secondary then in theory this should solve it, of course the obvious problem then is there is no filtering on secondary... wrong
a side effect of the way the filtering is implemented in primaries is that they also filter the results for any secondaries connected through them. so as long as you always connect through 3.0 patched primaries it would still be filtered.
So I've come up with a patch that for primary will filter and behave exactly like the normal patch, but for secondary it will deliberately block all non-patched primaries, and will only connect through a primary that is filtering.
Unfortunately I have been unable to test this theory out because for some unknown reason my vista test system has now decided it loves winmx, and the normal patch is working just fine (nice timing), so of course i don't know if it fixed it or not. It may have done absolutely nothing and not have improved things one bit for all I know.
If you're using vista and having problems with 3.0 on secondary, give this patch a try (pop it in the winmx folder, over the top of the existing file) and let me know if it works or not.
This is also suitable for non-vista users, if they want to be forced to only use filtering primaries (would give a more stable connection) however it is not really required for them.
patch removed, please see this thread for the download