@@ -355,7 +355,7 @@ cdef class SSLProtocol:
355
355
self ._handshake_timeout_handle.cancel()
356
356
self ._handshake_timeout_handle = None
357
357
358
- cdef get_buffer_c (self , size_t n, char ** buf, size_t* buf_size):
358
+ cdef get_buffer_impl (self , size_t n, char ** buf, size_t* buf_size):
359
359
cdef size_t want = n
360
360
if want > SSL_READ_MAX_SIZE:
361
361
want = SSL_READ_MAX_SIZE
@@ -368,17 +368,7 @@ cdef class SSLProtocol:
368
368
buf[0 ] = self ._ssl_buffer
369
369
buf_size[0 ] = self ._ssl_buffer_len
370
370
371
- def get_buffer (self , size_t n ):
372
- # This pure python call is still used by some very peculiar test cases
373
-
374
- cdef:
375
- char * buf
376
- size_t buf_size
377
-
378
- self .get_buffer_c(n, & buf, & buf_size)
379
- return PyMemoryView_FromMemory(buf, buf_size, PyBUF_WRITE)
380
-
381
- def buffer_updated (self , size_t nbytes ):
371
+ cdef buffer_updated_impl(self , size_t nbytes):
382
372
self ._incoming_write(PyMemoryView_FromMemory(
383
373
self ._ssl_buffer, nbytes, PyBUF_WRITE))
384
374
@@ -394,6 +384,18 @@ cdef class SSLProtocol:
394
384
elif self ._state == SHUTDOWN:
395
385
self ._do_shutdown()
396
386
387
+ def get_buffer (self , size_t n ):
388
+ # This pure python call is still used by some very peculiar test cases
389
+ cdef:
390
+ char * buf
391
+ size_t buf_size
392
+
393
+ self .get_buffer_impl(n, & buf, & buf_size)
394
+ return PyMemoryView_FromMemory(buf, buf_size, PyBUF_WRITE)
395
+
396
+ def buffer_updated (self , size_t nbytes ):
397
+ self .buffer_updated_impl(nbytes)
398
+
397
399
def eof_received (self ):
398
400
""" Called when the other end of the low-level stream
399
401
is half-closed.
@@ -546,6 +548,7 @@ cdef class SSLProtocol:
546
548
if self ._app_state == STATE_INIT:
547
549
self ._app_state = STATE_CON_MADE
548
550
self ._app_protocol.connection_made(self ._get_app_transport())
551
+
549
552
self ._wakeup_waiter()
550
553
551
554
# We should wakeup user code before sending the first data below. In
@@ -558,7 +561,7 @@ cdef class SSLProtocol:
558
561
new_MethodHandle(self ._loop,
559
562
" SSLProtocol._do_read" ,
560
563
< method_t> self ._do_read,
561
- None , # current context is good
564
+ None ,
562
565
self ))
563
566
564
567
# Shutdown flow
@@ -758,7 +761,7 @@ cdef class SSLProtocol:
758
761
new_MethodHandle(self ._loop,
759
762
" SSLProtocol._do_read" ,
760
763
< method_t> self ._do_read,
761
- None , # current context is good
764
+ None ,
762
765
self ))
763
766
except ssl_SSLAgainErrors as exc:
764
767
pass
@@ -794,10 +797,12 @@ cdef class SSLProtocol:
794
797
data.append(chunk)
795
798
except ssl_SSLAgainErrors as exc:
796
799
pass
800
+
797
801
if one:
798
802
self ._app_protocol.data_received(first)
799
803
elif not zero:
800
804
self ._app_protocol.data_received(b' ' .join(data))
805
+
801
806
if not chunk:
802
807
# close_notify
803
808
self ._call_eof_received()
@@ -887,11 +892,12 @@ cdef class SSLProtocol:
887
892
self ._app_reading_paused = False
888
893
if self ._state == WRAPPED:
889
894
self ._loop._call_soon_handle(
890
- new_MethodHandle(self ._loop,
891
- " SSLProtocol._do_read" ,
892
- < method_t> self ._do_read,
893
- context,
894
- self ))
895
+ new_MethodHandle1(self ._loop,
896
+ " SSLProtocol._do_read" ,
897
+ < method1_t> self ._do_read,
898
+ context,
899
+ self ,
900
+ context))
895
901
896
902
# Flow control for reads from SSL socket
897
903
0 commit comments