agl / xmpp-client

An XMPP client with OTR support
BSD 3-Clause "New" or "Revised" License
365 stars 71 forks source link

JID struct #99

Open mmcco opened 8 years ago

mmcco commented 8 years ago

JIDs are currently stored throughout the program as raw strings. If they were stored in a struct like this:

type JID struct {
    Node string
    Domain string
    Resource string
}

it would be much easier to extract and use the JID's fields. More importantly, it would better enforce JID validity checking, which doesn't seem to happen now. For example, the XMPP Core RFC specifies that:

Each allowable portion of a JID (node identifier, domain identifier, and resource identifier) MUST NOT be more than 1023 bytes in length, resulting in a maximum total size (including the '@' and '/' separators) of 3071 bytes.

If you're interested, I can give it a shot and submit a pull request.

aerth commented 8 years ago

would this also enable using just the Name string for same-server messages instead of using full JID all the time? like.. "bob sends message to alice" instead of "bob@example.com sends to alice@example.com" if on the same domain!

mmcco commented 8 years ago

Honestly, that doesn't sounds like a great idea to me due to handle collisions and the existence of the Real Name field.