Closed Bug 190749 Opened 22 years ago Closed 21 years ago

IRC's CASEMAPPING is not ASCII or latin-1 (except for dalnet)

Categories

(Other Applications :: ChatZilla, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: isomer, Assigned: bugzilla-mozilla-20000923)

Details

(Whiteboard: cz-patch)

Attachments

(1 file)

User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021126 Build Identifier: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021126 When IRC was first invented it was used in finland, so used a finnish characterset. This means it's not your usual ASCII. In addition to the usual A-Z being equivilent to a-z, ~ is equivilent to ^, [ and {, ] and }, | and \. This is for channels and nicks. Note that "~" isn't valid in a nick, but "^" is. This of course causes issues if you joined #\foo\, but messages come to the client that are destined to #|foo| Reproducible: Always Steps to Reproduce: 1. take two clients, join one to #\foo\ 2. join the other to #|foo| 3. talk in the channel from both and hilarity ensues. Expected Results: mozilla should treat equivilent characters as equivilent. http://www.alien.net.au/irc/index.html has information on 005 which explains about the CASEMAPPING 005 parameter for clients so they can tell which transformations the server is using. RFC1459 also documents some of these mappings, but misses ~ being equivilent to ^.
ugh :-/
Status: UNCONFIRMED → NEW
Ever confirmed: true
I'm working on a general 005 patch, so we'll have all the information available to whatever needs it - I think this bug could be done using some toLowerCase/toUpperCase functions set up to use the correct mappings. Might try this in a few days, depending how the 005 patch goes.
Seems the 005 draft has been updated, it's now here: http://www.ietf.org/internet-drafts/draft-brocklesby-irc-isupport-02.txt
The RPL_isupport code has now landed, so this should be relatively easy, since all of the case-conversation is very well defined.
Status: NEW → ASSIGNED
Assignee: rginda → silver
Status: ASSIGNED → NEW
Working on this, got it mostly working, though I'm being hindered a bit by one of the two servers I use completely failing to follow any sort of spec (moznet is fine, of course ;) ).
Status: NEW → ASSIGNED
This patch defines a toLowerCase function on the CIRCServer object, which obays the current casemapping in effect. It also makes the appropriate calls to this function from the various objects. Tab-complection has also been tweaked to work with it, which is very nice to use.
Whiteboard: cz-patch
Comment on attachment 141184 [details] [diff] [review] Use casemapping-correct toLowerCase conversions. Probably should be looked over by Robert Ginda too, if time allows.
Attachment #141184 - Flags: review?(samuel)
Comment on attachment 141184 [details] [diff] [review] Use casemapping-correct toLowerCase conversions. Your switch statement doesn't have any breaks; 'if (d.server)' should be 'if "server" in d'
Attachment #141184 - Flags: review?(samuel) → review-
Comment on attachment 141184 [details] [diff] [review] Use casemapping-correct toLowerCase conversions. My mistake. Fix the cases and r=me
Attachment #141184 - Flags: review- → review+
Comment on attachment 141184 [details] [diff] [review] Use casemapping-correct toLowerCase conversions. Checked in.
I believe the patch just checked in covers this bug, so resolving FIXED. If this is not the case, please reopen.
Status: ASSIGNED → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
Product: Core → Other Applications
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: