Open Bug 639416 Opened 9 years ago Updated 7 years ago

ChatZilla doesn't cope with user not being in channel list


(Other Applications :: ChatZilla, defect)

Not set


(Not tracked)


(Reporter: hmmwhatsthisdo, Assigned: rginda)





(1 file)

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv: Gecko/20110303 Firefox/3.6.15 ( .NET CLR 3.5.30729; .NET4.0C)
Build Identifier: ChatZilla 0.9.86-rdmsoft [XULRunner]

The BNC I use (Geekbouncer, a semi-public cluster of ZNC servers - If anyone asks, this is the Atom server), uses a virtual channel called "~#bnc" (yes, the tilde is the first character) to keep track of users on the same bouncer server, make announcements, etc. This server is un-partable in cZ (not sure if that's another issue altogether, but I'd imagine not), and contains a list of all the ZNC users on that server. All of these users are prefixed with "?", including the client. The client doesn't show up in the userlist, and this causes things to go terribly, terribly wrong. The output window breaks (similar to the problems with Gecko 2 apps and cZ, but with the header and view background), the userlist occasionally breaks, and lots of other things.

TL;DR: Chatzilla doesn't play nice with bouncers. 

Reproducible: Sometimes

Steps to Reproduce:
1. Set up an account on (If you can, ask to be put on Atom in #geekbouncer on InfinityIRC) - This may take a while.
2. Join the Atom server as instructed. You should automatically be put into the channel ~#bnc.
3. Wait a while. Try doing things like hiding the tab, /part -ing, etc.
4. Watch stuff start to go FUBAR.
Actual Results:  
Things just stop working. Usually, [Att. 1 - BMO won't let me upload attachments in the initial post] gets sent to the tab every time I switch to the ~#bnc view. Later, the output window breaks (similar to the problems with Gecko 2 apps and cZ, but with the header and view background), the userlist occasionally breaks, and lots of other things.

Expected Results:  
cZ should work just fine, despite the massive number of things the bouncer does that IRC doesn't really support.

Silver@Moznet/J. Ross devised a little /eval command that seems to have fixed it, along with the rest of the /eval abuse we were giving to my client. 

/eval this.users["hmmwhatsthisdo"] = new CIRCChanUser(this, "hmmwhatsthisdo")

Replace hmmwhatsthisdo with your moznet nickname.

Anyone who wants to test this bug on the same server that I'm experiencing this issue will need to set up an account on a bouncer that uses a partyline module to lock users into a virtual channel. An example of this is the Atom server at Go there, follow the instructions, and make sure you get your account assigned to the Atom server (this may take some asking nicely).
For those working on the code, the problem we traced at least some of the brokeness back to was the ~#bnc channel's users collection - it had a key for the real user (without questionmark) but the value was undefined. Almost anything that did any enumeration of users or tried to find the client's user subsequently fell over.
OK, so, in order to get cZ from the "blank log" phase to a working state, one must do the /eval string mentioned above, then /sync-output. It throws "[ERROR]	TypeError: existingUser is undefined" into that view, but appears to start working nonetheless.
This also happens to me on my ChatZilla on XULRunner install.

(speaking as a GeekBouncer admin) If it turns out that you don't end up being force-joined into the partyline channel, typing /raw JOIN ~#bnc will make you join it. We do have to stay under the connection limit, so don't moan if you don't end up on Atom, Core, or some other server which force-joins you.

You could also set up your own ZNC install <>, load the partyline module, and /raw JOIN ~#somechan. Some shell services also have ZNC preinstalled, saving you of the pain of setting it up on your own system.
Ever confirmed: true
OS: Windows 7 → All
Hardware: x86_64 → All
This is still happening on, by the way.
Also, the /eval command seems to have lost it's effectiveness. It seems to work once in a blue moon, but not as well as it did before .9.86.1.
Still present in 0.9.89. The eval hack no longer works, client responds with
[ERROR]	TypeError: existingUser is undefined

When I switch to one of the channel tabs, the following error appears:
Internal error dispatching command “set-current-view”.
[23:33]	[ERROR]	TypeError: cuser is undefined @ <chrome://chatzilla/content/static.js> 2507
The funny thing is that this message only appears in one of the affected tabs. When I applied the workaround described below, the error messages moved to a different channel tab.

It seems the problem is that variable “cuser” does not initialize on the previous line:
var cuser = client.currentObject.users[];
in function updateTitle (obj)

Also, a different error appears in the error console:
this.users[p] is undefined
Line 2886

I hope this information at least helps people to find a solution using a search engine, because these error messages were apparently never written down anywhere.

In my case, the original cause of the problem is a possible bug in ZNC. For some reason, the bouncer doesn't send my nickname in the list of nicknames along with the others. Simply leaving and joining the channel again resolves the problem.
I have just noticed that the bug also breaks automatic nick completion, tab key actually works like a tab key does in most applications and switches focus to different parts of the window.
You need to log in before you can comment on or make changes to this bug.