Here is the general classification ("User" here refers to the remote
node that we are disconnecting from):

    2xx     The User did nothing wrong, but the servent chose to close
            the connection: it is either exiting normally (200), or
            the local manager of the servent requested an explicit
            close of the connection (201).

    4xx     The User did something wrong, as far as the servent is concerned.
            It can send packets deemed too big (400), too many duplicate
            messages (401), relay improper queries (402), relay messages
            deemed excessively long-lived [hop+TTL > max] (403), send too
            many unknown messages (404), the node reached its inactivity
            timeout (405), it failed to reply to a ping with TTL=1 (406),
            or it is not sharing enough (407).

    5xx     The servent noticed an error, but it is an "internal" one.
            It can be an I/O error or other bad error (500), a protocol
            desynchronization (501), the send queue became full (502).

Here are the officially registered BYE codes and their meaning:
(entries marked [UNUSED] are not used by gtk-gnutella)

200		Servent Shutdown
201		User Manual Removal
202		Local Node Preferred
203		Changing Peer Mode
204		RESERVED
205		RESERVED
206		RESERVED
207		RESERVED
208		RESERVED
209		RESERVED
210		User Timeout Expired [UNUSED]
299		Generic User-side Condition [UNUSED]

400		Message Too Large
401		Too Many Duplicates
402		Relayed Improper Queries [UNUSED]
403		Relayed High TTL Message
404		Too Many Unknown Messages [UNUSED]
405		Activity Timeout
406		No Reply to Alive Pings
407		Not Sharing Enough [UNUSED]
408		Sent Message With TTL=0
409		Too Many Errors
410		Excessive Messages [UNUSED]
411		Invalid Payload [UNUSED]
412		Security Violation
413		Invalid QRP Sequence
414		Leaf Node Relaying Messages
499		Generic Peer-side Error [UNUSED]

500		Servent Internal Error
501		Protocol Desynchronized
502		Send Queue Full
503		Servent Closing Connection [UNUSED]
504		RESERVED
505		Protocol Not Supported
599		Generic Servent-side Error [UNUSED]

Finally, recall that the above are generic categories of events.
For instance, gtk-gnutella will send:

	400 Too large ping message (543255552 bytes)

The code is the classifier, the message given can be more explicit.
