1*e7be843bSPierre Pronchery@startuml 2*e7be843bSPierre Pronchery 3*e7be843bSPierre Pronchery[*] --> IDLE 4*e7be843bSPierre Pronchery 5*e7be843bSPierre ProncheryESTABLISHING : PROBE_TIMEOUT: SendProbeIfAnySentPktsUnacked() [default] 6*e7be843bSPierre Pronchery 7*e7be843bSPierre Proncherystate ACTIVE { 8*e7be843bSPierre Pronchery state ESTABLISHING { 9*e7be843bSPierre Pronchery PROACTIVE_VER_NEG : 10*e7be843bSPierre Pronchery PRE_INITIAL : 11*e7be843bSPierre Pronchery INITIAL_EXCHANGE_A : 12*e7be843bSPierre Pronchery REACTIVE_VER_NEG : 13*e7be843bSPierre Pronchery INITIAL_EXCHANGE_B : 14*e7be843bSPierre Pronchery INITIAL_EXCHANGE_CONTINUED : 15*e7be843bSPierre Pronchery HANDSHAKE : 16*e7be843bSPierre Pronchery HANDSHAKE_CONTINUED : 17*e7be843bSPierre Pronchery HANDSHAKE_COMPLETED : 18*e7be843bSPierre Pronchery HANDSHAKE_CONFIRMED : 19*e7be843bSPierre Pronchery 20*e7be843bSPierre Pronchery [*] --> PROACTIVE_VER_NEG : use proactive VN? 21*e7be843bSPierre Pronchery [*] --> PRE_INITIAL : else 22*e7be843bSPierre Pronchery PROACTIVE_VER_NEG --> PRE_INITIAL : RX:VER_NEG 23*e7be843bSPierre Pronchery PROACTIVE_VER_NEG --> PROACTIVE_VER_NEG : PROBE_TIMEOUT 24*e7be843bSPierre Pronchery PRE_INITIAL --> INITIAL_EXCHANGE_A : ε 25*e7be843bSPierre Pronchery INITIAL_EXCHANGE_A --> INITIAL_EXCHANGE_B : RX:RETRY 26*e7be843bSPierre Pronchery INITIAL_EXCHANGE_A --> INITIAL_EXCHANGE_CONTINUED : RX:INITIAL 27*e7be843bSPierre Pronchery INITIAL_EXCHANGE_A --> REACTIVE_VER_NEG : RX:VER_NEG 28*e7be843bSPierre Pronchery 29*e7be843bSPierre Pronchery REACTIVE_VER_NEG --> PRE_INITIAL : ε 30*e7be843bSPierre Pronchery 31*e7be843bSPierre Pronchery INITIAL_EXCHANGE_B --> INITIAL_EXCHANGE_CONTINUED : RX:INITIAL 32*e7be843bSPierre Pronchery INITIAL_EXCHANGE_CONTINUED --> HANDSHAKE : TLS:HAVE_EL(HANDSHAKE) 33*e7be843bSPierre Pronchery 34*e7be843bSPierre Pronchery HANDSHAKE --> HANDSHAKE_CONTINUED : RX:HANDSHAKE 35*e7be843bSPierre Pronchery HANDSHAKE_CONTINUED --> HANDSHAKE_COMPLETED : TLS:HANDSHAKE_COMPLETE 36*e7be843bSPierre Pronchery HANDSHAKE_COMPLETED --> HANDSHAKE_CONFIRMED : RX:1RTT[HANDSHAKE_DONE] 37*e7be843bSPierre Pronchery } 38*e7be843bSPierre Pronchery OPEN : 39*e7be843bSPierre Pronchery [*] --> ESTABLISHING 40*e7be843bSPierre Pronchery} 41*e7be843bSPierre Pronchery 42*e7be843bSPierre Proncherystate TERMINATING { 43*e7be843bSPierre Pronchery CLOSING : 44*e7be843bSPierre Pronchery DRAINING : 45*e7be843bSPierre Pronchery CLOSING --> DRAINING : RX:ANY[CONNECTION_CLOSE] 46*e7be843bSPierre Pronchery} 47*e7be843bSPierre Pronchery 48*e7be843bSPierre ProncheryHANDSHAKE_CONFIRMED --> OPEN : ε 49*e7be843bSPierre Pronchery 50*e7be843bSPierre ProncheryIDLE --> ACTIVE : APP:CONNECT 51*e7be843bSPierre Pronchery 52*e7be843bSPierre ProncheryIDLE --> TERMINATED : APP:CLOSE 53*e7be843bSPierre ProncheryTERMINATING --> TERMINATED : TERMINATING_TIMEOUT, RX:STATELESS_RESET 54*e7be843bSPierre Pronchery 55*e7be843bSPierre ProncheryACTIVE --> CLOSING : APP:CLOSE 56*e7be843bSPierre ProncheryACTIVE --> DRAINING : RX:ANY[CONNECTION_CLOSE] 57*e7be843bSPierre ProncheryACTIVE --> TERMINATED : IDLE_TIMEOUT, RX:STATELESS_RESET 58*e7be843bSPierre Pronchery 59*e7be843bSPierre Pronchery@enduml 60