|
|
Here is a summary of the XMPP connection finite state machine used by ibex.
|
|
|
|
|
|
[Original graph](https://adiaholic.github.io/gsoc2020/2020/07/12/Chapter-8-Reworking-FSM.html) was made by Aditya Borikar.
|
|
|
|
|
|
```mermaid
|
|
|
graph TD
|
|
|
Disconnected{{XMPP Client Disconnected}} -->|start connection| DirectTLS(Connect with direct TLS)
|
|
|
DirectTLS -->|TLS connection failure| TCPConnect(Connect with StartTLS)
|
|
|
TCPConnect -->|TCP connection success| TCPConnected{{TCP connected}}
|
|
|
TCPConnected -->|send <stream:stream>| NotSecureXmppStreamInitiated{{XMPP Stream initiated and not encrypted}}
|
|
|
NotSecureXmppStreamInitiated -->|find starttls stream feature and send <starttls>| beginStartTls{Start StartTLS}
|
|
|
beginStartTls -->|server accepts starttls| XmppStreamInitiated
|
|
|
beginStartTls -->|server refuses starttls| Disconnected
|
|
|
DirectTLS -->|TLS connection success| XmppStreamInitiated{{XMPP Stream initiated with secure connection}}
|
|
|
|
|
|
``` |
|
|
\ No newline at end of file |