You should really try running a local gnutella client and connect to that local client. Some clients (gtk-gnutella for example) should tell you in debug mode when they receive bad handshakes.
In addition you could compare the tcp-dumps of a working client trying to connect with your own client trying to connect. |