+
    Bi"                        ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t^ RIt^ RIt ^ RIt^ RIHt ^ RIHt ]P(                  R8H  t]'       g   RM^@tR t ! R R] P0                  4      t ! R	 R
]P4                  4      t]P8                  ! ]RJ R4       ! R R]P:                  4      4       t ! R R4      t ! R R]P@                  4      t! ! R R]!4      t" ! R R]!4      t#R#   ] d    Rt Li ; i)    N)support)utilsdarwin   c                  D    \         P                  P                  R 4       R # N)asyncioevents_set_event_loop_policy     1/usr/lib/python3.14/test/test_asyncio/test_ssl.pytearDownModuler       s    NN))$/r   c                   J   a  ] tR t^$t o RtRtRR ltR tR tR t	R t
RtV tR# )	MyBaseProtoNc                    R V n         RV n        ^ V n        Ve;   \        P                  ! VR7      V n        \        P                  ! VR7      V n        R # R # )NINITIALloop)	transportstatenbytesr	   Future	connecteddoneselfr   s   &&r   __init__MyBaseProto.__init__(   sB    
$^^6DND1DI r   c                    Wn         V P                  R 8X  g   Q V P                  4       hRV n        V P                  '       d   V P                  P                  R4       R# R# )r   	CONNECTEDN)r   r   r   
set_resultr   r   s   &&r   connection_madeMyBaseProto.connection_made0   sI    "zzY&2

2& 
>>>NN%%d+ r   c                    V P                   R 8X  g   Q V P                   4       hV ;P                  \        V4      ,          un        R# )r!   N)r   r   lenr   datas   &&r   data_receivedMyBaseProto.data_received7   s/    zz[(4$**4(s4y r   c                X    V P                   R 8X  g   Q V P                   4       hRV n         R# )r!   EOFN)r   r   s   &r   eof_receivedMyBaseProto.eof_received;   s$    zz[(4$**4(
r   c                    V P                   R9   g   Q V P                   4       hRV n         V P                  '       d   V P                  P                  R4       R# R# )r!   CLOSEDN)r!   r-   )r   r   r"   r   excs   &&r   connection_lostMyBaseProto.connection_lost?   sE    zz11=4::=1
999II  & r   )r   r   r   r   r   r   )__name__
__module____qualname____firstlineno__r   r   r   r$   r*   r/   r5   __static_attributes____classdictcell____classdict__s   @r   r   r   $   s-     ID2,!' 'r   r   c                   ,   a  ] tR t^Ft o R tR tRtV tR# )MessageOutFilterc                    Wn         R # r   msg)r   rC   s   &&r   r   MessageOutFilter.__init__G   s    r   c                @    V P                   VP                   9   d   R # R# )FTrB   )r   records   &&r   filterMessageOutFilter.filterJ   s    88vzz!r   rB   N)r7   r8   r9   r:   r   rG   r;   r<   r=   s   @r   r@   r@   F   s      r   r@   zNo ssl modulec            
       $  a a ] tR t^Pt oR0t]P                  tV 3R ltV 3R lt	R]
P                  RRR]P                  R^R^
/R	 lt]
P                  ]P                  3R
 ltR tR tR1R ltRR/R lt]P(                  R 4       tR tR tR tR t]P4                  ! ^R2RR7      R 4       tR tR tR tR tR t R t!R3R lt"R  t#R! t$R" t%R# t&R$ t'R% t(]P4                  ! ^R2RR7      R& 4       t)R' t*R( t+R) t,R* t-R+ t.R, t/R- t0R. t1R/t2Vt3V ;t4# )4TestSSLc                   < \         SV `  4        \        P                  ! 4       V n        V P                  V P                  4       V P                  V P                  P                  4       R # r   )supersetUpr	   new_event_loopr   set_event_loop
addCleanupcloser   	__class__s   &r   rM   TestSSL.setUpV   sB    **,	DII&		(r   c                   < V P                   P                  4       '       g!   \        P                  ! V P                   4       V P	                  4        \
        P                  ! 4        \        SV `!  4        R # r   )	r   	is_closed
test_utilsrun_briefly
doCleanupsr   
gc_collectrL   tearDownrR   s   &r   r[   TestSSL.tearDown\   sI    yy""$$""499-r   familyaddrNtimeoutbacklogmax_clientsc                  VfL   V\        \        RR 4      8X  d4   \        P                  ! 4       ;_uu_ 4       pVP                  pR R R 4       MRp\        P                  ! V\        P
                  4      pVf   \        R4      hV^ 8:  d   \        R4      hVP                  V4        VP                  V4       VP                  V4       \        YYT4      #   + '       g   i     L; i  \         d   p	TP                  4        T	hR p	?	ii ; i)NAF_UNIXtimeout is required#only blocking sockets are supported	127.0.0.1r   )getattrsockettempfileNamedTemporaryFilenameSOCK_STREAMRuntimeError
settimeoutbindlistenOSErrorrQ   TestThreadedServer)
r   server_progr]   r^   r_   r`   ra   tmpsockexs
   &&$$$$$   r   
tcp_serverTestSSL.tcp_servere   s     <D990022c88D 32 (}}VV%7%78?455a<DEE 	IIdOKK 
 "k; 	;) 32   	JJLH	s#   C("C* C'	*D5DDc                    \         P                   ! V\         P                  4      pVf   \        R4      hV^ 8:  d   \        R4      hVP                  V4       \	        WW4      # )Nrd   re   )ri   rm   rn   ro   TestThreadedClient)r   client_progr]   r_   rv   s   &&&& r   
tcp_clientTestSSL.tcp_client   s\     }}VV%7%78?455a<DEE !. 	.r   c                F    V P                   ! VR \        P                  /VB # r]   )rx   ri   rc   r   argskwargss   &*,r   unix_serverTestSSL.unix_server       FV^^FvFFr   c                F    V P                   ! VR \        P                  /VB # r   )r}   ri   rc   r   s   &*,r   unix_clientTestSSL.unix_client   r   r   c                    \         P                  ! \         P                  4      pV;P                  \         P                  ,          un        VP                  W4       V# r   )ssl
SSLContextPROTOCOL_TLS_SERVERoptionsOP_NO_SSLv2load_cert_chain)r   certfilekeyfile
sslcontexts   &&& r   _create_server_ssl_context"TestSSL._create_server_ssl_context   s?    ^^C$;$;<
coo-""85r   disable_verifyTc               x    \         P                  ! 4       pR Vn        V'       d   \         P                  Vn        V# )F)r   create_default_contextcheck_hostname	CERT_NONEverify_mode)r   r   r   s   &$ r   _create_client_ssl_context"TestSSL._create_client_ssl_context   s-    //1
$)
!%(]]J"r   c              #     "   \         P                  ! R 4      p\        R4      pVP                  V4        Rx  VP	                  V4       R#   TP	                  T4       i ; i5i)r	   zhas no effect when using sslN)logging	getLoggerr@   	addFilterremoveFilter)r   loggerrG   s   &  r   _silence_eof_received_warning%TestSSL._silence_eof_received_warning   sT      ""9-!"@A 	('F's   3A#A A#A  A#c                     V P                   P                  4        V P                  V4       R #   T P                  T4       i ; ir   )r   stopfailr   rw   s   &&r   _abort_socket_testTestSSL._abort_socket_test   s,    	IINNIIbMDIIbMs	   / Ac                ,    \         P                  ! 4       # r   )r	   rN   r.   s   &r   new_loopTestSSL.new_loop   s    %%''r   c                ,    \         P                  ! 4       # r   )r	   DefaultEventLoopPolicyr.   s   &r   
new_policyTestSSL.new_policy   s    --//r   c                   "   \        V\        P                  4      '       g   R #  VP                  4       G R j  xL
  R #  L  \        \
        3 d     R # i ; i5ir   )
isinstancer	   StreamWriterwait_closedBrokenPipeErrorConnectionError)r   objs   &&r   r   TestSSL.wait_closed   sF     #w3344	//###1 		s7   #AA A A A A AAAAF)sizememusedry_runc                2  a aaaaaa	a
aaa ^ oVo\         P                  oR\        ,          oR\        ,          oS P                  \        P
                  \        P                  4      oS P                  4       o	. o
VVVV 3R loVVV	V
V 3R loVVVV VV3R lpS P                  4       ;_uu_ 4        S P                  P                  V! 4       4       RRR4       S P                  SS4       S
 F  pVP                  4        K  	  R#   + '       g   i     L=; i)r   c                   <"   V P                  \        S4      4      G R j  xL
 pSP                  VS4       VP                  R4       V P                  \        S4      4      G R j  xL
 pSP                  VS4       VP	                  R\        R4      \        R4      .4       VP                  4       G R j  xL
  VP                  4        S^,          oR #  L Lq L#5iN   OKs   SP   A   M	readexactlyr'   assertEqualwrite
writelines	bytearray
memoryviewdrainrQ   readerwriterr)   A_DATAB_DATACNTr   s   && r   handle_client7TestSSL.test_create_server_ssl_1.<locals>.handle_client          ++CK88DT6*LL++CK88DT6*uioz$7GHI,,.  LLN1HC 9 9 !5   CCAC&C'AC6C7 CCCc                    <a a"   \         P                  ! 4       oVVV VVV3R  lpSP                  V4      pVP                  4        SP	                  V4       SG Rj  xL
  R#  L5i)c                   <  V P                  S4       V P                  S4       V P                  S4       V P                  ^4      pSP	                  VR4       V P                  S4       V P                  ^4      pSP	                  VR4       V P                  4        SP                  P                  SP                  R4       R#   \         d2   pSP                  P                  SP                  T4        Rp?R# Rp?ii ; i)   r      SPAMN)starttlsconnectsendrecv_allr   rQ   r   call_soon_threadsafer"   	Exceptionset_exception)	rv   r)   rw   r   r   r^   client_sslctxfutr   s	   &  r   progCTestSSL.test_create_server_ssl_1.<locals>.test_client.<locals>.prog   s    IMM-0LL&IIf%==+D$$T51IIf%==+D$$T73JJL
 II223>>4H ! JII2233D3DbIIJs   BC D&C<<DNr	   r   r}   startappend)	r^   r   clientr   r   r   r   clientsr   s	   f  @r   test_client5TestSSL.test_create_server_ssl_1.<locals>.test_client   sJ     .."CI I( __T*FLLNNN6"IIs   AA&A$A&c                    <"   / p \        \        P                  R 7      p \        P                  ! SR^ 3R\
        P                  RS
/V B G Rj  xL
 p VP                  pS	P                  V4       V^ ,          P                  4       p. p\        S4       F  pVP                  S! V4      4       K  	  \        P                  ! \        P                  ! V!  S4      G Rj  xL
  S	P                  P                  VP                   4       VP#                  4       G Rj  xL
  R#  L LE L
  S	P                  P                  TP                   4       TP#                  4       G Rj  xL 
  i ; i5i)ssl_handshake_timeoutrg   r]   r   N)dictr   SHORT_TIMEOUTr	   start_serverri   AF_INETsockets
assertTruegetsocknameranger   wait_forgatherr   	call_soonrQ   r   )extrassrv	srv_socksr^   tasks_TIMEOUT	TOTAL_CNTr   r   sslctxr   s         r   r   6TestSSL.test_create_server_ssl_1.<locals>.start_server  s-    F0E0EFF,,Q ~~ 	
  C(KK		* |//1y)ALLT!23 * &&w~~u'=wGGG 		##CII.oo'''+" H ( 		##CII.oo'''s[   AE,D#E,BD) D% D) $8E,D'E,%D) 'E,)9E)"E%#E))E,N   AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA   BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB)r   LONG_TIMEOUTBUF_MULTIPLIERr   rW   ONLYCERTONLYKEYr   r   r   run_until_completer   r   )r   r   r   r   r   r   r   r   r   r   r   r   r  r   s   f&  @@@@@@@@@@r   test_create_server_ssl_1 TestSSL.test_create_server_ssl_1   s    	&&~-~-00!3!3
 779	 	 	 	:	( 	(6 //11II((8 2 	i(FKKM  21s   0!DD	c                B  a aaaaaa	a
 S P                   P                  R 4       ^ o^oR\        ,          oR\        ,          oS P                  \        P
                  \        P                  4      o
S P                  4       oVVV V
3R lo	VVVVV 3R lpVVVVV 3R lpVVV V	3R lpS P                  4       ;_uu_ 4        V! V4       R R R 4       S P                  4       ;_uu_ 4        V! V4       R R R 4       R #   + '       g   i     L;; i  + '       g   i     R # ; i)Nc                 B  < V P                  SR R7       V P                  \        S4      4      pSP                  VS4       V P	                  R4       V P                  \        S4      4      pSP                  VS4       V P	                  R4       V P                  4        R# )Tserver_sider   r   N)r   r   r'   r   r   rQ   )rv   r)   r   r   r   r  s   & r   server4TestSSL.test_create_connection_ssl_1.<locals>.server5  s    MM   " ==V-DT6*IIe==V-DT6*IIgJJLr   c                   <"   / p\        \        P                  R 7      p\        P                  ! V RSRR/VB G Rj  xL
 w  r#VP                  S4       SP                  VP                  ^4      G Rj  xL
 R4       VP                  S4       SP                  VP                  ^4      G Rj  xL
 R4       S^,          oVP                  4        SP                  V4      G Rj  xL
  R#  L Ly LA L5i)r   r   server_hostname Nr   r   )
r   r   r   r	   open_connectionr   r   r   rQ   r   )	r^   r   r   r   r   r   r   r   r   s	   &   r   r   4TestSSL.test_create_connection_ssl_1.<locals>.clientD  s     F0E0EFF#*#:#:$!$ !#$ 	$ NF LL 6#5#5a#88%@LL 6#5#5a#88'B 1HCLLN""6***! 9 9 +sE   :C4C,6C44C.59C4.C0/6C4%C2&C4.C40C42C4c                   <"   \         P                   ! 4       pVP                  V 4       \        P                  ! VSR R7      G Rj  xL
 w  r#VP	                  S4       SP                  VP                  ^4      G Rj  xL
 R4       VP	                  S4       SP                  VP                  ^4      G Rj  xL
 R4       S^,          oVP                  4        SP                  V4      G Rj  xL
  VP                  4        R#  L L LQ L5i)r  )rv   r   r  Nr   r   )	ri   r   r	   r  r   r   r   rQ   r   )	r^   rv   r   r   r   r   r   r   r   s	   &   r   client_sock9TestSSL.test_create_connection_ssl_1.<locals>.client_sockZ  s     ==?DLL#*#:#:! "$$ $NF
 LL 6#5#5a#88%@LL 6#5#5a#88'B 1HCLLN""6***JJL!$ 9 9 +sH   ADD6D=D>9D7D	86D.D/DD	DDc                 N  < ^ oR pSP                  SSSR7      ;_uu_ 4       p. p\        S4       F$  pVP                  V ! VP                  4      4       K&  	  SP                  P                  V! V!  4       RRR4       SP                  SS4       R#   + '       g   i     L$; i)r   c                  F   "   \         P                  ! V !  G R j  xL
 #  L5ir   r	   r   r   s   *r   _gatherBTestSSL.test_create_connection_ssl_1.<locals>.run.<locals>._gathers  s     $^^U3333   !!ra   r`   Nrx   r   r   r^   r   r	  r   	coror  r   r   r   r   r   r   r  s	   &    r   run1TestSSL.test_create_connection_ssl_1.<locals>.runo  s    C4 -6)2 ! 4 47:y)ALLchh0 * 		,,We_=4 S),4 4   ABB$	r  r  )	r   set_exception_handlerr  r   rW   r  r  r   r   )r   r   r  r%  r   r   r   r   r   r  r  s   f   @@@@@@@r   test_create_connection_ssl_1$TestSSL.test_create_connection_ssl_1&  s    		''-	~-~-00
 779	 		+ 	+,	 	*	- 	-& //11K 2 //11 21 21 211s   >	C:'	D:D
	D	c           	       a a S P                  4       oS P                  P                  R  4       R pVV 3R lpS P                  V^^R7      ;_uu_ 4       pS P	                  \
        R4      ;_uu_ 4        S P                  P                  V! VP                  4      4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)c                      R # r   r   r   s   *r   <lambda>CTestSSL.test_create_connection_ssl_slow_handshake.<locals>.<lambda>      dr   c                      V P                  R4       V P                  4        R#   \         d     Li ; i  T P                  4        i ; i)r   N   r   ConnectionAbortedErrorrQ   rv   s   &r   r  ATestSSL.test_create_connection_ssl_slow_handshake.<locals>.server  s>    k* 

 *  

