Bug 30635

Summary: Telepathy-Idle fails to parse user list on irc.euirc.net
Product: Telepathy Reporter: badcel <marcel.tiede>
Component: idleAssignee: Telepathy bugs list <telepathy-bugs>
Status: RESOLVED FIXED QA Contact: Telepathy bugs list <telepathy-bugs>
Severity: normal    
Priority: medium CC: egphilippov, rishi.is
Version: unspecified   
Hardware: x86 (IA32)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Bug Depends on:    
Bug Blocks: 35504    
Attachments: The debug output of telepathy-idle
Proposed fix

Description badcel 2010-10-05 12:47:42 UTC
If an IRC channel is joined on irc.euirc.net the userlist in Empathy is empty (only the own nick is shown). If joining the same channel with Pidgin everything works like expected.

If users are joining the channel afterwards, they are displayed in the userlist, only the initial loading of the userlist fails.

In euirc network there are certain user roles indicated via special signs in front of the nickname (like "@" for operators, "%" for halfops, "*" for owner, "!" for admins, "+" for voice), which seems to be the problem.

Debug output:
...
DEBUG: _parse_message: parsing ":irc.bas.ch.euirc.net 353 gfasd = #rx-et :gfasd Dobby2 %Way @badcel %terra-prime !Koga "
** (telepathy-idle:3980): DEBUG: _parse_and_forward_one: message code 23
** (telepathy-idle:3980): DEBUG: _parse_atom: parsing atom "irc.bas.ch.euirc.net" as I
** (telepathy-idle:3980): DEBUG: _parse_atom: ignored token
** (telepathy-idle:3980): DEBUG: _parse_atom: parsing atom "353" as I
** (telepathy-idle:3980): DEBUG: _parse_atom: ignored token
** (telepathy-idle:3980): DEBUG: _parse_atom: parsing atom "gfasd" as I
** (telepathy-idle:3980): DEBUG: _parse_atom: ignored token
** (telepathy-idle:3980): DEBUG: _parse_atom: parsing atom "=" as I
** (telepathy-idle:3980): DEBUG: _parse_atom: ignored token
** (telepathy-idle:3980): DEBUG: _parse_atom: parsing atom "#rx-et" as r
** (telepathy-idle:3980): DEBUG: _parse_atom: set handle 1
** (telepathy-idle:3980): DEBUG: _parse_atom: parsing atom "gfasd" as C
** (telepathy-idle:3980): DEBUG: idle_nickname_is_valid: Validating nickname 'gfasd' with strict mode 0
** (telepathy-idle:3980): DEBUG: _parse_atom: set handle 1
** (telepathy-idle:3980): DEBUG: _parse_atom: set modechar
** (telepathy-idle:3980): DEBUG: _parse_atom: parsing atom "Dobby2" as C
** (telepathy-idle:3980): DEBUG: idle_nickname_is_valid: Validating nickname 'Dobby2' with strict mode 0
** (telepathy-idle:3980): DEBUG: _parse_atom: set handle 3
** (telepathy-idle:3980): DEBUG: _parse_atom: set modechar
** (telepathy-idle:3980): DEBUG: _parse_atom: parsing atom "%Way" as C
** (telepathy-idle:3980): DEBUG: idle_nickname_is_valid: Validating nickname '%Way' with strict mode 0
** (telepathy-idle:3980): DEBUG: idle_nickname_is_valid: invalid character 37
** (telepathy-idle:3980): DEBUG: _parse_and_forward_one: failed to parse ":irc.bas.ch.euirc.net 353 gfasd = #rx-et :gfasd Dobby2 %Way @badcel %terra-prime !Koga "
** (telepathy-idle:3980): DEBUG: _parse_message: parsing ":irc.bas.ch.euirc.net 366 gfasd #rx-et :End of /NAMES list."
...

Regarding the user rights the server transmits:

** (telepathy-idle:3980): DEBUG: _parse_message: parsing ":irc.bas.ch.euirc.net 005 gfasd NETWORK=euIRCnet WATCH=128 SAFELIST PREFIX=(qaohv)*!@%+ CHANMODES=bewI,k,flBL,cimnprstACHKNOQRSVWXY CHANTYPES=#&+ KICKLEN=307 KNOCK MAP MAXBANS=100 MODES=6 NICKLEN=30 SILENCE=5 TOPICLEN=307 WALLCHOPS MAXCHANNELS=20 MAXTARGETS=20 :are available on this server"

With the string "PREFIX=(qaohv)*!@%+" representing the different modes a user can get.

Greetings, Marcel
Comment 1 badcel 2010-10-06 08:24:46 UTC
Tested with Ubuntu 10.04 (see debug) and Ubuntu 10.10 RC (same behavior).
Comment 2 badcel 2010-11-09 09:27:39 UTC
Created attachment 40155 [details]
The debug output of telepathy-idle

Shows the complete session from login until logout.
Comment 3 badcel 2010-11-09 09:28:56 UTC
Tested with Fedora 14 (same behaviour). I attached a complete log of telepathy-idle.
Comment 4 Debarshi Ray 2011-03-19 11:05:54 UTC
Created attachment 44618 [details] [review]
Proposed fix

This is just a temporary hack. The proper way to do it would be to handle the RPL_ISUPPORT numeric (http://tools.ietf.org/html/draft-brocklesby-irc-isupport-03), and look for the PREFIX parameter.

However that will require more intrusive changes, and it is better to do it in a separate patch.
Comment 5 Will Thompson 2011-03-21 06:42:35 UTC
(In reply to comment #4)
> Created an attachment (id=44618) [details]
> Proposed fix

Looks good, I've applied it to master. Thanks!

The fix will be released in telepathy-idle 0.1.9, hopefully later this week.

> This is just a temporary hack. The proper way to do it would be to handle the
> RPL_ISUPPORT numeric
> (http://tools.ietf.org/html/draft-brocklesby-irc-isupport-03), and look for the
> PREFIX parameter.
> 
> However that will require more intrusive changes, and it is better to do it in
> a separate patch.

I've filed bug 35504 for this.

In a perfect world, the fix for this bug could have included a test case; but I think that's the kind of thing that could also be folded into the more intrusive changes. It's not like there was a test for the symbols Idle already supported. :)
Comment 6 egphilippov 2012-04-08 23:44:54 UTC
Similar behavior is observed on Rusnet, channels #philosophy and (cyrillic channel name) #философия (both of these channels have half-ops present), but the behavior is OK at the Rusnet channel #philosophia (only ops and normal users present).

Empathy 2.30.3, Ubuntu 10.04.4 LTS, telepathy-idle_0.1.6-1_i386.deb.
Comment 7 egphilippov 2012-04-11 02:06:10 UTC
At RIZON irc.rizon.net, PREFIX=(qaohv)~&@%+

This should be added to a patch, since this patch doesn't work at Rizon.
Comment 8 egphilippov 2012-04-11 02:08:39 UTC
Rizon's TCP port for testing is 6667
Comment 9 egphilippov 2012-04-11 02:40:57 UTC
hmm. please ignore all of my previous comments about Rizon, these comments are irrelevant and misguiding. some stuff deleted the applied patch :( re-closing the bug.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.