It was introduced in Emacs 23.1, which is our minimum requirement.
Remove conditional require of password.el, which used to be part of
Gnus.
Remove some fboundp calls.
Move the functionality of reading the next complete stanza into a
separate function, and add some test cases for it. I'd like to get rid
of jabber-xml-skip-tag-forward at some point, so a good first step
towards that should be moving calls to it into a function that's easy to
test in isolation.
Improvements to the scanning of XML tags and properties:
- Allow for white space after the parameter assignment sign (=).
- Don't allow a closing angle bracket (>) in parameter names.
- Skip trailing white space before looking for node termination (> or
/>).
- Match syntax table white space rather than enumerating the white space
characters inline.
fsm.el is now in GNU ELPA, so let's use it if it's installed. Also,
let the jabber package depend on it.
Keep a copy in jabber-fallback-lib directory, and use it if necessary.
Notably, this one is still compatible with Emacs 23.
Instead of FSMs being proplists, make them uninterned symbols, storing
their properties in the proplist slot. This makes debugging much more
pleasant, as backtraces no longer display the entire state data multiple
times.
If the current buffer is associated with a dead connection, and there is
a live connection for the same bare JID, suggest that as the default
when prompting for which account to use.
If there is a chat buffer with chat state notifications enabled, and the
connection being used has been lost, and the user has reconnected, and
started typing a message in the chat buffer, then we would try to send
the "typing" notification to the old dead connection, causing an error.
Avoid that by ignoring errors when sending notifications.
See "(elisp) Coding Conventions". Displaying a menu bar indicator if
the package was installed violates its first convention, asides from
that this check yields a truthy value in nearly all cases for people
using this package and therefore makes the other possible branch (is
this mode actually in use?) unused.
In recent Emacs versions, `labels' only provides lexical binding if the
variable lexical-binding is set to t. Avoid the problem by assigning
the functions to simple variables and passing them to jabber-send-iq.
Session establishment was removed in RFCs 6120 and 6121. Some servers
still offer it for backwards compatibility, but some don't. Let's be
compatible with the latter.
New variable `jabber-history-inhibit-received-message-functions'
can contain a list of functions. If any of them returns non-nil, the
given incoming message is not included in the message history.
If an incoming IQ had no 'from' attribute, and we would try to send an
error response to it, then the response actually sent would have
to='nil', as jabber-sexp2xml converts the 'nil' symbol to an attribute
value, but the XML console would fail to display the response. Avoid
this by omitting the 'to' attribute in this case.
If the incoming IQ had no 'id' attribute, the same would happen: the
response sent on the wire would have id='nil', and the console would
fail to print it. Section 8.3.1 of RFC 6120 says that the id attribute
of the response should be empty if the id attribute in the request was
absent, so let's do that here.
Presence stanzas that concern us have status code 110. This is
particularly important to notice when the server changes our nick for
us (status code 210).