Hitakashi / pircbotx

Automatically exported from code.google.com/p/pircbotx
0 stars 0 forks source link

Hostmasks not being set for users in Channel #106

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Have bot connect and join a channel
2. View user objects - they don't have any hostmasks.

What is the expected output? What do you see instead?
Hostmasks should be there. Instead, hostmasks are an empty string.
This leads me to believe that hostmasks are only set on JOIN, and not anytime 
else.

What version of the product are you using? On what operating system?
1.7

Please provide any additional information below.

Original issue reported on code.google.com by rob...@gmail.com on 5 Jan 2013 at 6:16

GoogleCodeExporter commented 9 years ago
Did you wait until the WHO reply completed? PircBotX relies on the WHO reply to 
provide all available information on users in the channel like realname, 
hostmask, operator status, etc.

If you have, can you provide a log?

Original comment by Lord.Qua...@gmail.com on 5 Jan 2013 at 7:05

GoogleCodeExporter commented 9 years ago
I made a user-friendly logger, which doesn't wait for the WHO reply before 
logging the user object.

However, that shouldn't matter - WHO should be able to set the properties of 
User object afterwards, so the logger should still obtain those properties 
somewhere in the middle of it.

It's actually quite weird, because I don't think WHO is being called at all.

Raw log: raw.log
User-objectified log: user.log

Original comment by rob...@gmail.com on 5 Jan 2013 at 7:19

Attachments:

GoogleCodeExporter commented 9 years ago
Is that the entire raw log? Where's the NICK line, sent before the USER line?

This is the part I'm worried about
>>>USER BotSyBot 8 * :BotSy, a lightweight bot of randomness.
<<<:portlane.esper.net 001 Spouty :Welcome to the EsperNet Internet Relay Chat 
Network Spouty

If your nick isn't Spouty but the server assumes it is then it breaks several 
assumptions PircBotX makes. When you join all those channels, no WHO or MODE 
line is sent, which means PircBotX thinks the person joining is someone else. 

Are you by chance connecting through a bouncer?

Original comment by Lord.Qua...@gmail.com on 5 Jan 2013 at 7:43

GoogleCodeExporter commented 9 years ago
Oh, the raw log does have it:

*** Connected to server.
>>>PASS ********
>>>NICK Spouty
>>>USER BotSyBot 8 * :BotSy, a lightweight bot of randomness.
<<<:portlane.esper.net 001 Spouty :Welcome to the EsperNet Internet Relay Chat 
Network Spouty
*** Logged onto server.

But yes, I am connecting through a bouncer. The nickname stays Spouty 
throughout, however.

Original comment by rob...@gmail.com on 5 Jan 2013 at 8:50

GoogleCodeExporter commented 9 years ago
Wow, found a pretty serious bug in how nicks are handled. Turns out that the 
internal nick isn't set if it breaks out of the connect loop early. The reason 
this hasn't been noticed much is because most servers send out the "*** Looking 
up your hostname...", "*** Checking Ident", etc lines which cause the nick to 
be set. However if you don't have those lines since your going through a 
bouncer then the bot still thinks its nick is PircBotX.

Fixed in Revision 10cf2072602f

Note this issue finally made me write a replay server so I can replay logs to 
debug issues, which is going to be very useful in the future

Original comment by Lord.Qua...@gmail.com on 10 Jan 2013 at 9:23

GoogleCodeExporter commented 9 years ago
Ah. Bouncers could definitely do that.

Thanks for fixing the issue! (I'll update my bot to use 1.8-SNAPSHOT in Maven, 
then.)

Original comment by rob...@gmail.com on 10 Jan 2013 at 2:04