This is the new home of the egghelp.org community forum.
All data has been migrated (including user logins/passwords) to a new phpBB version.


For more information, see this announcement post. Click the X in the top right-corner of this box to dismiss this message.

Eggdrop incorrecting reporting channel users

General support and discussion of Eggdrop bots.
Post Reply
User avatar
arfer
Master
Posts: 436
Joined: Fri Nov 26, 2004 8:45 pm
Location: Manchester, UK

Eggdrop incorrecting reporting channel users

Post by arfer »

For some time now I plus another colleague have been experiencing difficulties from our Eggdrop bots on DALnet, specifically with regard to a limit script.

For no apparent reason the bots begin to incorrectly report channel users, which is required to periodically calculate a new limit. I did suspect the frequent netsplits that continue to plague DALnet but now I am unconvinced. This following channel events demonstrate.
[18:44] * Colossus sets mode: +l 26
[18:48] * +giobbe29 (giobbe29@151.83.205.183) Quit (Quit: )
[18:48] * Colossus sets mode: +l 17
A netsplit did occur some 9 minutes before the above events, which split off 7 users including the bot. All but one returned some 2 minutes later including the bot.

After the error occured I used the following Tcl command to determine what the bot returned from calculating channel users. The actual numbers were 19, including the bot itself.
.tcl [llength [chanlist #atlantis]]
Tcl error: invalid command name "11"
Ignore the fact that it returned a Tcl error, that's simply the syntax I used. Look at the number 11. How can that be?

I then restarted the bot, which always corrects the fault.
tcl [llength [chanlist #atlantis]]
Tcl error: invalid command name "19"
Has anyone else experienced this or does anyone have an explanation for it?

The same script has been used for many years, only yielding problems fairly recently. The only things that have changed in that time are the bot version (currently the bot is 1.6.20) and presumably DALnet's bahamut and services code.
I must have had nothing to do
n
nml375
Revered One
Posts: 2860
Joined: Fri Aug 04, 2006 2:09 pm

Post by nml375 »

What about the contents of the list returned by chanlist?
Which nicks were missing?

I'm wondering if this patch might be involved: http://cvs.eggheads.org/viewvc/eggdrop1 ... 0&r2=1.131

Upon refreshing channel members, it will remove any channel-member not included in a /WHO #channel request from the internal list. Generally, anyone being a member of a channel, should be able to see all the members of the channel using the /WHO command, though I wonder if that's really the case here.

Just my first .02$
NML_375
User avatar
arfer
Master
Posts: 436
Joined: Fri Nov 26, 2004 8:45 pm
Location: Manchester, UK

Post by arfer »

I understand what you mean nml375 but unfortunately I can't answer your question until it occurs again. I will be sure to check this.

Would it not be the case that after a restart the /WHO command still returns the same users. That is to say if they were not reported before a restart, then would they be reported after? A restart always fixes the problem.

I do have further evidence. Another bot setting a limit on a different channel went likewise in error some minutes before, and this was immediately after it was split and returned. It does seem like netsplits are involved.
I must have had nothing to do
User avatar
arfer
Master
Posts: 436
Joined: Fri Nov 26, 2004 8:45 pm
Location: Manchester, UK

Post by arfer »

Here is the pertinent output
[18:37] * @Bazza (Barry@say.wow.bz) Quit (ninja.hub.dal.net rapport.ix.us.dal.net)
[18:39] * Bazza (Barry@say.wow.bz) has joined #Ballarat
[18:39] * ChanServ sets mode: +o Bazza
[18:50] * Bazza sets mode: +l 6
[20:59] * arfer sets mode: -o Bazza
[20:59] * Bazza (Barry@say.wow.bz) has left #Ballarat
[20:59] * arfer sets mode: -l
[21:00] * Bazza (Barry@say.wow.bz) has joined #Ballarat
[21:00] * ChanServ sets mode: +o Bazza
[21:02] * Bazza sets mode: +l 12
It is almost as if it is returning channel users on the network it was split on. Since it was the only user split and the limit scripts sets current users plus 5, then the result would be 6.
I must have had nothing to do
Post Reply