1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
cdef enum SSLProtocolState:
UNWRAPPED = 0
DO_HANDSHAKE = 1
WRAPPED = 2
FLUSHING = 3
SHUTDOWN = 4
cdef enum AppProtocolState:
# This tracks the state of app protocol (https://git.io/fj59P):
#
# INIT -cm-> CON_MADE [-dr*->] [-er-> EOF?] -cl-> CON_LOST
#
# * cm: connection_made()
# * dr: data_received()
# * er: eof_received()
# * cl: connection_lost()
STATE_INIT = 0
STATE_CON_MADE = 1
STATE_EOF = 2
STATE_CON_LOST = 3
cdef class _SSLProtocolTransport:
cdef:
Loop _loop
SSLProtocol _ssl_protocol
bint _closed
object context
cdef class SSLProtocol:
cdef:
bint _server_side
str _server_hostname
object _sslcontext
object _extra
object _write_backlog
size_t _write_buffer_size
object _waiter
Loop _loop
_SSLProtocolTransport _app_transport
bint _app_transport_created
object _transport
object _ssl_handshake_timeout
object _ssl_shutdown_timeout
object _sslobj
object _sslobj_read
object _sslobj_write
object _incoming
object _incoming_write
object _outgoing
object _outgoing_read
char* _ssl_buffer
size_t _ssl_buffer_len
object _ssl_buffer_view
SSLProtocolState _state
size_t _conn_lost
AppProtocolState _app_state
bint _ssl_writing_paused
bint _app_reading_paused
size_t _incoming_high_water
size_t _incoming_low_water
bint _ssl_reading_paused
bint _app_writing_paused
size_t _outgoing_high_water
size_t _outgoing_low_water
object _app_protocol
bint _app_protocol_is_buffer
object _app_protocol_get_buffer
object _app_protocol_buffer_updated
object _handshake_start_time
object _handshake_timeout_handle
object _shutdown_timeout_handle
cdef _set_app_protocol(self, app_protocol)
cdef _wakeup_waiter(self, exc=*)
cdef _get_extra_info(self, name, default=*)
cdef _set_state(self, SSLProtocolState new_state)
# Handshake flow
cdef _start_handshake(self)
cdef _check_handshake_timeout(self)
cdef _do_handshake(self)
cdef _on_handshake_complete(self, handshake_exc)
# Shutdown flow
cdef _start_shutdown(self, object context=*)
cdef _check_shutdown_timeout(self)
cdef _do_read_into_void(self, object context)
cdef _do_flush(self, object context=*)
cdef _do_shutdown(self, object context=*)
cdef _on_shutdown_complete(self, shutdown_exc)
cdef _abort(self, exc)
# Outgoing flow
cdef _write_appdata(self, list_of_data, object context)
cdef _do_write(self)
cdef _process_outgoing(self)
# Incoming flow
cdef _do_read(self)
cdef _do_read__buffered(self)
cdef _do_read__copied(self)
cdef _call_eof_received(self, object context=*)
# Flow control for writes from APP socket
cdef _control_app_writing(self, object context=*)
cdef size_t _get_write_buffer_size(self)
cdef _set_write_buffer_limits(self, high=*, low=*)
# Flow control for reads to APP socket
cdef _pause_reading(self)
cdef _resume_reading(self, object context)
# Flow control for reads from SSL socket
cdef _control_ssl_reading(self)
cdef _set_read_buffer_limits(self, high=*, low=*)
cdef size_t _get_read_buffer_size(self)
cdef _fatal_error(self, exc, message=*)
|