s   % 36 36 Ac           	         <"   \         P                  ! V R SRRRR/ G Rj  xL
 w  rVP                  4        SP                  V4      G Rj  xL
  R#  L1 L5i)r   r  r  r   g      ?N)r	   r  rQ   r   r^   r   r   r   r   s   &  r   r   ATestSSL.test_create_connection_ssl_slow_handshake.<locals>.client  se     #*#:#:$+!$+ !#$+ '*	$+ +NF
 LLN""6***+ +s!   AA*AAAAr!  zSSL handshake.*is taking longerN)r   r   r(  rx   assertRaisesRegexr4  r	  r^   )r   r  r   r   r   s   f   @r   )test_create_connection_ssl_slow_handshake1TestSSL.test_create_connection_ssl_slow_handshake  s    779 			''(:;		+ __V)*%&  ( (+.''*68 8 		,,VCHH-=>	8	( (8 8	( ( (s$   C4,B2	 C2C=CC	c           	     ,  a aa S P                   P                  R  4       S P                  \        P                  \        P
                  4      oS P                  RR7      oV3R lpVV 3R lpS P                  V^^R7      ;_uu_ 4       pS P                  \        P                  4      ;_uu_ 4        S P                   P                  V! VP                  4      4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)c                      R # r   r   r-  s   *r   r.  GTestSSL.test_create_connection_ssl_failed_certificate.<locals>.<lambda>  r0  r   F)r   c                    <  V P                  SR R7       V P                  4        V P                  4        R#   \        P                  \        3 d     L/i ; i  T P                  4        i ; iTr  N)r   r   r   SSLErrorrr   rQ   )rv   r  s   &r   r  ETestSSL.test_create_connection_ssl_failed_certificate.<locals>.server  s^     $  &  

 LL'*  

s!   #8 AA AA A+c           	         <"   \         P                  ! V R SRRR\        P                  / G Rj  xL
 w  rVP	                  4        SP                  V4      G Rj  xL
  R#  L1 L5i)r   r  r  r   N)r	   r  r   r   rQ   r   r8  s   &  r   r   ETestSSL.test_create_connection_ssl_failed_certificate.<locals>.client  sk     #*#:#:$=!$= !#$= '.&;&;	$= =NF
 LLN""6***= +s!   ,A%A!*A%A#A%#A%r!  N)r   r(  r   rW   r  r  r   rx   assertRaisesr   SSLCertVerificationErrorr	  r^   )r   r  r   r   r   r  s   f   @@r   -test_create_connection_ssl_failed_certificate5TestSSL.test_create_connection_ssl_failed_certificate  s    		''(:;00
 77u7M			+ __V)*%&  ( (+.""3#?#?@@		,,VCHH-=> A	( ( A@	( ( (s$   	(D1,C/	D/C?:DD	c           	     *  a aaa \         P                  ! 4       o. oS P                  P                  V3R  l4       RoV3R lpVV 3R lpS P	                  V^^R7      ;_uu_ 4       pS P                  \        P                  4      ;_uu_ 4        S P                  P                  V! VP                  4      4       RRR4       RRR4       S P                  S4       S P                  S. 4       R#   + '       g   i     L=; i  + '       g   i     LH; i)c                 &   < SP                  V4      # r   )r   )r   ctxmessagess   &&r   r.  4TestSSL.test_ssl_handshake_timeout.<locals>.<lambda>  s    (//#:Nr   Fc                    <  V P                  R4       V P                  4        R#   \         d    Ro L!i ; i  T P                  4        i ; i)r   TNr2  r3  )rv   server_side_aborteds   &r   r  2TestSSL.test_ssl_handshake_timeout.<locals>.server  sB    k* 

 * +&*#+ 

s   & 69 69 Ac                    <"   \         P                  ! SP                  P                  ! \         P                  .V O5R SRRRR/ R4      G Rj  xL
  R#  L5i)r   r  r  r   g      $@      ?N)r	   r   r   create_connectionProtocol)r^   r   r   s   &r   r   2TestSSL.test_ssl_handshake_timeout.<locals>.client  sd     ""		++$$00 &0 %'	0
 +/0   s   AAAAr!  N)rW   simple_client_sslcontextr   r(  rx   rF  r	   TimeoutErrorr	  r^   r   r   )r   r  r   r   r   rM  rP  s   f   @@@r   test_ssl_handshake_timeout"TestSSL.test_ssl_handshake_timeout  s     #;;= 		''(NO#		 __V)*%&  ( (+.""7#7#788		,,VCHH-=> 9	( 	+, 	2& 98	( (s$   &(D,C/	:D/C?:DD	c           	       a aaaa \         P                  ! 4       oS P                  P                  R  4       RoRoR p ! VV3R lR\        P
                  4      oVVV 3R lpS P                  V^^R7      ;_uu_ 4       pS P                  \        4      ;_uu_ 4        S P                  P                  V! VP                  4      4       RRR4       RRR4       S'       d/   S'       d   S P                  R4       R# S P                  R	4       R# S'       d   S P                  R
4       R# R#   + '       g   i     Lk; i  + '       g   i     Lv; i)c                     R # r   r   r   rL  s   &&r   r.  <TestSSL.test_ssl_handshake_connection_lost.<locals>.<lambda>       $r   Fc                 H    V P                  R 4       V P                  4        R# )r   N)recvrQ   r5  s   &r   r  :TestSSL.test_ssl_handshake_connection_lost.<locals>.server  s    IIdOJJLr   c                   :   <a  ] tR tRt o V3R ltV3R ltRtV tR# )?TestSSL.test_ssl_handshake_connection_lost.<locals>.ClientProtoi
  c                   < R oR# TNr   )r   r   connection_made_calleds   &&r   r$   OTestSSL.test_ssl_handshake_connection_lost.<locals>.ClientProto.connection_made  	    )-&r   c                   < R oR# rf  r   )r   r4   connection_lost_calleds   &&r   r5   OTestSSL.test_ssl_handshake_connection_lost.<locals>.ClientProto.connection_lost  ri  r   r   N)r7   r8   r9   r:   r$   r5   r;   r<   )r>   rk  rg  s   @r   ClientProtord  
  s     .. .r   rm  c                 j   <"   SP                   P                  ! S.V O5R SRR/ G Rj  xL
 3 R#  L5i)r   r  r  N)r   rT  )r^   rm  r   r   s   &r   r   :TestSSL.test_ssl_handshake_connection_lost.<locals>.client  sF     ))--$$ "$ !#	$ $ % $s   &313r!  Nz$unexpected call to connection_lost()zEunexpected call to connection_lost() withoutcalling connection_made()z$unexpected call to connection_made())rW   rW  r   r(  r	   rU  rx   rF  ConnectionResetErrorr	  r^   r   )r   r  r   r   rm  r   rk  rg  s   f   @@@@r   "test_ssl_handshake_connection_lost*TestSSL.test_ssl_handshake_connection_lost  s     #;;= 			''(>?!&!&	
	. 	.'** 	.	% __V)*%&  ( (+.""#788		,,VCHH-=> 9	( "%		@A		 6 7#II<= $ 98	( (s$   ?D?,D,		D?,D<7D??E	c                   \         P                  p\         P                  ! V4      pVP                  \        P
                  \        P                  4       \        VR 4      '       d   RVn        \         P                  Vn
        \         P                  ! V4      p\        VR 4      '       d   RVn        \         P                  Vn
        R# )r   FN)r   r   r   r   rW   r  r  hasattrr   r   r   )r   protoserver_contextclient_contexts   &   r    test_ssl_connect_accepted_socket(TestSSL.test_ssl_connect_accepted_socket*  s    ''.&&z':':J<N<NO>#344,1N)%(]]".>#344,1N)%(]]"r   c                  aaaaaaa V P                   o ! VV3R  lR\        4      p\        P                  ! \        P                  4      pVP	                  R4       VP                  ^4       VP                  4       oRoRoRoVVVV3R lp\        P                  ! VRR7      pVP                  4        VP                  4       w  rxV! SR7      oSSn         / p	V'       d   \        \        P                  R	7      p	SP                  SP                  ! V3R
 lV3RV/V	B 4      p
SP!                  4        VP#                  4        VP#                  4        VP%                  ^4       V P'                  VP)                  4       4       V P+                  SP,                  R4       V P+                  SP.                  \1        S4      4       V P+                  SS4       V
P3                  4       w  rV'       d'   V P5                  RVP6                  P8                  4       VP#                  4        V P                   P;                  \<        P>                  ! R4      4       R# )c                   D   <a a ] tR tRt oV V3R ltV V3R ltRtVtV ;t# )5TestSSL.test_connect_accepted_socket.<locals>.MyProtoi:  c                \   < \         SV `  V4       SP                  SP                  4       R # r   )rL   r5   r   r   )r   r4   rS   r   s   &&r   r5   ETestSSL.test_connect_accepted_socket.<locals>.MyProto.connection_lost<  s     ',tyy)r   c                \   < \         SV `  V4       V P                  P                  S4       R # r   )rL   r*   r   r   )r   r)   rS   expected_responses   &&r   r*   CTestSSL.test_connect_accepted_socket.<locals>.MyProto.data_received@  s#    %d+$$%67r   r   )	r7   r8   r9   r:   r5   r*   r;   r<   __classcell__)rS   r>   r  r   s   @@r   MyProtor|  :  s     *8 8r   r  s	   test dataNs   rogerc                  L  <  \         P                   ! \         P                  4      p Se   SP                  V 4      p V P                  S4       V P	                  S4       V P                  ^c4      oV P                  4        R #   \         d   p\        RT4        R p?R # R p?ii ; i)Nz8Failure in client thread in test_connect_accepted_socket)	ri   r   wrap_socketr   sendallra  rQ   r   print)csockr4   r^   
client_sslmessageresponses     r   r   4TestSSL.test_connect_accepted_socket.<locals>.clientM  s    fnn5)&2259Ed#g& ::b> N s   A<B B#BB#T)targetdaemonr   r   c                     < S # r   r   ru  s   r   r.  6TestSSL.test_connect_accepted_socket.<locals>.<lambda>i  s    r   r   r2   SSL皙?rf   ) r   r   ri   r   rp   rq   r   	threadingThreadr   acceptr   r   r   create_taskconnect_accepted_socketrun_foreverrQ   joinassertFalseis_aliver   r   r   r'   resultassertInrS   r7   r	  r	   sleep)r   
server_sslr  r  lsockr   threadconnr   r   ftrr^   r  r   r  ru  r  s   &&f         @@@@@@r   test_connect_accepted_socket$TestSSL.test_connect_accepted_socket7  s   yy	8 	8k 	8 fnn-

#$Q  "$	 	 !!=,,.T"
0E0EFF((+5 	

A*+h/s7|4#45
MM%!6!67

		$$W]]3%78r   c                  a aa S P                   P                  R  4       \        P                  ! 4       o\        P                  ! 4       oV3R lpVV 3R lpS P                  V^^R7      ;_uu_ 4       pS P                   P                  V! VP                  4      4      pRRR4       S P                  XR4       R#   + '       g   i     L$; i)c                     R # r   r   r]  s   &&r   r.  =TestSSL.test_start_tls_client_corrupted_ssl.<locals>.<lambda>~  r_  r   c                 v  < V P                  4       p V P                  SR R7       V P                  R4       V P                  ^4       VP	                  R4       V P                  4        VP                  4        R#   \
        P                   d     L9i ; i  T P                  4        TP                  4        i ; i)Tr     A
s!   please corrupt the SSL connectionN)dupr   r  r   r   r   rB  rQ   )rv   	orig_sockr  s   & r   r  ;TestSSL.test_start_tls_client_corrupted_ssl.<locals>.server  s    
I" $  & V$a CD 

!	 <<  

!s$   AA; ;BB BB "B8c                   <"   \         P                  ! V R SRR/ G Rj  xL
 w  rSP                  VP                  4       G Rj  xL
 R4       VP	                  R4       SP                  \        P                  4      ;_uu_ 4        VP                  4       G Rj  xL
  RRR4       VP                  4         SP                  V4      G Rj  xL
  R#  L L L<  + '       g   i     LB; i L  \        P                   d     R# i ; i5i)r   r  r  Nr     BOK)
r	   r  r   readliner   rF  r   rB  rQ   r   r8  s   &  r   r   ;TestSSL.test_start_tls_client_corrupted_ssl.<locals>.client  s     #*#:#:$$!$$ !#$$ $NF
 6??#44f=LL""3<<00oo''' 1LLN&&v... $
 5 ( 10 /<< s   D
C$D
CAD
CCCD
8C. C,C. D
D
CC)	$D
,C. .DD
DD
r!  Nr  )	r   r(  rW   simple_server_sslcontextrW  rx   r	  r^   r   )r   r  r   r   resr   r  s   f    @@r   #test_start_tls_client_corrupted_ssl+TestSSL.test_start_tls_client_corrupted_ssl}  s    		''(>?446";;=	"	" __V)*%&  ( (+.))..vchh/?@C	( 	d#( (s   3,B;;C	c           	       a aaaa R S P                   ,          o\        P                  ! 4       o\        P                  ! 4       oVV V3R lp ! V 3R lR\        P
                  4      oVVVV 3R lpS P                  VS P                  R7      ;_uu_ 4       pS P                  P                  \        P                  ! V! VP                  4      \        P                  R7      4       RRR4       R#   + '       g   i     R# ; i)   1c                   < V P                  SP                  4       V P                  \        S4      4      pSP	                  \        V4      \        S4      4       V P                  SR R7       V P                  R4       V P                  \        S4      4      pSP	                  \        V4      \        S4      4       V P                  4        V P                  4        R# Tr     ON	ro   r   r   r'   r   r   r  unwraprQ   rv   r)   	HELLO_MSGr   rv  s   & r   serve8TestSSL.test_start_tls_client_reg_proto_1.<locals>.serve  s    OODLL)==Y0DSYI7MM.dM;LL==Y0DSYI7KKMJJLr   c                   @   <a  ] tR tRt o R tV3R ltR tR tRtV t	R# )>TestSSL.test_start_tls_client_reg_proto_1.<locals>.ClientProtoi  c                ,    Wn         W n        ^ V n        R# r   Non_dataon_eofcon_made_cntr   r  r  s   &&&r   r   GTestSSL.test_start_tls_client_reg_proto_1.<locals>.ClientProto.__init__      &$$%!r   c                r   < V ;P                   ^,          un         SP                  V P                   ^4       R#    Nr  r   ru  r  r   s   &&r   r$   NTestSSL.test_start_tls_client_reg_proto_1.<locals>.ClientProto.connection_made  *    ""a'"  !3!3Q7r   c                <    V P                   P                  V4       R # r   r  r"   r(   s   &&r   r*   LTestSSL.test_start_tls_client_reg_proto_1.<locals>.ClientProto.data_received      ''-r   c                <    V P                   P                  R 4       R# rf  r  r"   r.   s   &r   r/   KTestSSL.test_start_tls_client_reg_proto_1.<locals>.ClientProto.eof_received      &&t,r   r  r  r  N
r7   r8   r9   r:   r   r$   r*   r/   r;   r<   r>   r   s   @r   rm  r         &
8
.- -r   rm  c                   <aa"   \         P                  ! R 4      G Rj  xL
  S	P                  P                  4       oS	P                  P                  4       oS	P                  P                  ! VVV3R l.V O5!  G Rj  xL
 w  rVP                  S4       S	P                  P                  WS4      G Rj  xL
 pS	P                  SG Rj  xL
 R4       VP                  S4       SG Rj  xL
  VP                  4        R#  L L LO L< L5i)rS  Nc                     < S ! SS4      # r   r   rm  r  r  s   r   r.  KTestSSL.test_start_tls_client_reg_proto_1.<locals>.client.<locals>.<lambda>      GV4r   r  )	r	   r  r   create_futurerT  r   	start_tlsr   rQ   )
r^   r  ru  new_trr  r  rm  r  rw  r   s
   &   @@r   r   9TestSSL.test_start_tls_client_reg_proto_1.<locals>.client  s     --$$$ii--/GYY,,.F"ii994=7;= =IB HHY99..r.IIF7]D1LL#LLLLN %
= J*sX   DDAD?D 6D6D7DDD+D
,DDDD
Dr_   N)PAYLOAD_SIZErW   r  rW  r	   rU  rx   r   r   r	  r   r^   r   r   r   r  r   r   rm  r  rw  rv  s   f   @@@@r   !test_start_tls_client_reg_proto_1)TestSSL.test_start_tls_client_reg_proto_1  s    4,,,	#<<>#<<>		-'** 	-"	 	$ __UDLL_99SII((  !1)0)>)>@A :999s   AC//D 	c           	       a aaaa R S P                   ,          oS P                  \        P                  \        P                  4      oS P                  4       oVV V3R lp ! V 3R lR\        P                  4      oVVVV 3R lpS P                  VS P                  R7      ;_uu_ 4       pS P                  P                  \        P                  ! V! VP                  4      \        P                  R7      4       RRR4       \         P"                  ! S4      oS P%                  S! 4       4       R#   + '       g   i     L>; i)r  c                 B  < V P                  SP                  4       V P                  SR R7       V P                  R4       V P	                  \        S4      4      pSP                  \        V4      \        S4      4       V P                  4        V P                  4        R# r  )	ro   r   r   r  r   r'   r   r  rQ   r  s   & r   r  9TestSSL.test_create_connection_memory_leak.<locals>.serve  sk    OODLL)MM.dM;LL==Y0DSYI7KKMJJLr   c                   @   <a  ] tR tRt o R tV3R ltR tR tRtV t	R# )?TestSSL.test_create_connection_memory_leak.<locals>.ClientProtoi  c                ,    Wn         W n        ^ V n        R# r  r  r  s   &&&r   r   HTestSSL.test_create_connection_memory_leak.<locals>.ClientProto.__init__  r  r   c                ~   < Wn         V ;P                  ^,          un        SP                  V P                  ^4       R# r  )r  r  r   r  s   &&r   r$   OTestSSL.test_create_connection_memory_leak.<locals>.ClientProto.connection_made  s/    ""a'"  !3!3Q7r   c                <    V P                   P                  V4       R # r   r  r(   s   &&r   r*   MTestSSL.test_create_connection_memory_leak.<locals>.ClientProto.data_received  r  r   c                <    V P                   P                  R 4       R# rf  r  r.   s   &r   r/   LTestSSL.test_create_connection_memory_leak.<locals>.ClientProto.eof_received  r  r   r  Nr  r  s   @r   rm  r    s     &
8.- -r   rm  c                   <aa"   \         P                  ! R 4      G Rj  xL
  SP                  P                  4       oSP                  P                  4       oSP                  P                  ! VVV3R l.V O5RS/ G Rj  xL
 w  rSP                  SG Rj  xL
 R4       VP                  S4       SG Rj  xL
  VP                  4        R#  L LO L: L5i)rS  Nc                     < S ! SS4      # r   r   r  s   r   r.  LTestSSL.test_create_connection_memory_leak.<locals>.client.<locals>.<lambda>  r  r   r   r  )r	   r  r   r  rT  r   r   rQ   )	r^   r  ru  r  r  rm  r  rw  r   s	   &  @@r   r   :TestSSL.test_create_connection_memory_leak.<locals>.client  s     --$$$ii--/GYY,,.F"ii994$7;$"$ $IB 7]D1HHYLLHHJ %
