RFC 3920 says:
“The error child MUST be sent by a compliant entity (usually a server rather than a client) if it perceives that a stream-level error has occurred.”
“The following stream-level error conditions are defined: […] – the entity has not generated any traffic over the stream for some period of time (configurable according to a local service policy).”
To me this reads as if OpenFire must send the connection-timeout error when it finds that the client times out.
However, it appears as if OpenFire 3.4.5 does not send this error. It will just close the connection without sending anything.