Conversation
* Switch to standard replies FAIL codes for new error cases * Existing error numerics such as ERR_CHANOPRIVSNEEDED are preferred * Move normative fallback mechanism to its own section and add an example * Mention case changes explicitly * Don't use RFC keywords in non-normative security section
|
Anyone have any opinions on the unresolved decisions mentioned here? |
I think its fine?
Sounds good to me. |
|
How illegal would it be if I also allowed renaming of users through this? Bitlbee has this thing as a control channel command (not as a server command) Which doesn't support channels, but probably should some day. And the last time I saw this spec I was thinking that my implementation of this command could just quietly accept nicks in addition to channels, and do what the other rename command normally does with nicks. |
|
Sorry if this was mentioned before, but:
Shouldn't it mention that, if the client negotiated the cap, the server should send RENAME instead of doing a JOIN redirection? |
|
@dequis: imo that's no more illegal than all the other cool tricks in bitlbee |
|
@progval I don't think so, no. JOIN redirection with 470 ERR_LINKCHANNEL happens before a JOIN happens. RENAME is for when you're in the channel at the time. |
|
So how should clients know the channel was RENAMEd if they weren't in the channel at the time? |
|
470 has a free form text field. |
|
but it doesn't solve the clients issues this spec aims to solve (moving logs, etc.). And bots can't understand the free form text |
|
Those are fair points. Are you imagining the RENAME being sent after an initial JOIN+burst to the old channel? |
|
I think that would be perfect, yes. |
|
It might be simpler if rename supporting clients were just given a standard FAIL command defined for this purpose, e.g. CHANNEL_RENAMED, so that they can try again, rather than joining the old channel and then renaming it. Fallback can still be 470. |
|
Sounds good too! |
… mechanism. Clarify old name registration restriction.
|
Doing it this way also avoids any issues with clients renaming old channels to new ones twice, potentially corrupting logs or causing conflicts. |
|
Will aim to get this merged to the site as draft next week. Further comments most welcome. |
|
Sorry about the late comment. I have a question about the rationale for this change:
Oragono implements #272 for case canonicalization, which (AFAIK) all current client software ignores. Moreover, my belief is that there's no practical way to specify a Unicode casefolding algorithm that the client and server can fully agree on, since even if both are using PRECIS, it matters which version of the Unicode standard their PRECIS implementations are aware of. My sense is that the most promising approach is for clients to treat server-sent identifiers (in particular, nicknames and channel names) as opaque byte strings. (The most problematic area for this so far is I don't fully understand the claim in this comment that clients doing this are broken. Is it mostly just about the prior existence of m_changecap? I think a reasonable outcome of the rename spec would be that |
|
From discussion: the intent here is to refer only to the This doesn't seem to pose any concerns. Oragono will send the fallback for case changes (whether they fall under CASEMAPPING or UTF8MAPPING), but that's OK because this is just a SHOULD. |
Always send the JOIN-PART couple because oragono might consider channels name to be equivalent while clients would not. See <ircv3/ircv3-specifications#420 (comment)> This reverts commit 0103e14.
|
Does that clear up any confusion? |
|
Yep, thanks. |
|
|
||
| ## Channel redirection | ||
|
|
||
| To help clients that weren't present in the channel during the name change, server implementations MAY keep track of renames and send a `FAIL JOIN CHANNEL_RENAMED` message to clients attempting to join the old channel name, for as long as is deemed necessary by the implementation. |
There was a problem hiding this comment.
Can servers automatically join the new channel when client tries to join the old channel?
There was a problem hiding this comment.
The point is to make it explicit to the client that a rename has happened. An automatic join doesn't give the chance to rename logs first.
Link to the new draft PR: <ircv3/ircv3-specifications#420> Changes in the spec: - Use standard replies instead of numerics: <https://github.com/ircv3/ircv3-specifications/pull/420/files#diff-70e90beef48dc9cf5d784d1e179ea822R44> - Allow RENAME to a different case: <https://github.com/ircv3/ircv3-specifications/pull/420/files#diff-70e90beef48dc9cf5d784d1e179ea822R42> This commit makes oragono send the PART-JOIN fallback even on case-only changes. This is so that clients don't have to worry about oragono's UTF8 casefolding. See the following comments for further info: <ircv3/ircv3-specifications#420 (comment)> Misc fixes: - Remove unused variable, - Add missing calls to utils.SafeErrorParam, - Don't fill replies with the user-provided "oldName", for the same reason as sending the PART-JOIN fallback.
|
Any further comments or things to resolve or can this be merged as draft? |
|
Will merge next week if no further comments. |
…rver to client must always send it, empty if necessary
|
Latest commits make a few changes that go beyond language style:
|
|
Will leave this open for another week to allow any reviews of these changes. |
This PR replaces and builds on #308
Changes from the earlier PR so far:
Decisions that still need to finalised:
channel-renameDecisions made (Edit 25/8/2020):
channel-renamewill be the final (non-draft) cap name