It took me ages to type this for the beta test forum, so I'm posting it again here
Some of the things in forthcoming version 1.40.
Hosts stuff: (hosts = other users, in gnutellaspeak)
Host gathering polling is now variable speed. It goes fast, 500ms between polls, if replies contain all new hosts, and slows down to 5000ms if replies contain all already-known hosts. This will make it fill the hosts list fast when first run, and then slow down when it has got them all. Current fixed-speed polling is about 2500ms, so it should halve the background traffic due to host polling. Background traffic is a bit high at the moment. There is also a 'coders corner' config option 'fast host polling', that makes it poll at 80ms, for debug purposes.
Removed bug where the live hosts list used in host poll replies was only renewed once every 3.5 mins. It renews every 6 seconds now.
Much better choosing of which hosts to send in host poll replies, more random and probably faster code.
Removed the code that periodically scans all the hosts and counts the live/dead/not sure ones. Counting is now done when a host changes state, which is a much better way to do it. Next I will add a binary tree to the hosts list structure, to vastly speed up searching for a host in the list.
Fixed a benign 'all hosts being marked as seeds' bug.
Added flags in host info for 'has answered a question' and 'has asked a question'.
Added some code to gradually filter out hosts who are sending bad port referenc hosts, then removed it again when I found the real cause of the problem (see proxying below).
Removed host lookup for replies as it is not actually needed. Added it, and reply port update for proxied messages on proxy, and acked messages.
Improved 'next host in list' finding, so a null host is never returned unless there are genuinely no useful hosts. Previously a null host was retuned at the end of each list scan.
Added a 'selected host' in hosts display, and made hosts list keep the same entry at the top when redrawing. Did the same for the stations list, but it doesn't seem to work.
Stations stuff:
Station gathering polling also varies its speed in a similar way to host polling. This will speed up list filling, but will slow down propogation of changed station info.
New 'station to forward' chosing code in reply to a stations poll is much more random, and probably evenly distributed now. It was very uneven before, with one or two stations getting many many more forwards than usual. It is also biased toward 'rare' (i.e. new) stations. A station that has not been seen much in a reply to a station poll request will be sent in station poll replies more. This should speed up the initial propogation of new stations.
Checking station age before sending. The bookmarked dead stations where still being forwarded, even though they where old.
Changed way station you are tuned to is marked as alive, so it doesn't get stuck alive on local display when it is not broadcasting but you are tuned to it.
Broadcast stuff:
Fixed updates to broadcasting station info. Name change is immediate, bitrate change gets put to station info, (but may get changed again by autolevel)
Removed possible crash bug when stopping listening with no stream yet, and immediately transmitting.
Added a warning when chosing not 'auto detect' stream type on broadcast config page, as doing this is the only way I know to make an mp3 stream that won't play, and a few broadcasters make mp3 streams that won't play.
Misc stuff:
Update button points to install.htm and not download.htm, and all the other web buttons point to the
www.streamerp2p.domain now. The saved url.txt has the www. subdomain instead of the yp. one now. Changed the url for the default image in the web/view display. Changed the url's for my game to point to my new domain for it,
http://www.spheresofchaos.com.
Chat buttons obey config setting for flash for leavejoin. They should not flash for leavejoiin messages if the titlebar is set to not flash. Or they shouldn't, but it doesn't seem to work.
Streamer version number is now in questions/replies messages, so old versions of streamer can be excluded from the network, for when they cause problems. This code isn't used yet. The version number is also optionally stored in hosts, so I can see what versions are in use.
Revised all the 'quick index' stuff. For all unknown quidx's scanning is done instead. 'Quick index' is a way to speed up finding which particular 'thing' out of several possible 'things' is involved in a connection with a particular host. Instead of scanning all the 'things' until the relevant one is found, the messages from the other host contain the index of the 'thing' that you gave it earlier.
Added a 'strict DeShout' that strips all non-alphanumerics in station names. But it needs improving so it is disabled.
Nice stuff
Fixed one of possibly several bugs in the proxying code, that caused the presence of bad-port aliases in the list. The sender of a message through a proxy would be added to the target's host list with a random port, creating a dud entry cluttering the list up, and probably making the NAT/firewall tunneling stuff broken. This meant connections into NAT hosts probably didn't work, and direct connections between NAT hosts almost certainly didn't work (and they definitely used to when the code was first added). The dud hosts are also one cause of the wacky listener counts in the stations list.
Messages to hosts needing proxies are sent to the host's reply port, even if it has timed out, as well as through the proxy, which should improve NAT tunneling a bit more.
Made polling for feeds happen 8 times a second, much faster than before. Tuning in now happens almost instantly.