$ +sF   CCA!CCCCC8C9CCCCr  N)r  r   rW   r  r  r   r	   rU  rx   r   r   r	  r   r^   r   r   weakrefrefassertIsNoner  s   f   @@@@r   "test_create_connection_memory_leak*TestSSL.test_create_connection_memory_leak  s    4,,,	88!3!3588:
		-'** 	-&	 	  __UDLL_99SII((  !1)0)>)>@A : !^4.*+ :9s   )AD//D?	c           	     B  a aaaaaa	 R S P                   ,          o\        P                  ! 4       o	\        P                  ! 4       o^ oVV V	3R lp ! V3R lR\        P
                  4      o ! V3R lR\        P                  4      oVVVVVV 3R lpS P                  VS P                  R7      ;_uu_ 4       pS P                  P                  \        P                  ! V! VP                  4      S P                  R7      4       RRR4       R#   + '       g   i     R# ; i)	r  c                 \  < V P                  SP                  4       V P                  \        S4      4      pSP	                  \        V4      \        S4      4       V P                  SR R7       V P                  R4       V P                  \        S4      4      pSP	                  \        V4      \        S4      4       V P                  R4       V P                  \        S4      4      pSP	                  \        V4      \        S4      4       V P                  4        V P                  4        R# )Tr  r     2Nr  r  s   & r   r  8TestSSL.test_start_tls_client_buf_proto_1.<locals>.serve0  s    OODLL)==Y0DSYI7MM.dM;LL==Y0DSYI7LL==Y0DSYI7KKMJJLr   c                   F   <a  ] tR tRt o R tV3R ltR tR tR tRt	V t
