Closed
Bug 1172360
Opened 9 years ago
Closed 9 years ago
Handle join MUC command without passing server domain in XMPP
Categories
(Chat Core :: XMPP, defect)
Chat Core
XMPP
Tracking
(Not tracked)
RESOLVED
FIXED
1.6
People
(Reporter: abdelrahman, Assigned: abdelrahman)
References
Details
Attachments
(1 file, 3 obsolete files)
3.17 KB,
patch
|
aleth
:
review+
|
Details | Diff | Splinter Review |
After landing of bug 1010342, we can obtain the domain if it is not passed to _parseJID in xmpp.jsm (e.g command join is used "/join room").
Assignee | ||
Updated•9 years ago
|
Assignee: nobody → a.ahmed1026
Summary: Handle in _parseJID if domain is not provided → Handle join MUC command without passing server domain in XMPP
Assignee | ||
Comment 1•9 years ago
|
||
Attachment #8626300 -
Flags: review?(aleth)
Comment 2•9 years ago
|
||
Comment on attachment 8626300 [details] [diff] [review] rev 1 - handle join without server domain Review of attachment 8626300 [details] [diff] [review]: ----------------------------------------------------------------- ::: chat/protocols/xmpp/xmpp.jsm @@ +1456,5 @@ > resource: match[3] > }; > + let jid; > + if (!result.node && result.domain) > + [result.node, result.domain] = [result.domain, result.node]; Changing parseJid in this way for the convenience of /join is not a good idea. JIDs without nodes do happen (e.g. when sending/receiving service discovery messages) and we want to be sure to handle them correctly. JIDs without domains are (if I remember correctly) not allowed. Instead, move this swap to the /join code.
Attachment #8626300 -
Flags: review?(aleth) → review-
Assignee | ||
Comment 3•9 years ago
|
||
(In reply to aleth [:aleth] from comment #2) > Changing parseJid in this way for the convenience of /join is not a good > idea. JIDs without nodes do happen (e.g. when sending/receiving service > discovery messages) and we want to be sure to handle them correctly. JIDs > without domains are (if I remember correctly) not allowed. > > Instead, move this swap to the /join code. This change is not only for join, but also for any case like (node/resource or node). Because the regular expression parses node in domain and that is not correct as we do not provide "@" to be parsed as domain.
Comment 4•9 years ago
|
||
(In reply to Abdelrhman Ahmed [:abdelrhman] from comment #3) > (In reply to aleth [:aleth] from comment #2) > > Changing parseJid in this way for the convenience of /join is not a good > > idea. JIDs without nodes do happen (e.g. when sending/receiving service > > discovery messages) and we want to be sure to handle them correctly. JIDs > > without domains are (if I remember correctly) not allowed. > > > > Instead, move this swap to the /join code. > > This change is not only for join, but also for any case like (node/resource > or node). > Because the regular expression parses node in domain and that is not correct > as we do not provide "@" to be parsed as domain. Aha! Well spotted. I didn't realize parseJid was broken. Maybe the regex could be improved? jid = [ localpart "@" ] domainpart [ "/" resourcepart ] In any case, and as this is an important function, I think this is a perfect case for test-driven development. Please add an xpschell test for parseJid. You can write the test first and then change the code until your tests pass ;) Documentation: https://developer.mozilla.org/en-US/docs/Mozilla/QA/Writing_xpcshell-based_unit_tests The full spec is rfc 6122 btw.
Comment 5•9 years ago
|
||
(In reply to aleth [:aleth] from comment #4) > > Because the regular expression parses node in domain and that is not correct > > as we do not provide "@" to be parsed as domain. Hmm, I'm not sure I understood you correctly here. Just to be clear, the @ is optional, the domainpart is not: jid = [ localpart "@" ] domainpart [ "/" resourcepart ]
Assignee | ||
Comment 6•9 years ago
|
||
(In reply to aleth [:aleth] from comment #5) > Hmm, I'm not sure I understood you correctly here. Just to be clear, the @ > is optional, the domainpart is not: > jid = [ localpart "@" ] domainpart [ "/" resourcepart ] Ah, so the regex works well for _parseJID, we need to add another parser beside join command to check if the domain part is provided and handle that otherwise. jid = localpart [ "@" domainpart ] [ "/" resourcepart ]
Assignee | ||
Comment 7•9 years ago
|
||
Attachment #8626300 -
Attachment is obsolete: true
Attachment #8626461 -
Flags: review?(aleth)
Comment 8•9 years ago
|
||
Comment on attachment 8626461 [details] [diff] [review] rev 2 - handle join without server domain Review of attachment 8626461 [details] [diff] [review]: ----------------------------------------------------------------- Don't forget to change the help string too! It's great you've added a test despite not changing _parseJid! Please move the test to a separate bug though, as it's not related to this bug. ::: chat/protocols/xmpp/xmpp-commands.jsm @@ +17,5 @@ > > // Get account object. > function getAccount(aConv) getConv(aConv)._account; > > +function parseJID(aJID, aMucService) { You don't need all this duplication if instead you change parseDefaultChatName on the account.
Attachment #8626461 -
Flags: review?(aleth) → review-
Assignee | ||
Comment 9•9 years ago
|
||
Attachment #8626461 -
Attachment is obsolete: true
Attachment #8626732 -
Flags: review?(aleth)
Comment 10•9 years ago
|
||
Comment on attachment 8626732 [details] [diff] [review] rev 3 - handle join without server domain Review of attachment 8626732 [details] [diff] [review]: ----------------------------------------------------------------- Looks good, but please fix the help string!
Attachment #8626732 -
Flags: review?(aleth) → review-
Assignee | ||
Comment 11•9 years ago
|
||
Attachment #8626765 -
Flags: review?(aleth)
Assignee | ||
Updated•9 years ago
|
Attachment #8626732 -
Attachment is obsolete: true
Comment 12•9 years ago
|
||
Comment on attachment 8626765 [details] [diff] [review] rev 4 - handle join without server domain Review of attachment 8626765 [details] [diff] [review]: ----------------------------------------------------------------- Thanks!
Attachment #8626765 -
Flags: review?(aleth) → review+
Updated•9 years ago
|
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → 1.6
You need to log in
before you can comment on or make changes to this bug.
Description
•