I put up an updated alpha version of Gnutizen - alpha 0.07. I implemented the threads functionality so it can have multiple connections simultaneously. I also put in code so that it can download the files it finds. So now it's actually a useful Gnutella servent, although I have to put in sharing and routing and so forth before a version 1 release, Gnutizen needs to be a good Gnutella citizen (that's where the gnutizen name is derived from after all).
I've been working on 0.08 since. I decided to change from version 0.4 Gnutella handshaking to version 0.6 handshaking. Now I see what version of clients I'm connecting to which is handy, and I also have a better shot at connecting supposedly.
Yesterday and today I've been grafting a Windows GUI onto the program. I see that GTK-Gnutella says it's aiming to separate it's core and interface functions. I've been planning that since day one, as well as being cross-platform, which saves me time in the long run. I never programmed a Windows GUI before aside from a skeleton - I've gotten it so that the connected hosts as well as a tally of how many queries they've seen show up on the GUI though. I realized I needed more room so started looking at tabs or MDI - this seemed like a lot of code changes so I put it aside for today. I like having real-time updates of host connections. In the future I'll probably do an X-Windows GUI.
I just started working on message passing. I'm putting query GUID's and what connection they come from in a table. Soon I will pass on queries, and if queryhits come back I'll look in the table to see where to forward them.
Gnutizen was crapping out on Solaris, but then I saw that my big-endian autoconf marker wasn't showing up. I'll have to fix that. I ran splint (lint) on gnutizen - it marked gethostbyname() as a memory leak but then I saw it was static, so it's not really a leak. Splint found some things to fix though, like unused int's to remove and so forth.