R# )	CTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirstiC  c                2    Wn         \        ^4      V n        R# r  )r  r   buf)r   r  s   &&r   r   LTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirst.__init__D  s    &$Q<r   c                   < S^,          oR# r  r   r   r  client_con_made_callss   &&r   r$   STestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirst.connection_madeH      %*%r   c                    V P                   # r   )r  )r   sizehints   &&r   
get_bufferNTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirst.get_bufferL  s    xxr   c                z    V^8X  g   Q hV P                   P                  \        V P                  RV 4      4       R# r  )r  r"   bytesr  )r   nsizes   &&r   buffer_updatedRTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirst.buffer_updatedO  s0    z!z''dhhv.>(?@r   c                    R # r   r   r.   s   &r   r/   PTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirst.eof_receivedS  s    r   )r  r  N)r7   r8   r9   r:   r   r$   r  r  r/   r;   r<   r>   r  s   @r   ClientProtoFirstr  C  s$     (+ A r   r   c                   @   <a  ] tR tRt o R tV3R ltR tR tRtV t	R# )DTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecondiV  c                ,    Wn         W n        ^ V n        R# r  r  r  s   &&&r   r   MTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecond.__init__W  r  r   c                   < S^,          oR# r  r   r  s   &&r   r$   TTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecond.connection_made\  r  r   c                <    V P                   P                  V4       R # r   r  r(   s   &&r   r*   RTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecond.data_received`  r  r   c                <    V P                   P                  R 4       R# rf  r  r.   s   &r   r/   QTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecond.eof_receivedc  r  r   r  Nr  r  s   @r   ClientProtoSecondr"  V  s     &
+.- -r   r+  c                   <a"   \         P                  ! R 4      G Rj  xL
  SP                  P                  4       oSP                  P                  4       pSP                  P                  4       pSP                  P                  ! VV3R l.V O5!  G Rj  xL
 w  r4VP                  S	4       SP                  P                  W4S4      G Rj  xL
 pSP                  SG Rj  xL
 R4       VP                  S	4       VP                  S! W4      4       SP                  VG Rj  xL
 R4       VP                  S	4       VG Rj  xL
  VP                  4        SP                  S
^4       R#  ELP L L L LQ L35i)rS  Nc                     < S ! S4      # r   r   )r   on_data1s   r   r.  KTestSSL.test_start_tls_client_buf_proto_1.<locals>.client.<locals>.<lambda>n  s    (2r   r  r  )
r	   r  r   r  rT  r   r  r   set_protocolrQ   )r^   on_data2r  r  ru  r  r.  r   r+  r  r  rw  r   s   &     @r   r   9TestSSL.test_start_tls_client_buf_proto_1.<locals>.clientf  s)    --$$$yy..0Hyy..0HYY,,.F"ii992;59; ;IB HHY99..r.IIF8^T2LL# 1( CD8^T2LL#LLLLN
 2A63 %; J+ ,sk   E;E.A8E;E16E;E3E;#E5$AE;%E7&E;E9)E;1E;3E;5E;7E;9E;r  N)r  rW   r  rW  r	   BufferedProtocolrU  rx   r   r   r	  r   r^   )
r   r  r   r   r   r+  r  r  rw  rv  s
   f   @@@@@@r   !test_start_tls_client_buf_proto_1)TestSSL.test_start_tls_client_buf_proto_1(  s    4,,,	#<<>#<<> !	&	w77 	&	- 0 0 	- 	7 	78 __UDLL_99SII((  !1)-78 :999s   7ADD	c           	       a aaaa R S P                   ,          o\        P                  ! 4       oS P                  P	                  4       oVV V3R lp ! V 3R lR\
        P                  4      oVVVV V3R lpS P                  VS P                  R7      ;_uu_ 4       pS P                  P                  \
        P                  ! V! VP                  4      \        P                  R7      4       RRR4       R#   + '       g   i     R# ; i)r  c                   < V P                  SP                  4       V P                  \        S4      4      pSP	                  \        V4      \        S4      4        SP
                  P                  SP                  R 4       V P                  R4      pV P                  4        R #   \         d     Li ; i  T P                  4        i ; i)Nr2  )
ro   r   r   r'   r   r   r   r"   r4  rQ   )rv   r)   r  r   server_waits_on_handshakes   & r   r  8TestSSL.test_start_tls_slow_client_cancel.<locals>.serve  s    OODLL)==Y0DSYI7		..-88$@}}[1 

 *  

s$   7B% %B30B6 2B33B6 6Cc                   @   <a  ] tR tRt o R tV3R ltR tR tRtV t	R# )>TestSSL.test_start_tls_slow_client_cancel.<locals>.ClientProtoi  c                ,    Wn         W n        ^ V n        R# r  r  r  s   &&&r   r   GTestSSL.test_start_tls_slow_client_cancel.<locals>.ClientProto.__init__  r  r   c                r   < V ;P                   ^,          un         SP                  V P                   ^4       R# r  r  r  s   &&r   r$   NTestSSL.test_start_tls_slow_client_cancel.<locals>.ClientProto.connection_made  r  r   c                <    V P                   P                  V4       R # r   r  r(   s   &&r   r*   LTestSSL.test_start_tls_slow_client_cancel.<locals>.ClientProto.data_received  r  r   c                <    V P                   P                  R 4       R# rf  r  r.   s   &r   r/   KTestSSL.test_start_tls_slow_client_cancel.<locals>.ClientProto.eof_received  r  r   r  Nr  r  s   @r   rm  r;    r  r   rm  c           	      T  <aa"   \         P                  ! R 4      G Rj  xL
  SP                  P                  4       oSP                  P                  4       oSP                  P                  ! VVV3R l.V O5!  G Rj  xL
 w  rVP                  S4       S	G Rj  xL
  SP                  \         P                  4      ;_uu_ 4        \         P                  ! SP                  P                  WS4      R 4      G Rj  xL
  RRR4       R#  L L Ls L  + '       g   i     R# ; i5i)rS  Nc                     < S ! SS4      # r   r   r  s   r   r.  KTestSSL.test_start_tls_slow_client_cancel.<locals>.client.<locals>.<lambda>  r  r   )
