As described above the lusers_handler() function does not return
a RPL_LUSERME reply. This violates RFC2812 which states:
"In processing an LUSERS message, the server
sends a set of replies from RPL_LUSERCLIENT,
RPL_LUSEROP, RPL_USERUNKNOWN,
RPL_LUSERCHANNELS and RPL_LUSERME. When
replying, a server MUST send back
RPL_LUSERCLIENT and RPL_LUSERME. The other
replies are only sent back if a non-zero count
is found for them." - RFC2812, p.52
A short fix would be to include
self.reply(b"255 %s :I have %d clients and 0 servers" % (self.nickname, len(self.server.clients)))
in lusers_handler().
As described above the lusers_handler() function does not return
a RPL_LUSERME reply. This violates RFC2812 which states:
"In processing an LUSERS message, the server
sends a set of replies from RPL_LUSERCLIENT,
RPL_LUSEROP, RPL_USERUNKNOWN,
RPL_LUSERCHANNELS and RPL_LUSERME. When
replying, a server MUST send back
RPL_LUSERCLIENT and RPL_LUSERME. The other
replies are only sent back if a non-zero count
is found for them." - RFC2812, p.52
A short fix would be to include
self.reply(b"255 %s :I have %d clients and 0 servers" % (self.nickname, len(self.server.clients)))
in lusers_handler().