| View previous topic :: View next topic |
| Author |
Message |
arfer Master

Joined: 26 Nov 2004 Posts: 436 Location: Manchester, UK
|
Posted: Thu Dec 08, 2011 4:34 pm Post subject: Eggdrop incorrecting reporting channel users |
|
|
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.
| Quote: |
[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.
| Quote: |
.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.
| Quote: |
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 |
|
| Back to top |
|
 |
nml375 Revered One
Joined: 04 Aug 2006 Posts: 2857
|
Posted: Thu Dec 08, 2011 5:09 pm Post subject: |
|
|
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.6/src/mod/irc.mod/chan.c?r1=1.130&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, idling at #eggdrop@IrcNET |
|
| Back to top |
|
 |
arfer Master

Joined: 26 Nov 2004 Posts: 436 Location: Manchester, UK
|
Posted: Thu Dec 08, 2011 5:27 pm Post subject: |
|
|
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 |
|
| Back to top |
|
 |
arfer Master

Joined: 26 Nov 2004 Posts: 436 Location: Manchester, UK
|
Posted: Thu Dec 08, 2011 5:34 pm Post subject: |
|
|
Here is the pertinent output
| Quote: |
[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 |
|
| Back to top |
|
 |
|