r	   r  r   r  rT  r   rF  rX  r   r  )
r^   r  ru  r  r  rm  r  rw  r   r8  s
   &  @@r   r   9TestSSL.test_start_tls_slow_client_cancel.<locals>.client  s     --$$$ii--/GYY,,.F"ii994=7;= =IB HHY+++""7#7#788&&II''>B   98 %
=
 , 988s^   D(DAD(?D D(D+D(5D=D>DD(D(D(DD%		D(r  N)r  rW   rW  r   r  r	   rU  rx   r   r	  r   r^   r   r   )r   r  r   r   rm  r  rw  r8  s   f   @@@@r   !test_start_tls_slow_client_cancel)TestSSL.test_start_tls_slow_client_cancel  s    4,,,	#<<>$(II$;$;$=!		-'** 	-"	 	$ __UDLL_99SII((  !1)0)>)>@A :999s   AC55D	c                2  a aaaaaa R S P                   ,          o\        P                  ! 4       o\        P                  ! 4       oVVV 3R lo ! R R\        P
                  4      oVV V3R loVVVV 3R lpS P                  P                  V! 4       4       R# )r  c                 `  < V P                  SP                  4       V P                  V4       V P                  \	        S4      4      pSP                  \	        V4      \	        S4      4       V P                  S4       V P                  S4       V P                  4        V P                  4        R # r   )
ro   r   r   r   r'   r   r   r  r  rQ   )rv   r^   r)   r  rw  r   s   && r   r   /TestSSL.test_start_tls_server_1.<locals>.client  ss    OODLL)LL==Y0DSYI7MM.)LL#KKMJJLr   c                   >   a  ] tR tRt o R tR tR tR tR tRt	V t
R# )	4TestSSL.test_start_tls_server_1.<locals>.ServerProtoi  c                8    Wn         W n        W0n        R V n        R# )r   N)on_conr  on_con_lostr)   )r   rP  r  rQ  s   &&&&r   r   =TestSSL.test_start_tls_server_1.<locals>.ServerProto.__init__  s    $$#. 	r   c                <    V P                   P                  V4       R # r   )rP  r"   )r   r  s   &&r   r$   DTestSSL.test_start_tls_server_1.<locals>.ServerProto.connection_made  s    &&r*r   c                8    V ;P                   V,          un         R # r   )r)   r(   s   &&r   r*   BTestSSL.test_start_tls_server_1.<locals>.ServerProto.data_received  s    		T!	r   c                <    V P                   P                  ^4       R# r  r  r.   s   &r   r/   ATestSSL.test_start_tls_server_1.<locals>.ServerProto.eof_received  s    &&q)r   c                ~    Vf   V P                   P                  R 4       R # V P                   P                  V4       R # r   )rQ  r"   r   r3   s   &&r   r5   DTestSSL.test_start_tls_server_1.<locals>.ServerProto.connection_lost  s/    ;$$//5$$2237r   )r)   rP  rQ  r  N)r7   r8   r9   r:   r   r$   r*   r/   r5   r;   r<   r=   s   @r   ServerProtorN    s#      +"*8 8r   r[  c                 p  <"   VG R j  xL
 pVP                  S4       SP                  V P                  R4       SP                  P	                  W@SRSP
                  R7      G R j  xL
 pVG R j  xL
  VG R j  xL
  SP                  V P                  S4       VP                  4        R #  L LH L@ L85i)Nr   T)r  r   )r   r   r)   r   r  r   rQ   )	ru  rP  r  rQ  r  r  r  r   rv  s	   &&&&  r   main-TestSSL.test_start_tls_server_1.<locals>.main  s     BHHYUZZ-99..> &*ll / 4 4F
 LLUZZ3LLN 
4
 sF   B6B.AB6'B0(	B61B22	B6;B4<3B60B62B64B6c            
        <aa"   S	P                   P                  4       p S	P                   P                  4       pS	P                   P                  4       pS! WV4      oS	P                   P                  V3R  lR^ 4      G Rj  xL
 pVP                  ^ ,          P	                  4       oS	P                  VV3R lS	P                  R7      ;_uu_ 4        \        P                  ! S! SWV4      S	P                  R7      G Rj  xL
  RRR4       VP                  4        VP                  4       G Rj  xL
  R#  L L8  + '       g   i     L>; i L5i)c                     < S # r   r   r  s   r   r.  CTestSSL.test_start_tls_server_1.<locals>.run_main.<locals>.<lambda>  s    r   rg   Nc                    < S! V S4      # r   r   )rv   r^   r   s   &r   r.  ra    s    fT4.@r   r  )r   r  create_serverr   r   r}   r   r	   r   rQ   r   )
rP  r  rQ  r  r^   ru  r[  r   r]  r   s
       @@r   run_main1TestSSL.test_start_tls_server_1.<locals>.run_main  s    YY,,.FYY,,.F))113K<E9922{A/ /F>>!$002D!@)- ! 7 7&&< LL* * *7 LLN$$&&&/*7 7 'sI   A<ED6AE.D:?D8 D:+E/E0E8D::E
		EN)r  rW   r  rW  r	   rU  r   r	  )r   rd  r  r[  r   rw  r]  rv  s   f @@@@@@r   test_start_tls_server_1TestSSL.test_start_tls_server_1  sk    4,,,	#<<>#<<>		8'** 	8,	 	' 	'& 			$$XZ0r   c                  a aaaaaa	a
aaaaaaa ^ oVo	\         P                  oR\        ,          oR	\        ,          oS P                  \        P
                  \        P                  4      oS P                  4       o
S P                  \        P
                  \        P                  4      oS P                  4       o. oVVVV 3R lo ! V3R lR\        P                  4      oVV3R loVVV
VVV 3R loVV	V VVV3R lpS P                  4       ;_uu_ 4        S P                  P                  V! 4       4       RRR4       S P                  SS	4       S F  pVP                  4        K  	  R#   + '       g   i     L=; i)
r   c                   <"   V P                  \        S4      4      G R j  xL
 pSP                  VS4       VP                  R4       V P                  \        S4      4      G R j  xL
 pSP                  VS4       VP	                  R\        R4      \        R4      .4       VP                  4       G R j  xL
  VP                  4        S^,          oR #  L Lq L#5ir   r   r   s   && r   r   >TestSSL.test_create_server_ssl_over_ssl.<locals>.handle_client$  r   r   c                   6   <a a ] tR tRt oV V3R ltRtVtV ;t# )?TestSSL.test_create_server_ssl_over_ssl.<locals>.ServerProtocoli4  c           	        <aa \        4       oVP                  4        V P                  P                  V P                  P	                  WSR R7      4      oVV3R lpSP                  V4       R# )Tr  c                    <  SP                  4       pSP                  V4       R #   \         d   pSP                  T4        R p?R # R p?ii ; ir   )r  r$   r   r5   )r   r  rw   r   super_s   &  r   cb[TestSSL.test_create_server_ssl_over_ssl.<locals>.ServerProtocol.connection_made.<locals>.cb;  sF    3 ZZ\ ..r2 % 3..r223s   & AAAN)rL   pause_reading_loopr  r  add_done_callback)r   r   rp  r   ro  rS   sslctx_2s   && @@r   r$   OTestSSL.test_create_server_ssl_over_ssl.<locals>.ServerProtocol.connection_made5  s_    '')jj,,TZZ-A-AX4 .B .A B3 %%b)r   r   )r7   r8   r9   r:   r$   r;   r<   r  )rS   r>   ru  s   @@r   ServerProtocolrl  4  s     * *r   rw  c                  D   < \         P                  ! 4       p S! V S4      pV# r   )r	   StreamReader)r   protocolrw  r   s     r   server_protocol_factoryHTestSSL.test_create_server_ssl_over_ssl.<locals>.server_protocol_factoryD  s"    ))+F%fm<HOr   c                    <a a"   \         P                  ! 4       oVVV VVVV	3R  lpS	P                  V4      pVP                  4        SP	                  V4       SG Rj  xL
  R#  L5i)c                 :  <a aa  S P                  S
4       S P                  S4       \        P                  ! 4       o\        P                  ! 4       oSP	                  SS4      pVVV 3R  lpV! VP
                  4       V! VP                  S4       V! VP                  ^4      pSP                  VR4       V! VP                  S	4       Rp V! VP                  ^4      pV'       g   M
W4,          pK'  SP                  VR4       V! VP                  4       S P                  4        SP                  P                  SP                  R4       R#   \         dB   pSP                  P                  SP                  T4       S P                  4         Rp?R# Rp?ii ; i)c                 V  <   V ! V!  p SP                  '       d    SP                  SP	                  4       4       T#   \         P                   dV    SP                  '       d    SP                  SP	                  4       4       SP                  SP                  R4      4        K  i ; i)Ti   )r   SSLWantReadErrorpendingr   readr   ra  )funcr   rvincomingoutgoingrv   s   &* r   doVTestSSL.test_create_server_ssl_over_ssl.<locals>.test_client.<locals>.prog.<locals>.doW  s    "A%)4[ %
 $+++ IIhmmo6!	 $'#7#7 A#+#3#3#3$(IIhmmo$> (tyy/? @As   > &B(%?B('B(r   r   r   N)r   r   r   	MemoryBIOwrap_biodo_handshaker   r  r   r  rQ   r   r   r"   r   r   )rv   sslobjr  r)   chunkrw   r  r  r   r   r^   client_sslctx_1client_sslctx_2r   r   s   f     @@r   r   JTestSSL.test_create_server_ssl_over_ssl.<locals>.test_client.<locals>.progL  s7   -ILL&MM/2  #}}H"}}H,55hIF" v**+v||V,fkk1-D$$T51v||V,D "6;; 2$!$$T73v}}%JJL II223>>4H	 ! !II2233D3DbIJJLL!s   C E '?E F6FFNr   )
r^   r   r   r   r   r   r  r  r   r   s
   f  @r   r   <TestSSL.test_create_server_ssl_over_ssl.<locals>.test_clientI  sK     .."C.I .I` __T*FLLNNN6"IIs   AA'A%A'c                    <"   / p SP                   P                  ! S	R ^ 3R\        P                  RS
/V B G Rj  xL
 p VP                  pSP                  V4       V^ ,          P                  4       p. p\        S4       F  pVP                  S! V4      4       K  	  \        P                  ! \        P                  ! V!  S4      G Rj  xL
  SP                   P                  VP                  4       VP                  4       G Rj  xL
  R#  L LE L
  SP                   P                  TP                  4       TP                  4       G Rj  xL 
  i ; i5i)rg   r]   r   N)r   rc  ri   r   r   r   r   r   r   r	   r   r   r   rQ   r   )r   r   r   r^   r   r   r   r   r   r{  sslctx_1r   s         r   r   =TestSSL.test_create_server_ssl_over_ssl.<locals>.start_server  s!    F		//'Q ~~ 	
  C(KK		* |//1y)ALLT!23 * &&w~~u'=wGGG 		##CII.oo'''+" H ( 		##CII.oo'''sX   7EDE BD DD 8ED	ED E9EEEENr  r  )r   r  r  r   rW   r  r  r   r	   StreamReaderProtocolr   r   r	  r   r   )r   r   r   r   r   r   r   rw  r   r   r  r  r   r   r{  r  ru  r   s   f&  @@@@@@@@@@@@@@r   test_create_server_ssl_over_ssl'TestSSL.test_create_server_ssl_over_ssl  s   	&&~-~-22!3!3599;22!3!3599;	 	 	*W99 	* 	
7	 7	r	( 	(4 //11II((8 2 	i(FKKM  21s   !E,,E<	c                `  a aaaaaa ^ o^oR\         ,          oS P                  \        P                  \        P                  4      oS P                  4       oVV V3R loVVVV 3R lpVVV V3R lpS P                  4       ;_uu_ 4        V! V4       RRR4       R#   + '       g   i     R# ; i)r   c                    < V P                  SR R7       V P                  \        S4      4      pSP                  VS4       V P	                  R4       V P                  4        V P                  4        R# )Tr  r   N)r   r   r'   r   r   r  rQ   )rv   r)   r   r   r  s   & r   r  -TestSSL.test_shutdown_cleanly.<locals>.server  s\    MM   " ==V-DT6*IIeKKMJJLr   c                   <"   / p\        \        P                  R 7      p\        P                  ! V RSRR/VB G Rj  xL
 w  r#VP                  S4       SP                  VP                  ^4      G Rj  xL
 R4       SP                  VP                  4       G Rj  xL
 R4       S^,          oVP                  4        SP                  V4      G Rj  xL
  R#  L Lg LA L5i)r   r   r  r  Nr   r   )r   r   r   r	   r  r   r   r   r  rQ   r   )r^   r   r   r   r   r   r   r   s   &   r   r   -TestSSL.test_shutdown_cleanly.<locals>.client  s     F0E0EFF#*#:#:$!$ !#$ 	$ NF LL 6#5#5a#88%@6;;=0#6 1HCLLN""6*** 90 +sE   :C"C6C"4C5'C"C6C"C C"C"C" C"c                 N  < ^ oR pSP                  SSSR7      ;_uu_ 4       p. p\        S4       F$  pVP                  V ! VP                  4      4       K&  	  SP                  P                  V! V!  4       RRR4       SP                  SS4       R#   + '       g   i     L$; i)r   c                  F   "   \         P                  ! V !  G R j  xL
 #  L5ir   r  r  s   *r   r  ;TestSSL.test_shutdown_cleanly.<locals>.run.<locals>._gather  s     $^^U3333r   r!  Nr"  r#  s	   &    r   r%  *TestSSL.test_shutdown_cleanly.<locals>.run  s    C4 -6)2 ! 4 47:y)ALLchh0 * 		,,UO%4 S),4 4r'  Nr  )r  r   rW   r  r  r   r   )	r   r   r%  r   r   r   r   r  r  s	   f  @@@@@@r   test_shutdown_cleanlyTestSSL.test_shutdown_cleanly  s    	~-00!3!35779		+ 	+*	- 	-& //11K 2111s   		BB-	c                  a aaaaa	 Ro^ oS P                  \        P                  \        P                  4      o	S P	                  4       oRoVVV V	3R lpVV 3R lpVVVVV 3R lpS P                  V! V4      4      ;_uu_ 4       pS P                  P                  V! VP                  4      4       RRR4       R#   + '       g   i     R# ; i)r   Nc                 R  < V P                  SR R7       SP                  V P                  ^4      R4       V P                  R4       \        P
                  ! R4       V P                  SS,          4      pSP                  \        V4      SS,          4       V P                  4        R# )Tr     ping   pongrS  N)r   r   r   r   timer  r'   rQ   rv   r)   CHUNKSIZEr   r  s   & r   r  2TestSSL.test_flush_before_shutdown.<locals>.server  sv    MM&dM3T]]1-w7IIgJJsO==.DSY5JJLr   c                    <a  VV V3R  lpV# )c                    <  S! V 4       SP                   P                  SP                  R 4       R #   \         d2   pSP                   P                  SP                  T4        R p?R # R p?ii ; ir   r   r   r"   r   r   rv   rw   futuremethr   s   & r   wrapper@TestSSL.test_flush_before_shutdown.<locals>.run.<locals>.wrapper  ]    LJ II2263D3DdK ! MII2263G3GLLM   3 A/&A**A/r   r  r  r  r   s   f r   r%  /TestSSL.test_flush_before_shutdown.<locals>.run      L Nr   c                   <"   S
P                   P                  4       o	\        P                  ! V R SRR/ G Rj  xL
 w  rVP                  P
                  pVP                  R4       VP                  ^4      G Rj  xL
 pS
P                  VR4       VP                  4        \        S4       F  pVP                  RS,          4       K  	  VP                  4        VP                  4        S
P                  V4      G Rj  xL
   VP                  4       G Rj  xL
 pS
P                  VR4       S	G Rj  xL
  R#  EL L L@ L)  \         d     L"i ; i L 5ir   r  r  Nr  r     xr   )r   r  r	   r  r   _ssl_protocolr   r   r   pause_writingr   rQ   resume_writingr   r  rp  )r^   r   r   sslprotocolr)   r   r  r  r   r  r   s   &     r   r   2TestSSL.test_flush_before_shutdown.<locals>.client  s.    YY,,.F#*#:#:$$!$$ !#$$ $NF !**88KLL!++A..DT7+%%'4[TE\* ! LLN&&(""6***#[[]*  s+ LL-$ / +*' sw   6ED<AE;D?<BE EEE EE 0E5E6E?EEE EEEE   	r   rW   r  r  r   rx   r   r	  r^   )
r   r  r%  r   r   r  r  r   r  r  s
   f    @@@@@r   test_flush_before_shutdown"TestSSL.test_flush_before_shutdown  s    00!3!35779	 			 	6 __S[))SII(()9: *)))s   ,B::C	c                z  a aaaa	a
 Ro^ oS P                  \        P                  \        P                  4      o
S P	                  4       oRo	VVV V
3R lpVVV V
3R lpVVVV	V 3R lpV	V 3R lpS P                  V! V4      4      ;_uu_ 4       pS P                  P                  V! VP                  4      4       RRR4       S P                  V! V4      4      ;_uu_ 4       pS P                  P                  V! VP                  4      4       RRR4       R#   + '       g   i     Le; i  + '       g   i     R# ; i)r   Nc                   < \         P                  ! 4       p\         P                  ! 4       pS
P                  WR R7      p  VP                  4        VP                  '       d    V P                  VP                  4       4          TP                  ^4      p S	P                  TR4       TP                  R4       T P                  TP                  4       4       \        P                  ! R4       S	P                  \         P                  4      ;_uu_ 4        TP                  4        RRR4       T P                  TP                  4       4       ^ p  \        TP                  R4      4      pYV,          pK&    \         P                   dW    TP                  '       d    T P                  TP                  4       4       TP                  T P                  R4      4        EK  i ; i  \         P                   d&    TP                  T P                  R4      4        EK  i ; i  + '       g   i     EL; i  \         P                   d&    TP                  T P                  R4      4        EK  \         P                    d     Mi ; iS	P                  TSS,          4       TP                  4        T P#                  4        R# Tr  i @  r  r  皙?Nr   r  r  r  r  r   r  r  r   ra  r   r  r  rF  r  r'   SSLZeroReturnErrorrQ   rv   r  r  r  r)   data_lenr  r  r  r   r  s   &      r   r  CTestSSL.test_remote_shutdown_receives_trailing_data.<locals>.server,  s	   }}H}}H__XT_JF	'')  '''		(--/2!;;q>D T7+LL!IIhmmo&JJsO ""3#7#788 9IIhmmo& HE 23E%HC ++ 5'''		(--/2NN499U#3445 ++ 5NN499U#3445 988 ++ 5NN499U#344--  Xut|4 MMOJJLT   E6 G$ H!"H5 6&G!?G! G!$5HH!H2	55J.JJJc                   < V P                  SR R7       SP                  V P                  ^4      R4       V P                  R4       \        P
                  ! R4       V P                  \        P                  4       V P                  SS,          4      pSP                  \        V4      SS,          4       V P                  4        R# Tr  r  r  r  Nr   r   r   r   r  r  shutdownri   SHUT_WRr'   rQ   r  s   & r   
eof_serverGTestSSL.test_remote_shutdown_receives_trailing_data.<locals>.eof_serverb      MM&dM3T]]1-w7IIgJJsO MM&..) ==.DSY5JJLr   c                 f  <"   S	P                   P                  4       o\        P                  ! V R SRR/ G Rj  xL
 w  rVP	                  R4       VP                  ^4      G Rj  xL
 pS	P                  VR4       \        S4       F%  pVP                  P                  RS,          4       K'  	   VP                  4       G Rj  xL
 pS	P                  VR4       SG Rj  xL
  VP                  4        S	P                  V4      G Rj  xL
  R#  L L LO  \        \        3 d     LNi ; i LL L%5ir  )r   r  r	   r  r   r   r   r   r   _test__append_write_backlogr  r   rp  rQ   r   )
r^   r   r   r)   r   r  r  r   r  r   s
   &    r   r   CTestSSL.test_remote_shutdown_receives_trailing_data.<locals>.clientr  s    YY,,.F#*#:#:$$!$$ !#$$ $NF LL!++A..DT7+ 4[  <<TE\J !#[[]*  s+ LLLLN""6***+$
 / +#%9:   +sv   6D1D+D1%D&A
D11D DD D1 D-!(D1	D/
D1D1D D*'D1)D**D1/D1c                    <a  VV V3R  lpV# )c                    <  S! V 4       SP                   P                  SP                  R 4       R #   \         d2   pSP                   P                  SP                  T4        R p?R # R p?ii ; ir   r  r  s   & r   r  QTestSSL.test_remote_shutdown_receives_trailing_data.<locals>.run.<locals>.wrapper  r  r  r   r  s   f r   r%  @TestSSL.test_remote_shutdown_receives_trailing_data.<locals>.run  r  r   r  r  r   r  r  r   r%  r   r  r  r   r  r  s   f     @@@@@r   +test_remote_shutdown_receives_trailing_data3TestSSL.test_remote_shutdown_receives_trailing_data!  s    00
 7794	 4	l	 	 	+ 	+6	 __S[))SII(()9: * __S_--II(()9: .- *) .--   ,D ,D)D&	)D:	c                z  a aaaa	a
 Ro^ oS P                  \        P                  \        P                  4      o
S P	                  4       oRo	VVV V
3R lpVVV V
3R lpVVVV	V 3R lpV	V 3R lpS P                  V! V4      4      ;_uu_ 4       pS P                  P                  V! VP                  4      4       RRR4       S P                  V! V4      4      ;_uu_ 4       pS P                  P                  V! VP                  4      4       RRR4       R#   + '       g   i     Le; i  + '       g   i     R# ; i)r   Nc                   < \         P                  ! 4       p\         P                  ! 4       pS
P                  WR R7      p  VP                  4        VP                  '       d    V P                  VP                  4       4          TP                  ^4      p S	P                  TR4       TP                  R4       T P                  TP                  4       4       \        P                  ! R4       S	P                  \         P                  4      ;_uu_ 4        TP                  4        RRR4       T P                  TP                  4       4       ^ p  \        TP                  R4      4      pYV,          pK&    \         P                   dW    TP                  '       d    T P                  TP                  4       4       TP                  T P                  R4      4        EK  i ; i  \         P                   d&    TP                  T P                  R4      4        EK  i ; i  + '       g   i     EL; i  \         P                   d&    TP                  T P                  R4      4        EK  \         P                    d     Mi ; iS	P                  TSS,          ^,          4       TP                  4        T P#                  4        R# r  r  r  s   &      r   r  RTestSSL.test_remote_shutdown_receives_trailing_data_on_slow_socket.<locals>.server  s   }}H}}H__XT_JF	'')  '''		(--/2!;;q>D T7+LL!IIhmmo&JJsO ""3#7#788 9IIhmmo& HE 23E%HC ++ 5'''		(--/2NN499U#3445 ++ 5NN499U#3445 988 ++ 5NN499U#344--  Xut|A~6 MMOJJLr  c                   < V P                  SR R7       SP                  V P                  ^4      R4       V P                  R4       \        P
                  ! R4       V P                  \        P                  4       V P                  SS,          4      pSP                  \        V4      SS,          4       V P                  4        R# r  r  r  s   & r   r  VTestSSL.test_remote_shutdown_receives_trailing_data_on_slow_socket.<locals>.eof_server  r  r   c                   <aa"   SP                   P                  4       o\        P                  ! V R S
RR/ G Rj  xL
 w  rVP	                  R4       VP                  ^4      G Rj  xL
 pSP                  VR4       \        S	^,          4       F%  pVP                  P                  RS,          4       K'  	   VP                  4       G Rj  xL
 pSP                  VR4       VP                  P                  P                  o ! R R	4      oVV3R
 lp\        P                   P"                  P%                  SRSP                  VR7      ;_uu_ 4        SG Rj  xL
  VP'                  4        SP)                  V4      G Rj  xL
  RRR4       R#  ELW EL. L  \        \        3 d     Li ; i LV L/  + '       g   i     R# ; i5i)r   r  r  Nr  r  r  r   c                   >   a  ] tR tRt o V 3R lR ltR tR tRtV tR# )iTestSSL.test_remote_shutdown_receives_trailing_data_on_slow_socket.<locals>.client.<locals>.SocketWrapperi  c                   < V ^8  d   QhRR/# )r   returnNr   )formatr>   s   "r   __annotate__vTestSSL.test_remote_shutdown_receives_trailing_data_on_slow_socket.<locals>.client.<locals>.SocketWrapper.__annotate__  s     % %D %r   c                    Wn         R # r   r5  r   rv   s   &&r   r   rTestSSL.test_remote_shutdown_receives_trailing_data_on_slow_socket.<locals>.client.<locals>.SocketWrapper.__init__  s     $Ir   c                .    \        V P                  V4      # r   )rh   rv   r   rl   s   &&r   __getattr__uTestSSL.test_remote_shutdown_receives_trailing_data_on_slow_socket.<locals>.client.<locals>.SocketWrapper.__getattr__  s    "499d33r   c                b    \        V4      ^,          pV P                  P                  VRV 4      # )r   N)r'   rv   r   )r   r)   to_sends   && r   r   nTestSSL.test_remote_shutdown_receives_trailing_data_on_slow_socket.<locals>.client.<locals>.SocketWrapper.send  s(    !$ilG99>>$x.99r   r5  N)	r7   r8   r9   r:   r   r  r   r;   r<   r=   s   @r   SocketWrapperr    s     % %4: :r   r  c                    < SP                   f4   \        SP                  S4      '       g   S! SP                  4      Sn        \        P                  P
                  # r   )_read_ready_cbr   _sockunittestmockDEFAULT)r)   r  socket_transports   &r   _fake_full_write_buffersTestSSL.test_remote_shutdown_receives_trailing_data_on_slow_socket.<locals>.client.<locals>._fake_full_write_buffer  sH    #22::N^NdNdfsCtCt-:;K;Q;Q-R$*}},,,r   r   )wrapsside_effect)r   r  r	   r  r   r   r   r   r   r  r  r   rp  r  
_transportr  r  patchobjectrQ   r   )r^   r   r   r)   r   r  r  r   r  r  r   r  r   s   &     @@r   r   RTestSSL.test_remote_shutdown_receives_trailing_data_on_slow_socket.<locals>.client  s    YY,,.F#*#:#:$$!$$ !#$$ $NF LL!++A..DT7+ 46]  <<TE\J ##[[]*  s+  &//==HH
: 
:-
 $$++ '&,,3 ,  
 &&v... U$
 / +#%9: @  /  s   6G	F+G	'F(AG	:F FF $A0G	F5F1(F5F3F5G	G	F F.+G	-F..G	1F53F55G	 	G	c                    <a  VV V3R  lpV# )c                    <  S! V 4       SP                   P                  SP                  R 4       R #   \         d2   pSP                   P                  SP                  T4        R p?R # R p?ii ; ir   r  r  s   & r   r  `TestSSL.test_remote_shutdown_receives_trailing_data_on_slow_socket.<locals>.run.<locals>.wrapper.  r  r  r   r  s   f r   r%  OTestSSL.test_remote_shutdown_receives_trailing_data_on_slow_socket.<locals>.run-  r  r   r  r  r  s   f     @@@@@r   :test_remote_shutdown_receives_trailing_data_on_slow_socketBTestSSL.test_remote_shutdown_receives_trailing_data_on_slow_socket  s     00
 7794	 4	l	 	 6	/ 6	/p	 __S[))SII(()9: * __S_--II(()9: .- *) .--r  c           	       a a \         P                   ! \         P                  4      pVP                  R4       VP                  4       oVV 3R lpT;_uu_ 4         S P	                  \
        4      ;_uu_ 4       pS P                  P                  V! 4       4       \        P                  ! 4        \        P                  ! 4        \        P                  ! 4        RRR4       S P                  RP                  XP                  4      4       RRR4       R#   + '       g   i     LD; i  \         d&   pS P                  \        T4      R4        Rp?LHRp?ii ; i  + '       g   i     R# ; i)rg   c                    <"    \         P                  ! SP                  P                  ! \         P                  .S O5R R/ R4      G Rj  xL
  SP                  R4       R#  L  \        \         P                  3 d     R# i ; i5i)r   Tr  NTimeoutError is not raisedr	   r   r   rT  rU  r   ConnectionRefusedErrorrX  )r^   r   s   r   test2TestSSL.test_connect_timeout_warning.<locals>.testB  s     8&&II//0@0@ A15A;?A   		67 +G,@,@A ;   BAA% A#A% B#A% %B BBBNzUnexpected ResourceWarning: {}zResourceWarning not triggeredrf   )ri   r   rp   r   assertWarnsResourceWarningr   r	  gccollectr   r  warningAssertionErrorr   str)r   sr  cmer^   s   f    @r   test_connect_timeout_warning$TestSSL.test_connect_timeout_warning=  s    MM&..)	 }}		8 Q	O%%o66"II008JJLJJLJJL	 7 		:AA"**MN Q66
 " J  Q)HIIJ QQsO   ED'8A D	D' *ED$D''E2EEEEE+	c                  a a \         P                   ! \         P                  4      pVP                  R4       VP                  ^4       VP	                  4       oVV 3R lpV;_uu_ 4        \
        P                  ! 4       pS P                  P                  V! V4      4       \        P                  ! V4      pRRR4       S P                  X! 4       4       R#   + '       g   i     L(; i)rg   c                   <"    \         P                  ! SP                  P                  ! \         P                  .SO5R V / R4      G Rj  xL
  SP                  R4       R#  L  \        \         P                  3 d     R# i ; i5i)r   r  Nr  r  )rL  r^   r   s   &r   r  9TestSSL.test_handshake_timeout_handler_leak.<locals>.test_  s     8&&II//0@0@ 94 9479   		67 +G,@,@A r  Nrf   )ri   r   rp   rq   r   r   r   r   r	  r  r  r  )r   r  r  rL  r^   s   f   @r   #test_handshake_timeout_handler_leak+TestSSL.test_handshake_timeout_handler_leakY  s    MM&..)	 	}}		8 Q,,.CII((c3++c"C  	#%  Qs   *ACC'	c                  a aa S P                   oV 3R  lp ! V3R lR\        P                  4      oVV3R lpS P                  V4      ;_uu_ 4       pS P	                  4       pSP                  V! VP                  V4      4       \        P                  ! V4      pRRR4       \        P                  ! 4        \        P                  ! 4        \        P                  ! 4        S P                  X! 4       4       R#   + '       g   i     Lg; i)c                    < SP                  \        P                  \        P                  4      pVP	                  V R R7      p V P                  ^ 4       V P                  4        R# rA  )r   rW   r  r  r  ra  rQ   )rv   r  r   s   & r   r  :TestSSL.test_shutdown_timeout_handler_leak.<locals>.serveru  sP    44##""F %%d%=DIIbMJJLr   c                   4   <a  ] tR tRt o V3R ltR tRtV tR# )<TestSSL.test_shutdown_timeout_handler_leak.<locals>.Protocoli~  c                @   < \         P                  ! SR 7      V n        R# r   N)r	   r   r   r   s   &r   r   ETestSSL.test_shutdown_timeout_handler_leak.<locals>.Protocol.__init__  s    ">>t4r   c                <    V P                   P                  R 4       R # r   )r   r"   r3   s   &&r   r5   LTestSSL.test_shutdown_timeout_handler_leak.<locals>.Protocol.connection_lost  s    ##D)r   )r   N)r7   r8   r9   r:   r   r5   r;   r<   )r>   r   s   @r   rU  r,  ~  s     5* *r   rU  c                    <"   SP                   ! S.V O5R V/ G Rj  xL
 w  r#VP                  4        VP                  G Rj  xL
  R#  L, L5i)r   N)rT  rQ   r   )r^   rL  r  prrU  r   s   &&  r   r   :TestSSL.test_shutdown_timeout_handler_leak.<locals>.client  sB     11(KTKsKKFBHHJ&&LL Ls!   AA
%AAAAN)r   r	   rU  rx   r   r	  r^   r  r  r  r  r  )r   r  r   r   rL  rU  r   s   f    @@r   "test_shutdown_timeout_handler_leak*TestSSL.test_shutdown_timeout_handler_leakr  s    yy		*w'' 	*	
 __V$$113C##F388S$9:++c"C % 	







 	#%  %$s   A	C::D
	c                b  a aaaa S P                   o\        P                  ! 4       oR oVVV 3R lp ! VV3R lR\        P                  4      oVVVVV 3R lpS P	                  V4      ;_uu_ 4       pSP                  V! VP                  4      4       R R R 4       R #   + '       g   i     R # ; i)Nc                   < SP                  \        P                  \        P                  4      pVP	                  V R R7      p V P                  R4       V P                  R4      R8X  g   Q hV P                  R4       V P                  \        P                  4       SP                  SP                  4       V P                  R4      R8X  g   Q hV P                  4        R# )Tr     hellor      world   extra bytesr   N)r   rW   r  r  r  r   ra  r  ri   r  r   setrQ   )rv   r  eofr   r   s   & r   r  =TestSSL.test_shutdown_timeout_handler_not_set.<locals>.server  s    44##""F %%d%=DIIh99T?h...IIn%MM&..)%%cgg.99T?c)))JJLr   c                   F   <a  ] tR tRt o V3R ltR tV3R ltR tRtV t	R# )?TestSSL.test_shutdown_timeout_handler_not_set.<locals>.Protocoli  c                N   < \         P                  ! SR 7      V n        RV n        R# r.  )r	   r   r   r   r   s   &r   r   HTestSSL.test_shutdown_timeout_handler_not_set.<locals>.Protocol.__init__  s    ">>t4!%r   c                    Wn         R # r   )r   r#   s   &&r   r$   OTestSSL.test_shutdown_timeout_handler_not_set.<locals>.Protocol.connection_made  s    !*r   c                   < VR 8X  d8   V P                   P                  R4       V P                   P                  4        R# VoR# )r9  r:  N)r   r   rr  )r   r)   extras   &&r   r*   MTestSSL.test_shutdown_timeout_handler_not_set.<locals>.Protocol.data_received  s4    8#NN((2NN002 !Er   c                ~    Vf   V P                   P                  R 4       R # V P                   P                  V4       R # r   )r   r"   r   r3   s   &&r   r5   OTestSSL.test_shutdown_timeout_handler_not_set.<locals>.Protocol.connection_lost  s+    ;HH''-HH**3/r   )r   r   N)
r7   r8   r9   r:   r   r$   r*   r5   r;   r<   )r>   rF  r   s   @r   rU  r@    s     &+!0 0r   rU  c                 &  <"   SP                  4       pSP                  ! S.V O5R V/ G Rj  xL
 w  r#SP                  4       G Rj  xL
  VP                  4        VP                  G Rj  xL
  VP                  4        SR8X  g   Q hR#  L] LE L#5i)r   Nr;  )r   rT  waitresume_readingr   rQ   )	r^   rL  r  r3  rU  r=  rF  r   r   s	   &   r   r   =TestSSL.test_shutdown_timeout_handler_not_set.<locals>.client  s|     113C11(KTKsKKFB((*&&LLHHJN*** Ls3   *BBBB#B+B, BBB)r   r	   EventrU  rx   r	  r^   )r   r  r   r   rU  r=  rF  r   s   f   @@@@r   %test_shutdown_timeout_handler_not_set-TestSSL.test_shutdown_timeout_handler_not_set  s{    yymmo	 	0 	0w'' 	0.	+ 	+ __V$$##F388$45 %$$$s   1"BB.	r   i  r   i  )NN)5r7   r8   r9   r:   r  r   r  r   rM   r[   ri   r   r   rx   r}   r   r   r   r   
contextlibcontextmanagerr   r   r   r   r   
bigmemtestr
  r)  r;  rH  rY  rq  rx  r  r  r  r  r4  rH  rf  r  r  r  r  r  r!  r&  r5  rO  r;   r<   r  rS   r>   s   @@r   rJ   rJ   P   s     L""G); ..;; #00; 	;
  ";B !.."00.GG4  ( ((0 R%@] A]~`D?B#?J)'V/>b3D9L,$\;Az>,@]8~;AzL1\ R%@O AOb@D9;vz;x^;@O8!2%!N66 66r   rJ   c                   N   a  ] tR tRt o R tR tRRRRRR	/R
 ltR tR tRt	V t
R# )TestSocketWrapperi  c                    Wn         R # r   )_TestSocketWrapper__sockr  s   &&r   r   TestSocketWrapper.__init__  s    r   c                    R p\        V4      V8  d9   V P                  V\        V4      ,
          4      pVR 8X  d   \        hW#,          pKH  V# )r   )r'   ra  r4  )r   nr  r)   s   &&  r   r   TestSocketWrapper.recv_all  sA    #hl99QS\*Ds{,,KC
r   r  Fr  Ndo_handshake_on_connectTc                   \        V\        P                  4      '       g   Q hVP                  V P                  VVVR 7      pV'       d   VP                  4        V P                  P                  4        WPn        R# ))r  r  r]  N)r   r   r   r  rX  r  rQ   )r   ssl_contextr  r  r]  ssl_socks   &&$$$ r   r   TestSocketWrapper.starttls  se    
 +s~~6666**KK[+$; + =
 !!#r   c                .    \        V P                  V4      # r   )rh   rX  r  s   &&r   r  TestSocketWrapper.__getattr__  s    t{{D))r   c                `    R P                  \        V 4      P                  V P                  4      # )z	<{} {!r}>)r  typer7   rX  r.   s   &r   __repr__TestSocketWrapper.__repr__  s#    !!$t*"5"5t{{CCr   )__sock)r7   r8   r9   r:   r   r   r   r  rf  r;   r<   r=   s   @r   rV  rV    s?     "!% *.$*D Dr   rV  c                   2   a  ] tR tRt o R tR tR tRtV tR# )SocketThreadi  c                4    R V n         V P                  4        R# FN)_activer  r.   s   &r   r   SocketThread.stop   s    		r   c                &    V P                  4        V # r   )r   r.   s   &r   	__enter__SocketThread.__enter__  s    

r   c                &    V P                  4        R # r   )r   r3   s   &*r   __exit__SocketThread.__exit__  s    		r   )rm  N)	r7   r8   r9   r:   r   rp  rs  r;   r<   r=   s   @r   rj  rj    s      r   rj  c                   ,   a  ] tR tRt o R tR tRtV tR# )r{   i  c                    \         P                  P                  V R R R4       RV n        W@n        W n        RV n        W0n        Wn        R # )Nztest-clientT)	r  r  r   r  _timeoutr  rm  _prog_test)r   r  rv   r   r_   s   &&&&&r   r   TestThreadedClient.__init__  s>    !!$dMB


r   c                     V P                  \        V P                  4      4       R #   \        \        3 d    h \
         d'   pT P                  P                  T4        R p?R # R p?ii ; ir   )rx  rV  r  KeyboardInterrupt
SystemExitBaseExceptionry  r   r   s   & r   r%  TestThreadedClient.run  sR    	.JJ(45!:. 	 	.JJ))"--	.s   $( A*A*A%%A*)rm  rx  r  ry  rw  r  N)r7   r8   r9   r:   r   r%  r;   r<   r=   s   @r   r{   r{     s     . .r   r{   c                   Z   a a ] tR tRt oR tV 3R ltR tR tR t]	R 4       t
RtVtV ;t# )	rs   i!  c                8   \         P                  P                  V R R R4       RV n        ^ V n        ^ V n        WPn        W@n        W n        RV n	        W0n
        \        P                  ! 4       w  V n        V n        V P                  P                  R4       Wn        R # )Nztest-serverTF)r  r  r   r  _clients_finished_clients_max_clientsrw  r  rm  rx  ri   
socketpair_s1_s2setblockingry  )r   r  rv   r   r_   ra   s   &&&&&&r   r   TestThreadedServer.__init__#  s|    !!$dMB!"'

#..0$(U#
r   c                @  <  V P                   '       d<   V P                   P                  4       R8w  d    V P                   P                  R4       \        SV `  4        V P                  P                  4        V P                  P                  4        V P                   P                  4        R#   \         d     Lki ; i  \        ST `  4        T P                  P                  4        T P                  P                  4        T P                   P                  4        i ; i)r  s   stopN)	r  filenor   rr   rL   r   r  rQ   r  rR   s   &r   r   TestThreadedServer.stop5  s    
	xxxDHHOO-3HHMM'* GLNJJHHNNHHNN   GLNJJHHNNHHNNs.   B? B? B. .B<9B? ;B<<B? ?ADc                \    V P                   P                  R 4       V P                  4        R# rl  )r  r  _runr.   s   &r   r%  TestThreadedServer.runB  s    

u%		r   c                X   V P                   '       d   V P                  V P                  8  d   R # \        P                  ! V P                  V P
                  .. . V P                  4      w  rpV P
                  V9   d   R # V P                  V9   g   K   V P                  P                  4       w  rEV ;P                  ^,          un        VP                  V P                  4        V;_uu_ 4        V P                  V4       R R R 4       EK
  R #   + '       g   i     EK  ; i  \        \        3 d    h \         d/   pRT n          h   T P                  P                  T4       i ; iR p?ii ; i  \         d     EK}  \         P"                   d    T P                   '       g    R # h i ; i)NF)rm  r  r  selectr  r  rw  r  ro   _handle_clientr|  r}  r~  ry  r   BlockingIOErrorri   r_   )r   rwxr  r^   rw   s   &      r   r  TestThreadedServer._runF  s=   lll}} 1 11mmTXX&B?GA! xx1}zzQ>!%!2!2!4JD MMQ&MOODMM2
>!T //5 "T1 0 "TT-z: ( >',>! JJ99"=> ' ~~ <<<	sl   E/ $
D" .D D" D	D" D" "E,=E,>E'EE$$E''E,/F)>F)F)'F)c                :    V P                  \        V4      4       R # r   )rx  rV  r  s   &&r   r  !TestThreadedServer._handle_clientj  s    

$T*+r   c                6    V P                   P                  4       # r   )r  r   r.   s   &r   r^   TestThreadedServer.addrm  s    zz%%''r   )rm  r  r  r  rx  r  r  r  ry  rw  r  )r7   r8   r9   r:   r   r   r%  r  r  propertyr^   r;   r<   r  rT  s   @@r   rs   rs   !  s8     $">H, ( ( (r   rs   )$r	   rQ  r  r   r  ri   sysrj   r  r  unittest.mockr  r  r   ImportErrorr  r   test.test_asyncior   rW   platformMACOSr  r   rU  r   Filterr@   skipIfTestCaserJ   rV  r  rj  r{   rs   r   r   r   <module>r     s  
   	    
        1 
	!"0''"" 'Dw~~  
o.~6j!! ~6 /~6L4$D $DN9## . .*N( N(Y8  
Cs   C2 2	C>=C>