OF-2289: Do not use Interner<String>
com.google.common.collect.Interner is not safe when used with Strings: as with String.intern(), an equal string value could end up being used as a mutex for unrelated code blocks (introducing the risk of deadlocks between code blocks that have no functional relation).
When an Interner instance is used with anohter immutable type, the generated mutexes are local to the Interner instance. This allows, for example, for the same JID value to be used with two different Interner instances, without the resulting mutexes influencing each-other.
This commit replaces all occurrances of Interner<String>.
OF-2315: First log, then process
By first logging the error condition, the log file will contain a cause for the problem if processing the problem generates a (new) stacktrace (which hides the original one).
OF-2315: Don't attempt to reply to IQ responses
An IQ 'result' or 'error' stanza cannot be responded to. Attempting to do so might cause endless loops of responses to responses, if the code would not have nullpointered out because of a lack of child element to respond to.
Emiel van der Herberg <emiel.van.der.herberg@marviq.com>
b5ad6278231ebf268199d5df035b212b88c3c20a
OF-2314 Prevent problem in one s2s connection close from blocking others.