
    2hhF                        S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
rS SKrS SKr S SKrS SKJr  S SKJr  \R(                  S:H  r\(       d  SOSrS r " S S	\ R0                  5      r " S
 S\R4                  5      r\R8                  " \SL S5       " S S\R:                  5      5       r " S S5      r " S S\R@                  5      r! " S S\!5      r" " S S\!5      r#g! \ a    Sr Nf = f)    N)support)utilsdarwin   @   c                  0    [         R                  " S 5        g N)asyncioset_event_loop_policy     C/opt/python-3.13.8/usr/lib/python3.13/test/test_asyncio/test_ssl.pytearDownModuler       s    !!$'r   c                   >    \ rS rSrSrSrS	S jrS rS rS r	S r
Srg)
MyBaseProto$   Nc                     S U l         SU l        SU l        Ub3  [        R                  " US9U l        [        R                  " US9U l        g g )NINITIALr   loop)	transportstatenbytesr
   Future	connecteddoneselfr   s     r   __init__MyBaseProto.__init__(   sB    
$^^6DND1DI r   c                     Xl         U R                  S:X  d   U R                  5       eSU l        U R                  (       a  U R                  R                  S 5        g g )Nr   	CONNECTED)r   r   r   
set_resultr   r   s     r   connection_madeMyBaseProto.connection_made0   sG    "zzY&2

2& 
>>NN%%d+ r   c                     U R                   S:X  d   U R                   5       eU =R                  [        U5      -  sl        g )Nr"   )r   r   lenr   datas     r   data_receivedMyBaseProto.data_received7   s/    zz[(4$**4(s4y r   c                 T    U R                   S:X  d   U R                   5       eSU l         g )Nr"   EOF)r   r   s    r   eof_receivedMyBaseProto.eof_received;   s$    zz[(4$**4(
r   c                     U R                   S;   d   U R                   5       eSU l         U R                  (       a  U R                  R                  S 5        g g )N)r"   r.   CLOSED)r   r   r#   r   excs     r   connection_lostMyBaseProto.connection_lost?   sC    zz11=4::=1
99II  & r   )r   r   r   r   r   r	   )__name__
__module____qualname____firstlineno__r   r   r   r%   r+   r0   r6   __static_attributes__r   r   r   r   r   $   s%    ID2,!'r   r   c                        \ rS rSrS rS rSrg)MessageOutFilterF   c                     Xl         g r	   msg)r   rB   s     r   r   MessageOutFilter.__init__G   s    r   c                 :    U R                   UR                   ;   a  gg)NFTrA   )r   records     r   filterMessageOutFilter.filterJ   s    88vzz!r   rA   N)r8   r9   r:   r;   r   rF   r<   r   r   r   r>   r>   F   s    r   r>   zNo ssl modulec                     ^  \ rS rSrSr\R                  rU 4S jrU 4S jr	\
R                  S\R                  SSS.S	 jr\
R                  \R                  4S
 jrS rS rS2S jrSS.S jr\R(                  S 5       rS rS rS rS r\R4                  " SSSS9S 5       rS rS rS rS rS r S  r!S3S! jr"S" r#S# r$S$ r%S% r&S& r'S' r(\R4                  " SSSS9S( 5       r)S) r*S* r+S+ r,S, r-S- r.S. r/S/ r0S0 r1S1r2U =r3$ )4TestSSLP   i  c                    > [         TU ]  5         [        R                  " 5       U l        U R                  U R                  5        U R                  U R                  R                  5        g r	   )supersetUpr
   new_event_loopr   set_event_loop
addCleanupcloser   	__class__s    r   rM   TestSSL.setUpV   sB    **,	DII&		(r   c                    > U R                   R                  5       (       d   [        R                  " U R                   5        U R	                  5         [
        R                  " 5         [        TU ]!  5         g r	   )	r   	is_closed
test_utilsrun_briefly
doCleanupsr   
gc_collectrL   tearDownrR   s    r   r[   TestSSL.tearDown\   sI    yy""$$""499-r   N   
   )familyaddrtimeoutbacklogmax_clientsc                    UcB  U[        [        SS 5      :X  a+  [        R                  " 5        nUR                  nS S S 5        OSn[        R                  " U[        R
                  5      nUc  [        S5      eUS::  a  [        S5      eUR                  U5         UR                  U5        UR                  U5        [        XXU5      $ ! , (       d  f       N= f! [         a  n	UR                  5         U	eS n	A	ff = f)NAF_UNIX	127.0.0.1r   timeout is requiredr   #only blocking sockets are supported)getattrsockettempfileNamedTemporaryFilenameSOCK_STREAMRuntimeError
settimeoutbindlistenOSErrorrQ   TestThreadedServer)
r   server_progr_   r`   ra   rb   rc   tmpsockexs
             r   
tcp_serverTestSSL.tcp_servere   s     <D9900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
C=&C88C=c                     [         R                   " U[         R                  5      nUc  [        S5      eUS::  a  [        S5      eUR                  U5        [	        XX5      $ )Nrh   r   ri   )rk   ro   rp   rq   TestThreadedClient)r   client_progr_   ra   rx   s        r   
tcp_clientTestSSL.tcp_client   s\     }}VV%7%78?455a<DEE !. 	.r   c                 F    U R                   " US[        R                  0UD6$ Nr_   )rz   rk   re   r   argskwargss      r   unix_serverTestSSL.unix_server       FV^^FvFFr   c                 F    U R                   " US[        R                  0UD6$ r   )r   rk   re   r   s      r   unix_clientTestSSL.unix_client   r   r   c                     [         R                  " [         R                  5      nU=R                  [         R                  -  sl        UR                  X5        U$ 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   Tdisable_verifyc                v    [         R                  " 5       nSUl        U(       a  [         R                  Ul        U$ NF)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              #      #    [         R                  " S5      n[        S5      nUR                  U5         S v   UR	                  U5        g ! UR	                  U5        f = f7f)Nr
   zhas no effect when using ssl)logging	getLoggerr>   	addFilterremoveFilter)r   loggerrF   s      r   _silence_eof_received_warning%TestSSL._silence_eof_received_warning   sT      ""9-!"@A 	('F's   3A"A A"AA"c                      U R                   R                  5         U R                  U5        g ! U R                  U5        f = fr	   )r   stopfailr   ry   s     r   _abort_socket_testTestSSL._abort_socket_test   s,    	IINNIIbMDIIbMs	   . Ac                 ,    [         R                  " 5       $ r	   )r
   rN   r/   s    r   new_loopTestSSL.new_loop   s    %%''r   c                 ,    [         R                  " 5       $ r	   )r
   DefaultEventLoopPolicyr/   s    r   
new_policyTestSSL.new_policy   s    --//r   c                    #    [        U[        R                  5      (       d  g  UR                  5       I S h  vN   g  N! [        [
        4 a     g f = f7fr	   )
isinstancer
   StreamWriterwait_closedBrokenPipeErrorConnectionError)r   objs     r   r   TestSSL.wait_closed   sF     #w3344	//###1 		s1   !A? =? A? AAAA   i  F)sizememusedry_runc                   ^ ^^^^^^	^
^^^ SmUm[         R                  mS[        -  mS[        -  mT R                  [        R
                  [        R                  5      mT R                  5       m	/ m
UUUU 4S jmUUU	U
U 4S jmUUUU UU4S jnT R                  5          T R                  R                  U" 5       5        S S S 5        T R                  TT5        T
 H  nUR                  5         M     g ! , (       d  f       N:= f)Nr      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA   BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBc                   >#    U R                  [        T5      5      I S h  vN nTR                  UT5        UR                  S5        U R                  [        T5      5      I S h  vN nTR                  UT5        UR	                  S[        S5      [        S5      /5        UR                  5       I S h  vN   UR                  5         TS-  mg  N Nl N7fN   OKs   SP   A   Mr]   	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                    >^ ^#    [         R                  " 5       mUUU UUU4S jnTR                  U5      nUR                  5         TR	                  U5        TI S h  vN   g  N7f)Nc                   >  U R                  T5        U R                  T5        U R                  T5        U R                  S5      nTR	                  US5        U R                  T5        U R                  S5      nTR	                  US5        U R                  5         TR                  R                  TR                  S 5        g ! [         a0  nTR                  R                  TR                  U5         S nAg S nAff = f)N   r         SPAM)starttlsconnectsendrecv_allr   rQ   r   call_soon_threadsafer#   	Exceptionset_exception)	rx   r*   ry   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 
C>&C99C>r
   r   r   startappend)	r`   r   clientr   r   r   r   clientsr   s	   `  @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                    >#    0 n [        [        R                  S9n [        R                  " TSS4[
        R                  T
S.U D6I S h  vN n UR                  nT	R                  U5        US   R                  5       n/ n[        T5       H  nUR                  T" U5      5        M     [        R                  " [        R                  " U6 T5      I S h  vN   T	R                  R                  UR                   5        UR#                  5       I S h  vN   g  N ND N	! T	R                  R                  UR                   5        UR#                  5       I S h  vN    f = f7f)Nssl_handshake_timeoutrg   r   r_   r   )dictr   SHORT_TIMEOUTr
   start_serverrk   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")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   `   @@@@@@@@@@r   test_create_server_ssl_1 TestSSL.test_create_server_ssl_1   s    	&&~-~-00!3!3
 779	 	 	 	:	( 	(6 //1II((8 2 	i(FKKM  21s    !C55
Dc                   ^ ^^^^^^	^
 T R                   R                  S 5        SmSmS[        -  mS[        -  mT R                  [        R
                  [        R                  5      m
T R                  5       mUUU U
4S jm	UUUUU 4S jnUUUUU 4S jnUUU U	4S jnT R                  5          U" U5        S S S 5        T R                  5          U" U5        S S S 5        g ! , (       d  f       N0= f! , (       d  f       g = f)	Nr   r   r   r   c                 :  > U R                  TSS9  U R                  [        T5      5      nTR                  UT5        U R	                  S5        U R                  [        T5      5      nTR                  UT5        U R	                  S5        U R                  5         g )NTserver_sider   r   )r   r   r(   r   r   rQ   )rx   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                   >#    0 n[        [        R                  S9n[        R                  " U TSS.UD6I S h  vN u  p#UR                  T5        TR                  UR                  S5      I S h  vN S5        UR                  T5        TR                  UR                  S5      I S h  vN S5        TS-  mUR                  5         TR                  U5      I S h  vN   g  N Nt N< N7f)	Nr    r   server_hostnamer   r   r   r   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   6C+C#6C+0C%19C+*C'+2C+C)C+%C+'C+)C+c                   >#    [         R                   " 5       nUR                  U 5        [        R                  " UTSS9I S h  vN u  p#UR	                  T5        TR                  UR                  S5      I S h  vN S5        UR	                  T5        TR                  UR                  S5      I S h  vN S5        TS-  mUR                  5         TR                  U5      I S h  vN   UR                  5         g  N N NL N7f)Nr  )rx   r   r  r   r   r   r   r]   )	rk   r   r
   r  r   r   r   rQ   r   )	r`   rx   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C=6D:C?;9D4D52D'D(D?DDDc                 0  > SmS nTR                  TTTS9 n/ n[        T5       H$  nUR                  U " UR                  5      5        M&     TR                  R                  U" U6 5        S S S 5        TR                  TT5        g ! , (       d  f       N!= f)Nr   c                  D   #    [         R                  " U 6 I S h  vN $  N7fr	   r
   r  r  s    r   _gatherBTestSSL.test_create_connection_ssl_1.<locals>.run.<locals>._gathers  s     $^^U3333     rc   rb   rz   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 ! 47:y)ALLchh0 * 		,,We_=4 S),4 4   AB
B)	r   set_exception_handlerr  r   rW   r  r  r   r   )r   r   r   r-  r   r   r   r	  r   r  r
  s   `   @@@@@@@r   test_create_connection_ssl_1$TestSSL.test_create_connection_ssl_1&  s    		''-	~-~-00
 779	 		+ 	+,	 	*	- 	-& //1K 2 //1 21 21 21s   .	C!	C2!
C/2
D c                   ^ ^ T R                  5       mT R                  R                  S 5        S nUU 4S jnT R                  USSS9 nT R	                  [
        S5         T R                  R                  U" UR                  5      5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                      g r	   r   r   s    r   <lambda>CTestSSL.test_create_connection_ssl_slow_handshake.<locals>.<lambda>      dr   c                      U R                  S5        U R                  5         g ! [         a     Nf = f! U R                  5         f = fN   r   ConnectionAbortedErrorrQ   rx   s    r   r  ATestSSL.test_create_connection_ssl_slow_handshake.<locals>.server  s>    k* 

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

s   $ 
14 14 Ac                    >#    [         R                  " U TSSS.6I S h  vN u  pUR                  5         TR                  U5      I S h  vN   g  N0 N7f)Nr  g      ?r   r  r   )r
   r  rQ   r   r`   r   r   r   r   s      r   r   ATestSSL.test_create_connection_ssl_slow_handshake.<locals>.client  sR     #*#:#:! "&)	$+ +NF
 LLN""6***+ +s!   AA*A
AAAr]   r)  zSSL handshake.*is taking longer)r   r   r0  rz   assertRaisesRegexr=  r  r`   )r   r  r   r  r   s   `   @r   )test_create_connection_ssl_slow_handshake1TestSSL.test_create_connection_ssl_slow_handshake  s    779 			''(:;		+ __V)*%&  (+.''*68 		,,VCHH-=>	8	( (8 8	( (s$   
B/!,BB/
B,	(B//
B=c                   ^ ^^ T R                   R                  S 5        T R                  [        R                  [        R
                  5      mT R                  SS9mU4S jnUU 4S jnT R                  USSS9 nT R                  [        R                  5         T R                   R                  U" UR                  5      5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                      g r	   r   r5  s    r   r6  GTestSSL.test_create_connection_ssl_failed_certificate.<locals>.<lambda>  r8  r   Fr   c                    >  U R                  TSS9  U R                  5         U R                  5         g ! [        R                  [        4 a     N-f = f! U R                  5         f = f)NTr  )r   r   r   SSLErrorrt   rQ   )rx   r
  s    r   r  ETestSSL.test_create_connection_ssl_failed_certificate.<locals>.server  s^     $  &  

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

s!    4 AA AA A&c                    >#    [         R                  " U TS[        R                  S.6I S h  vN u  pUR	                  5         TR                  U5      I S h  vN   g  N0 N7f)Nr  rA  )r
   r  r   r   rQ   r   rB  s      r   r   ETestSSL.test_create_connection_ssl_failed_certificate.<locals>.client  sX     #*#:#:! "&-&;&;	$= =NF
 LLN""6***= +s!   *A"A*A"A A" A"r]   r)  )r   r0  r   rW   r  r  r   rz   assertRaisesr   SSLCertVerificationErrorr  r`   )r   r  r   r  r   r
  s   `   @@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$   ; C),CC)
C&	"C))
C7c                   ^ ^^^ [         R                  " 5       m/ mT R                  R                  U4S j5        SmU4S jnUU 4S jnT R	                  USSS9 nT R                  [        R                  5         T R                  R                  U" UR                  5      5        S S S 5        S S S 5        T R                  T5        T R                  T/ 5        g ! , (       d  f       N:= f! , (       d  f       NC= f)Nc                 &   > TR                  U5      $ r	   )r   )r   ctxmessagess     r   r6  4TestSSL.test_ssl_handshake_timeout.<locals>.<lambda>  s    (//#:Nr   Fc                    >  U R                  S5        U R                  5         g ! [         a    Sm Nf = f! U R                  5         f = f)Nr;  Tr<  )rx   server_side_aborteds    r   r  2TestSSL.test_ssl_handshake_timeout.<locals>.server  sB    k* 

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

s   % 47 47 A	c           	         >#    [         R                  " TR                  R                  " [         R                  /U Q7TSSS.6S5      I S h  vN   g  N7f)Nr  g      $@rA        ?)r
   r   r   create_connectionProtocol)r`   r   r   s    r   r   2TestSSL.test_ssl_handshake_timeout.<locals>.client  sV     ""		++$$00 &$&*.0   s   A	AAAr]   r)  )rW   simple_client_sslcontextr   r0  rz   rO  r
   TimeoutErrorr  r`   r   r   )r   r  r   r  r   rV  rY  s   `   @@@r   test_ssl_handshake_timeout"TestSSL.test_ssl_handshake_timeout  s     #;;= 		''(NO#		 __V)*%&  (+.""7#7#78		,,VCHH-=> 9	( 	+, 	2& 98	( (s$    C,;,C'C,
C)	%C,,
C:c                 h  ^ ^^^^ [         R                  " 5       mT R                  R                  S 5        SmSmS n " UU4S jS[        R
                  5      mUUU 4S jnT R                  USSS9 nT R                  [        5         T R                  R                  U" UR                  5      5        S S S 5        S S S 5        T(       a+  T(       a  T R                  S	5        g T R                  S
5        g T(       a  T R                  S5        g g ! , (       d  f       Nb= f! , (       d  f       Nk= f)Nc                     g r	   r   r   rU  s     r   r6  <TestSSL.test_ssl_handshake_connection_lost.<locals>.<lambda>       $r   Fc                 F    U R                  S5        U R                  5         g )Nr   )recvrQ   r>  s    r   r  :TestSSL.test_ssl_handshake_connection_lost.<locals>.server  s    IIdOJJLr   c                   .   > \ rS rSrU4S jrU 4S jrSrg)?TestSSL.test_ssl_handshake_connection_lost.<locals>.ClientProtoi
  c                 
   > Smg NTr   )r   r   connection_made_calleds     r   r%   OTestSSL.test_ssl_handshake_connection_lost.<locals>.ClientProto.connection_made  	    )-&r   c                 
   > Smg ro  r   )r   r5   connection_lost_calleds     r   r6   OTestSSL.test_ssl_handshake_connection_lost.<locals>.ClientProto.connection_lost  rr  r   r   N)r8   r9   r:   r;   r%   r6   r<   )rt  rp  s   r   ClientProtorm  
  s    .. .r   rv  c                 f   >#    TR                   R                  " T/U Q7TSS.6I S h  vN 4  g  N7f)Nr  r  )r   r]  )r`   rv  r   r   s    r   r   :TestSSL.test_ssl_handshake_connection_lost.<locals>.client  s?     ))--$$ " "	$ $ % $s   %1/1r]   r)  z$unexpected call to connection_lost()zEunexpected call to connection_lost() withoutcalling connection_made()z$unexpected call to connection_made())rW   r`  r   r0  r
   r^  rz   rO  ConnectionResetErrorr  r`   r   )r   r  r   r  rv  r   rt  rp  s   `   @@@@r   "test_ssl_handshake_connection_lost*TestSSL.test_ssl_handshake_connection_lost  s     #;;= 			''(>?!&!&	
	. 	.'** 	.	% __V)*%&  (+.""#78		,,VCHH-=> 9	( "%		@A		 6 7#II<= $ 98	( (s$   4D#
,D6D#
D 	D##
D1c                    [         R                  n[         R                  " U5      nUR                  [        R
                  [        R                  5        [        US5      (       a  SUl        [         R                  Ul
        [         R                  " U5      n[        US5      (       a  SUl        [         R                  Ul
        g )Nr   F)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                   ^^^^^^^ U R                   m " UU4S jS[        5      n[        R                  " [        R                  5      nUR	                  S5        UR                  S5        UR                  5       mSmS mSmUUUU4S jn[        R                  " USS	9nUR                  5         UR                  5       u  pxU" TS
9mTTl         0 n	U(       a  [        [        R                  S9n	TR                  TR                  " U4S jU4SU0U	D65      n
TR!                  5         UR#                  5         UR#                  5         UR%                  S5        U R'                  UR)                  5       5        U R+                  TR,                  S5        U R+                  TR.                  [1        T5      5        U R+                  TT5        U
R3                  5       u  pU(       a&  U R5                  SUR6                  R8                  5        UR#                  5         U R                   R;                  [<        R>                  " S5      5        g )Nc                   :   >^  \ rS rSrU U4S jrU U4S jrSrU =r$ )5TestSSL.test_connect_accepted_socket.<locals>.MyProtoi:  c                 Z   > [         TU ]  U5        TR                  TR                  5        g r	   )rL   r6   r  r   )r   r5   rS   r   s     r   r6   ETestSSL.test_connect_accepted_socket.<locals>.MyProto.connection_lost<  s     ',tyy)r   c                 Z   > [         TU ]  U5        U R                  R                  T5        g 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   )r8   r9   r:   r;   r6   r+   r<   __classcell__)rS   r  r   s   @r   MyProtor  :  s    *8 8r   r  rf   r]   s	   test datas   rogerc                  D  >  [         R                   " [         R                  5      n Tb  TR                  U 5      n U R                  T5        U R	                  T5        U R                  S5      mU R                  5         g ! [         a  n[        SU5         S nAg S nAff = f)Nc   z8Failure in client thread in test_connect_accepted_socket)	rk   r   wrap_socketr   sendallrj  rQ   r   print)csockr5   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;A? ?
B	BBT)targetdaemonr   r   c                     > T $ r	   r   r~  s   r   r6  6TestSSL.test_connect_accepted_socket.<locals>.<lambda>i  s    r   r   r3   SSL皙?) r   r   rk   r   rr   rs   r   	threadingThreadr   acceptr   r   r   create_taskconnect_accepted_socketrun_foreverrQ   joinassertFalseis_aliver   r   r   r(   resultassertInrS   r8   r  r
   sleep)r   
server_sslr  r  lsockr   threadconnr  r  ftrr`   r  r   r  r~  r  s     `         @@@@@@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                   ^ ^^ T R                   R                  S 5        [        R                  " 5       m[        R                  " 5       mU4S jnUU 4S jnT R                  USSS9 nT R                   R                  U" UR                  5      5      nS S S 5        T R                  WS5        g ! , (       d  f       N!= f)Nc                     g r	   r   rf  s     r   r6  =TestSSL.test_start_tls_client_corrupted_ssl.<locals>.<lambda>~  rh  r   c                 l  > U R                  5       n U R                  TSS9  U R                  S5        U R                  S5        UR	                  S5        U R                  5         UR                  5         g ! [
        R                   a     N7f = f! U R                  5         UR                  5         f = f)NTr     A
r]   s!   please corrupt the SSL connection)dupr   r  r   r   r   rK  rQ   )rx   	orig_sockr
  s     r   r  ;TestSSL.test_start_tls_client_corrupted_ssl.<locals>.server  s    
I" $  & V$a CD 

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

!s$   AA7 7BB BB "B3c                   >#    [         R                  " U TSS.6I S h  vN u  pTR                  UR                  5       I S h  vN S5        UR	                  S5        TR                  [        R                  5         UR                  5       I S h  vN   S S S 5        UR                  5          TR                  U5      I S h  vN   g N N N;! , (       d  f       N?= f N! [        R                   a     gf = f7f)Nr  r  r     BOK)
r
   r  r   readliner   rO  r   rK  rQ   r   rB  s      r   r   ;TestSSL.test_start_tls_client_corrupted_ssl.<locals>.client  s     #*#:#:! "$$ $NF
 6??#44f=LL""3<<0oo''' 1LLN&&v... $
 5 ( 10 /<< s   C<C	$C<C9C<=CCCC</C" C C" C<C<C
CC< C" "C96C<8C99C<r]   r)  r  )	r   r0  rW   simple_server_sslcontextr`  rz   r  r`   r   )r   r  r   r  resr   r
  s   `    @@r   #test_start_tls_client_corrupted_ssl+TestSSL.test_start_tls_client_corrupted_ssl}  s    		''(>?446";;=	"	" __V)*%&  (+.))..vchh/?@C	( 	d#( (s   (,B//
B=c                   ^ ^^^^ ST R                   -  m[        R                  " 5       m[        R                  " 5       mUU U4S jn " U 4S jS[        R
                  5      mUUUU 4S jnT R                  UT R                  S9 nT R                  R                  [        R                  " U" UR                  5      [        R                  S95        S S S 5        g ! , (       d  f       g = f)N   1c                   > U R                  TR                  5        U R                  [        T5      5      nTR	                  [        U5      [        T5      5        U R                  TSS9  U R                  S5        U R                  [        T5      5      nTR	                  [        U5      [        T5      5        U R                  5         U R                  5         g NTr     O	rq   r  r   r(   r   r   r  unwraprQ   rx   r*   	HELLO_MSGr   r  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                   4   > \ rS rSrS rU 4S jrS rS rSrg)>TestSSL.test_start_tls_client_reg_proto_1.<locals>.ClientProtoi  c                 *    Xl         X l        SU l        g Nr   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                 h   > U =R                   S-  sl         TR                  U R                   S5        g Nr]   r  r   r~  r  r   s     r   r%   NTestSSL.test_start_tls_client_reg_proto_1.<locals>.ClientProto.connection_made  *    ""a'"  !3!3Q7r   c                 :    U R                   R                  U5        g r	   r  r#   r)   s     r   r+   LTestSSL.test_start_tls_client_reg_proto_1.<locals>.ClientProto.data_received      ''-r   c                 :    U R                   R                  S5        g ro  r  r#   r/   s    r   r0   KTestSSL.test_start_tls_client_reg_proto_1.<locals>.ClientProto.eof_received      &&t,r   r  r  r  N	r8   r9   r:   r;   r   r%   r+   r0   r<   r/   s   r   rv  r        &
8
.-r   rv  c                   >^^#    [         R                  " S5      I S h  vN   T	R                  R                  5       mT	R                  R                  5       mT	R                  R                  " UUU4S j/U Q76 I S h  vN u  pUR                  T5        T	R                  R                  XT5      I S h  vN nT	R                  TI S h  vN S5        UR                  T5        TI S h  vN   UR                  5         g  N N NN N; N7f)Nr\  c                     > T " TT5      $ r	   r   rv  r  r  s   r   r6  KTestSSL.test_start_tls_client_reg_proto_1.<locals>.client.<locals>.<lambda>      GV4r   r  )	r
   r  r   create_futurer]  r   	start_tlsr   rQ   )
r`   r  r~  new_trr  r  rv  r  r  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
5D6D

DD
*D+D
D
D
D
D
ra   )PAYLOAD_SIZErW   r  r`  r
   r^  rz   r  r   r  r   r`   r   r   r   r  r   r  rv  r  r  r  s   `   @@@@r   !test_start_tls_client_reg_proto_1)TestSSL.test_start_tls_client_reg_proto_1  s    4,,,	#<<>#<<>		-'** 	-"	 	$ __UDLL_9SII((  !1)0)>)>@A :99s   AC
C*c                 Z  ^ ^^^^ ST R                   -  mT R                  [        R                  [        R                  5      mT R                  5       mUU U4S jn " U 4S jS[        R                  5      mUUUU 4S jnT R                  UT R                  S9 nT R                  R                  [        R                  " U" UR                  5      [        R                  S95        S S S 5        [         R"                  " T5      mT R%                  T" 5       5        g ! , (       d  f       N;= f)Nr  c                 :  > U R                  TR                  5        U R                  TSS9  U R                  S5        U R	                  [        T5      5      nTR                  [        U5      [        T5      5        U R                  5         U R                  5         g r  )	rq   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                   4   > \ rS rSrS rU 4S jrS rS rSrg)?TestSSL.test_create_connection_memory_leak.<locals>.ClientProtoi  c                 *    Xl         X l        SU l        g r  r  r  s      r   r   HTestSSL.test_create_connection_memory_leak.<locals>.ClientProto.__init__  r  r   c                 t   > Xl         U =R                  S-  sl        TR                  U R                  S5        g r  )r  r  r   r  s     r   r%   OTestSSL.test_create_connection_memory_leak.<locals>.ClientProto.connection_made  s/    ""a'"  !3!3Q7r   c                 :    U R                   R                  U5        g r	   r  r)   s     r   r+   MTestSSL.test_create_connection_memory_leak.<locals>.ClientProto.data_received  r  r   c                 :    U R                   R                  S5        g ro  r  r/   s    r   r0   LTestSSL.test_create_connection_memory_leak.<locals>.ClientProto.eof_received  r  r   r  Nr  r/   s   r   rv  r    s    &
8.-r   rv  c                   >^^#    [         R                  " S5      I S h  vN   TR                  R                  5       mTR                  R                  5       mTR                  R                  " UUU4S j/U Q7ST06I S h  vN u  pTR                  TI S h  vN S5        UR                  T5        TI S h  vN   UR                  5         g  N NN N9 N7f)Nr\  c                     > T " TT5      $ r	   r   r  s   r   r6  LTestSSL.test_create_connection_memory_leak.<locals>.client.<locals>.<lambda>  r  r   r   r  )r
   r  r   r  r]  r   r   rQ   )	r`   r  r~  r  r  rv  r  r  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  )r  r   rW   r  r  r   r
   r^  rz   r  r   r  r   r`   r   r   weakrefrefassertIsNoner  s   `   @@@@r   "test_create_connection_memory_leak*TestSSL.test_create_connection_memory_leak  s    4,,,	88!3!3588:
		-'** 	-&	 	  __UDLL_9SII((  !1)0)>)>@A : !^4.*+ :9s   AD
D*c                   ^ ^^^^^^	 ST R                   -  m[        R                  " 5       m	[        R                  " 5       mSmUU U	4S jn " U4S jS[        R
                  5      m " U4S jS[        R                  5      mUUUUUU 4S jnT R                  UT R                  S	9 nT R                  R                  [        R                  " U" UR                  5      T R                  S	95        S S S 5        g ! , (       d  f       g = f)
Nr  r   c                 T  > U R                  TR                  5        U R                  [        T5      5      nTR	                  [        U5      [        T5      5        U R                  TSS9  U R                  S5        U R                  [        T5      5      nTR	                  [        U5      [        T5      5        U R                  S5        U R                  [        T5      5      nTR	                  [        U5      [        T5      5        U R                  5         U R                  5         g )NTr  r     2r  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                   :   > \ rS rSrS rU 4S jrS rS rS rSr	g)	CTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirstiC  c                 0    Xl         [        S5      U l        g 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                    > TS-  mg r  r   r   r  client_con_made_callss     r   r%   STestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirst.connection_madeH      %*%r   c                     U R                   $ r	   )r  )r   sizehints     r   
get_bufferNTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirst.get_bufferL  s    xxr   c                 v    US:X  d   eU R                   R                  [        U R                  S U 5      5        g 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                     g r	   r   r/   s    r   r0   PTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoFirst.eof_receivedS  s    r   )r  r  N)
r8   r9   r:   r;   r   r%   r  r#  r0   r<   r  s   r   ClientProtoFirstr  C  s    (+ Ar   r(  c                   4   > \ rS rSrS rU 4S jrS rS rSrg)DTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecondiV  c                 *    Xl         X l        SU l        g r  r  r  s      r   r   MTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecond.__init__W  r  r   c                    > TS-  mg r  r   r  s     r   r%   TTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecond.connection_made\  r  r   c                 :    U R                   R                  U5        g r	   r  r)   s     r   r+   RTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecond.data_received`  r  r   c                 :    U R                   R                  S5        g ro  r  r/   s    r   r0   QTestSSL.test_start_tls_client_buf_proto_1.<locals>.ClientProtoSecond.eof_receivedc  r  r   r  Nr  r'  s   r   ClientProtoSecondr*  V  s    &
+.-r   r3  c                   >^#    [         R                  " S5      I S h  vN   TR                  R                  5       mTR                  R                  5       nTR                  R                  5       nTR                  R                  " UU4S j/U Q76 I S h  vN u  p4UR                  T	5        TR                  R                  X4T5      I S h  vN nTR                  TI S h  vN S5        UR                  T	5        UR                  T" X5      5        TR                  UI S h  vN S5        UR                  T	5        UI S h  vN   UR                  5         TR                  T
S5        g  GNN N N N NP N27f)Nr\  c                     > T " T5      $ r	   r   )r(  on_data1s   r   r6  KTestSSL.test_start_tls_client_buf_proto_1.<locals>.client.<locals>.<lambda>n  s    (2r   r  r  r]   )
r
   r  r   r  r]  r   r  r   set_protocolrQ   )r`   on_data2r  r  r~  r  r6  r(  r3  r  r  r  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   E9E,A7E9E/6E9E1E9"E3#AE9$E5%E9E7(E9/E91E93E95E97E9r  )r  rW   r  r`  r
   BufferedProtocolr^  rz   r  r   r  r   r`   )
r   r  r   r  r(  r3  r  r  r  r  s
   `   @@@@@@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_9SII((  !1)-78 :99s   (A	C::
Dc                   ^ ^^^^ ST R                   -  m[        R                  " 5       mT R                  R	                  5       mUU U4S jn " U 4S jS[
        R                  5      mUUUU U4S jnT R                  UT R                  S9 nT R                  R                  [
        R                  " U" UR                  5      [        R                  S95        S S S 5        g ! , (       d  f       g = f)Nr  c                   > U R                  TR                  5        U R                  [        T5      5      nTR	                  [        U5      [        T5      5         TR
                  R                  TR                  S 5        U R                  S5      nU R                  5         g ! [         a     Nf = f! U R                  5         f = fr:  )
rq   r  r   r(   r   r   r   r#   r=  rQ   )rx   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$ $
B1.B4 0B11B4 4Cc                   4   > \ rS rSrS rU 4S jrS rS rSrg)>TestSSL.test_start_tls_slow_client_cancel.<locals>.ClientProtoi  c                 *    Xl         X l        SU l        g r  r  r  s      r   r   GTestSSL.test_start_tls_slow_client_cancel.<locals>.ClientProto.__init__  r  r   c                 h   > U =R                   S-  sl         TR                  U R                   S5        g r  r  r  s     r   r%   NTestSSL.test_start_tls_slow_client_cancel.<locals>.ClientProto.connection_made  r  r   c                 :    U R                   R                  U5        g r	   r  r)   s     r   r+   LTestSSL.test_start_tls_slow_client_cancel.<locals>.ClientProto.data_received  r  r   c                 :    U R                   R                  S5        g ro  r  r/   s    r   r0   KTestSSL.test_start_tls_slow_client_cancel.<locals>.ClientProto.eof_received  r  r   r  Nr  r/   s   r   rv  rC    r  r   rv  c                 :  >^^#    [         R                  " S5      I S h  vN   TR                  R                  5       mTR                  R                  5       mTR                  R                  " UUU4S j/U Q76 I S h  vN u  pUR                  T5        T	I S h  vN   TR                  [         R                  5         [         R                  " TR                  R                  XT5      S5      I S h  vN   S S S 5        g  N N Nj N! , (       d  f       g = f7f)Nr\  c                     > T " TT5      $ r	   r   r  s   r   r6  KTestSSL.test_start_tls_slow_client_cancel.<locals>.client.<locals>.<lambda>  r  r   )
r
   r  r   r  r]  r   rO  ra  r   r  )
r`   r  r~  r  r  rv  r  r  r   r@  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&&II''>B   98 %
=
 , 98s^   DDAD>D?DD#D?5D
4D5D
9
DDDD


DDr  )r  rW   r`  r   r  r
   r^  rz   r  r  r   r`   r   r   )r   r  r   r  rv  r  r  r@  s   `   @@@@r   !test_start_tls_slow_client_cancel)TestSSL.test_start_tls_slow_client_cancel  s    4,,,	#<<>$(II$;$;$=!		-'** 	-"	 	$ __UDLL_9SII((  !1)0)>)>@A :99s   AC""
C0c                 (  ^ ^^^^^^ ST R                   -  m[        R                  " 5       m[        R                  " 5       mUUU 4S jm " S S[        R
                  5      mUU U4S jmUUUU 4S jnT R                  R                  U" 5       5        g )Nr  c                 ^  > U R                  TR                  5        U R                  U5        U R                  [	        T5      5      nTR                  [	        U5      [	        T5      5        U R                  T5        U R                  T5        U R                  5         U R                  5         g r	   )
rq   r  r   r   r(   r   r   r  r  rQ   )rx   r`   r*   r  r  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                   2    \ rS rSrS rS rS rS rS rSr	g)	4TestSSL.test_start_tls_server_1.<locals>.ServerProtoi  c                 6    Xl         X l        X0l        SU l        g Nr   )on_conr  on_con_lostr*   )r   rY  r  rZ  s       r   r   =TestSSL.test_start_tls_server_1.<locals>.ServerProto.__init__  s    $$#. 	r   c                 :    U R                   R                  U5        g r	   )rY  r#   )r   r  s     r   r%   DTestSSL.test_start_tls_server_1.<locals>.ServerProto.connection_made  s    &&r*r   c                 .    U =R                   U-  sl         g r	   )r*   r)   s     r   r+   BTestSSL.test_start_tls_server_1.<locals>.ServerProto.data_received  s    		T!	r   c                 :    U R                   R                  S5        g r  r  r/   s    r   r0   ATestSSL.test_start_tls_server_1.<locals>.ServerProto.eof_received  s    &&q)r   c                 x    Uc  U R                   R                  S 5        g U R                   R                  U5        g r	   )rZ  r#   r   r4   s     r   r6   DTestSSL.test_start_tls_server_1.<locals>.ServerProto.connection_lost  s/    ;$$//5$$2237r   )r*   rY  rZ  r  N)
r8   r9   r:   r;   r   r%   r+   r0   r6   r<   r   r   r   ServerProtorV    s     +"*8r   rd  c                 h  >#    UI S h  vN nUR                  T5        TR                  U R                  S5        TR                  R	                  X@TSTR
                  S9I S h  vN nUI S h  vN   UI S h  vN   TR                  U R                  T5        UR                  5         g  N NG N? N77f)Nr   T)r  r   )r   r   r*   r   r  r  rQ   )	r~  rY  r  rZ  r  r  r  r   r  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   B2B*AB2$B,%	B2.B./	B28B092B2,B2.B20B2c            	      x  >^^#    T	R                   R                  5       n T	R                   R                  5       nT	R                   R                  5       nT" XU5      mT	R                   R                  U4S jSS5      I S h  vN nUR                  S   R	                  5       mT	R                  UU4S jT	R                  S9   [        R                  " T" TXU5      T	R                  S9I S h  vN   S S S 5        UR                  5         UR                  5       I S h  vN   g  N N7! , (       d  f       N;= f N7f)Nc                     > T $ r	   r   r  s   r   r6  CTestSSL.test_start_tls_server_1.<locals>.run_main.<locals>.<lambda>  s    r   rg   r   c                    > T" U T5      $ r	   r   )rx   r`   r   s    r   r6  rj    s    fT4.@r   r  )r   r  create_serverr   r   r   r  r
   r   rQ   r   )
rY  r  rZ  r  r`   r~  rd  r   rf  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&&< LL* * *7 LLN$$&&&/*7 7 'sI   A<D:D#A D:+D'-D%.D'2+D:D8D:%D''
D51D:)r  rW   r  r`  r
   r^  r   r  )r   rm  r  rd  r   r  rf  r  s   ` @@@@@@r   test_start_tls_server_1TestSSL.test_start_tls_server_1  sk    4,,,	#<<>#<<>		8'** 	8,	 	' 	'& 			$$XZ0r   c                   ^ ^^^^^^	^
^^^^^^^ SmUm	[         R                  mS[        -  mS[        -  mT R                  [        R
                  [        R                  5      mT R                  5       m
T R                  [        R
                  [        R                  5      mT R                  5       m/ mUUUU 4S jm " U4S jS[        R                  5      mUU4S jmUUU
UUU 4S jmUU	U UUU4S	 jnT R                  5          T R                  R                  U" 5       5        S S S 5        T R                  TT	5        T H  nUR                  5         M     g ! , (       d  f       N:= f)
Nr   r   r   c                   >#    U R                  [        T5      5      I S h  vN nTR                  UT5        UR                  S5        U R                  [        T5      5      I S h  vN nTR                  UT5        UR	                  S[        S5      [        S5      /5        UR                  5       I S h  vN   UR                  5         TS-  mg  N Nl N7fr   r   r   s      r   r   >TestSSL.test_create_server_ssl_over_ssl.<locals>.handle_client$  r   r   c                   ,   >^  \ rS rSrU U4S jrSrU =r$ )?TestSSL.test_create_server_ssl_over_ssl.<locals>.ServerProtocoli4  c           	         >^^ [        5       mUR                  5         U R                  R                  U R                  R	                  XTSS95      mUU4S jnTR                  U5        g )NTr  c                    >  TR                  5       nTR                  U5        g ! [         a  nTR                  U5         S nAg S nAff = fr	   )r  r%   r   r6   )r  r  ry   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
)rL   pause_reading_loopr  r  add_done_callback)r   r   ry  r   rx  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   )r8   r9   r:   r;   r%   r<   r  )rS   r~  s   @r   ServerProtocolru  4  s    * *r   r  c                  D   > [         R                  " 5       n T" U T5      nU$ r	   )r
   StreamReader)r   protocolr  r   s     r   server_protocol_factoryHTestSSL.test_create_server_ssl_over_ssl.<locals>.server_protocol_factoryD  s"    ))+F%fm<HOr   c                    >^ ^#    [         R                  " 5       mUUU UUUU	4S jnT	R                  U5      nUR                  5         TR	                  U5        TI S h  vN   g  N7f)Nc                 *  >^ ^^  T R                  T
5        T R                  T5        [        R                  " 5       m[        R                  " 5       mTR	                  TT5      nUUU 4S jnU" UR
                  5        U" UR                  T5        U" UR                  S5      nTR                  US5        U" UR                  T	5        Sn U" UR                  S5      nU(       d  OX4-  nM!  TR                  US5        U" UR                  5        T R                  5         TR                  R                  TR                  S 5        g ! [         a@  nTR                  R                  TR                  U5        T R                  5          S nAg S nAff = f)Nc                 P  >   U " U6 n TR                  (       a  TR                  TR	                  5       5        U$ ! [         R                   aS    TR                  (       a  TR                  TR	                  5       5        TR                  TR                  S5      5         Of = fM  )Ni   )r   SSLWantReadErrorpendingr   readr   rj  )funcr   rvincomingoutgoingrx   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$(IIhmmo$> (tyy/? @A	 #s   < A$B#"B#r   r   r   r   r   )r   r   r   	MemoryBIOwrap_biodo_handshaker   r  r   r  rQ   r   r   r#   r   r   )rx   sslobjr  r*   chunkry   r  r  r   r   r`   client_sslctx_1client_sslctx_2r   r   s   `     @@r   r   JTestSSL.test_create_server_ssl_over_ssl.<locals>.test_client.<locals>.progL  s>   -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   DE 
F6FFr   )
r`   r   r   r   r   r   r  r  r   r   s
   `  @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                    >#    0 n TR                   R                  " T	SS4[        R                  T
S.U D6I S h  vN n UR                  nTR                  U5        US   R                  5       n/ n[        T5       H  nUR                  T" U5      5        M     [        R                  " [        R                  " U6 T5      I S h  vN   TR                   R                  UR                  5        UR                  5       I S h  vN   g  N ND N	! TR                   R                  UR                  5        UR                  5       I S h  vN    f = f7f)Nrg   r   r   )r   rl  rk   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'''sW   6EDEBD D
D 
8EDE
D E9EE
EE)r   r  r  r   rW   r  r  r   r
   StreamReaderProtocolr   r   r  r   r   )r   r   r   r   r   r   r   r  r  r	  r  r  r   r   r  r  r~  r   s   `   @@@@@@@@@@@@@@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II((8 2 	i(FKKM  21s   !E
E)c                 @  ^ ^^^^^^ SmSmS[         -  mT R                  [        R                  [        R                  5      mT R                  5       mUU U4S jmUUUU 4S jnUUU U4S jnT R                  5          U" U5        S S S 5        g ! , (       d  f       g = f)Nr   r   r   c                    > U R                  TSS9  U R                  [        T5      5      nTR                  UT5        U R	                  S5        U R                  5         U R                  5         g )NTr  r   )r   r   r(   r   r   r  rQ   )rx   r*   r   r   r
  s     r   r  -TestSSL.test_shutdown_cleanly.<locals>.server  s\    MM   " ==V-DT6*IIeKKMJJLr   c                   >#    0 n[        [        R                  S9n[        R                  " U TSS.UD6I S h  vN u  p#UR                  T5        TR                  UR                  S5      I S h  vN S5        TR                  UR                  5       I S h  vN S5        TS-  mUR                  5         TR                  U5      I S h  vN   g  N Nb N< N7f)Nr   r  r  r   r   r   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   6CC6C0C1'CC2CCCCCCc                 0  > SmS nTR                  TTTS9 n/ n[        T5       H$  nUR                  U " UR                  5      5        M&     TR                  R                  U" U6 5        S S S 5        TR                  TT5        g ! , (       d  f       N!= f)Nr   c                  D   #    [         R                  " U 6 I S h  vN $  N7fr	   r$  r%  s    r   r&  ;TestSSL.test_shutdown_cleanly.<locals>.run.<locals>._gather  s     $^^U3333r(  r)  r*  r+  s	        r   r-  *TestSSL.test_shutdown_cleanly.<locals>.run  s    C4 -6)2 ! 47:y)ALLchh0 * 		,,UO%4 S),4 4r/  )r  r   rW   r  r  r   r   )	r   r   r-  r   r   r	  r   r  r
  s	   `  @@@@@@r   test_shutdown_cleanlyTestSSL.test_shutdown_cleanly  s    	~-00!3!35779		+ 	+*	- 	-& //1K 211s   =	B
Bc                   ^ ^^^^^	 SmSmT R                  [        R                  [        R                  5      m	T R	                  5       mS mUUU U	4S jnUU 4S jnUUUUU 4S jnT R                  U" U5      5       nT R                  R                  U" UR                  5      5        S S S 5        g ! , (       d  f       g = f)N       c                 :  > U R                  TSS9  TR                  U R                  S5      S5        U R                  S5        [        R
                  " S5        U R                  TT-  5      nTR                  [        U5      TT-  5        U R                  5         g )NTr  r      ping   pongr\  )r   r   r   r   timer  r(   rQ   rx   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                    >^  UU U4S jnU$ )Nc                    >  T" U 5        TR                   R                  TR                  S 5        g ! [         a0  nTR                   R                  TR                  U5         S nAg S nAff = fr	   r   r   r#   r   r   rx   ry   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   2 
A,&A''A,r   r  r  r  r   s   ` r   r-  /TestSSL.test_flush_before_shutdown.<locals>.run      L Nr   c                   >#    T
R                   R                  5       m	[        R                  " U TSS.6I S h  vN u  pUR                  R
                  nUR                  S5        UR                  S5      I S h  vN nT
R                  US5        UR                  5         [        T5       H  nUR                  ST-  5        M     UR                  5         UR                  5         T
R                  U5      I S h  vN    UR                  5       I S h  vN nT
R                  US5        T	I S h  vN   g  N N N> N'! [         a     Nf = f N7fNr  r  r  r   r     xr   )r   r  r
   r  r   _ssl_protocolr   r   r   pause_writingr   rQ   resume_writingr   r  ry  )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   5ED6AE:D8;B E;D:<ED> D<D> +E0E1E8E:E<D> >
EE
EE	r   rW   r  r  r   rz   r   r  r`   )
r   r  r-  r   r  r  r  r   r  r
  s
   `    @@@@@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   <,B11
B?c                 N  ^ ^^^^	^
 SmSmT R                  [        R                  [        R                  5      m
T R	                  5       mS m	UUU U
4S jnUUU U
4S jnUUUU	U 4S jnU	U 4S jnT R                  U" U5      5       nT R                  R                  U" UR                  5      5        S S S 5        T R                  U" U5      5       nT R                  R                  U" UR                  5      5        S S S 5        g ! , (       d  f       NZ= f! , (       d  f       g = f)Nr  r  c                 L  > [         R                  " 5       n[         R                  " 5       nT
R                  XSS9n  UR                  5         UR                  (       a  U R                  UR                  5       5           UR                  S5      n T	R                  US5        UR                  S5        U R                  UR                  5       5        [        R                  " S5        T	R                  [         R                  5         UR                  5         S S S 5        U R                  UR                  5       5        Sn  [        UR                  S5      5      nXV-  nM!  ! [         R                   aS    UR                  (       a  U R                  UR                  5       5        UR                  U R                  S5      5         Of = fGM  ! [         R                   a#    UR                  U R                  S5      5         Of = fGM  ! , (       d  f       N= f! [         R                   a#    UR                  U R                  S5      5         N[         R                    a     Of = fT	R                  UTT-  5        UR                  5         U R#                  5         g )	NTr   @  r   r  r  皙?r   r   r  r  r  r  r   r  r  r   rj  r   r  r  rO  r  r(   SSLZeroReturnErrorrQ   rx   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 9IIhmmo& HE 23E%H = ++ 5''		(--/2NN499U#345  ++ 5NN499U#345  98 ++ 5NN499U#34--  Xut|4 MMOJJLH   E& G 
HH! &A$GG4H
	H

H!4I-I-,I-c                 x  > U R                  TSS9  TR                  U R                  S5      S5        U R                  S5        [        R
                  " S5        U R                  [        R                  5        U R                  TT-  5      nTR                  [        U5      TT-  5        U R                  5         g NTr  r   r  r  r  r   r   r   r   r  r  shutdownrk   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                 X  >#    T	R                   R                  5       m[        R                  " U TSS.6I S h  vN u  pUR	                  S5        UR                  S5      I S h  vN nT	R                  US5        [        T5       H!  nUR                  R                  ST-  5        M#      UR                  5       I S h  vN nT	R                  US5        TI S h  vN   UR                  5         T	R                  U5      I S h  vN   g  N N NN! [        [        4 a     NLf = f NJ N#7fr  )r   r  r
   r  r   r   r   r   r   _test__append_write_backlogr  r   ry  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   5D*D
+D*$D%AD*,D ?D D D*D&(D*D(D*D*D D# D*"D##D*(D*c                    >^  UU U4S jnU$ )Nc                    >  T" U 5        TR                   R                  TR                  S 5        g ! [         a0  nTR                   R                  TR                  U5         S nAg S nAff = fr	   r  r  s     r   r  QTestSSL.test_remote_shutdown_receives_trailing_data.<locals>.run.<locals>.wrapper  r  r  r   r  s   ` 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
  s   `     @@@@@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                 N  ^ ^^^^	^
 SmSmT R                  [        R                  [        R                  5      m
T R	                  5       mS m	UUU U
4S jnUUU U
4S jnUUUU	U 4S jnU	U 4S jnT R                  U" U5      5       nT R                  R                  U" UR                  5      5        S S S 5        T R                  U" U5      5       nT R                  R                  U" UR                  5      5        S S S 5        g ! , (       d  f       NZ= f! , (       d  f       g = f)Nr  r  c                 R  > [         R                  " 5       n[         R                  " 5       nT
R                  XSS9n  UR                  5         UR                  (       a  U R                  UR                  5       5           UR                  S5      n T	R                  US5        UR                  S5        U R                  UR                  5       5        [        R                  " S5        T	R                  [         R                  5         UR                  5         S S S 5        U R                  UR                  5       5        Sn  [        UR                  S5      5      nXV-  nM!  ! [         R                   aS    UR                  (       a  U R                  UR                  5       5        UR                  U R                  S5      5         Of = fGM  ! [         R                   a#    UR                  U R                  S5      5         Of = fGM  ! , (       d  f       N= f! [         R                   a#    UR                  U R                  S5      5         N[         R                    a     Of = fT	R                  UTT-  S	-  5        UR                  5         U R#                  5         g )
NTr  r  r   r  r  r  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 9IIhmmo& HE 23E%H = ++ 5''		(--/2NN499U#345  ++ 5NN499U#345  98 ++ 5NN499U#34--  Xut|A~6 MMOJJLr  c                 x  > U R                  TSS9  TR                  U R                  S5      S5        U R                  S5        [        R
                  " S5        U R                  [        R                  5        U R                  TT-  5      nTR                  [        U5      TT-  5        U R                  5         g r  r  r  s     r   r  VTestSSL.test_remote_shutdown_receives_trailing_data_on_slow_socket.<locals>.eof_server  r  r   c                 d  >^^#    TR                   R                  5       m[        R                  " U T
SS.6I S h  vN u  pUR	                  S5        UR                  S5      I S h  vN nTR                  US5        [        T	S-  5       H!  nUR                  R                  ST-  5        M#      UR                  5       I S h  vN nTR                  US5        UR                  R                  R                  m " S	 S
5      mUU4S jn[        R                   R"                  R%                  TSTR                  US9   TI S h  vN   UR'                  5         TR)                  U5      I S h  vN   S S S 5        g  GNC GN N! [        [        4 a     Nf = f NT N-! , (       d  f       g = f7f)Nr  r  r  r   r  r   r  r   c                   *    \ rS rSrSS jrS rS rSrg)iTestSSL.test_remote_shutdown_receives_trailing_data_on_slow_socket.<locals>.client.<locals>.SocketWrapperi  Nc                     Xl         g r	   r>  r   rx   s     r   r   rTestSSL.test_remote_shutdown_receives_trailing_data_on_slow_socket.<locals>.client.<locals>.SocketWrapper.__init__  s     $Ir   c                 .    [        U R                  U5      $ r	   )rj   rx   r   rn   s     r   __getattr__uTestSSL.test_remote_shutdown_receives_trailing_data_on_slow_socket.<locals>.client.<locals>.SocketWrapper.__getattr__  s    "499d33r   c                 Z    [        U5      S-  nU R                  R                  US U 5      $ )Nr   )r(   rx   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   r>  )returnN)r8   r9   r:   r;   r   r  r   r<   r   r   r   SocketWrapperr    s    %4:r   r  c                    > TR                   c2  [        TR                  T5      (       d  T" TR                  5      Tl        [        R                  R
                  $ 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   ry  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   5F0E=+F0&F 'A	F01F FF A%F0 FF(F/F0F4
F0 F0F FF0FF0FF
F-)F0c                    >^  UU U4S jnU$ )Nc                    >  T" U 5        TR                   R                  TR                  S 5        g ! [         a0  nTR                   R                  TR                  U5         S nAg S nAff = f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   ` r   r-  OTestSSL.test_remote_shutdown_receives_trailing_data_on_slow_socket.<locals>.run-  r  r   r  r  s   `     @@@@@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                   ^ ^ [         R                   " [         R                  5      nUR                  S5        UR                  5       mUU 4S jnU    T R	                  [
        5       nT R                  R                  U" 5       5        [        R                  " 5         [        R                  " 5         [        R                  " 5         S S S 5        T R                  SR                  WR                  5      5        S S S 5        g ! , (       d  f       NA= f! [         a%  nT R                  [        U5      S5         S nANDS nAff = f! , (       d  f       g = f)Nrf   c                    >#     [         R                  " TR                  R                  " [         R                  /T Q7SS06S5      I S h  vN   TR                  S5        g  N! [        [         R                  4 a     g f = f7f)Nr   Tr  TimeoutError is not raisedr
   r   r   r]  r^  r   ConnectionRefusedErrorra  )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zUnexpected ResourceWarning: {}zResourceWarning not triggered)rk   r   rr   r   assertWarnsResourceWarningr   r  gccollectr   formatwarningAssertionErrorr   str)r   sr  cmer`   s   `    @r   test_connect_timeout_warning$TestSSL.test_connect_timeout_warning=  s    MM&..)	 }}		8 	O%%o6"II008JJLJJLJJL	 7 		:AA"**MN Q66
 " J  Q)HIIJ QsO   ED(A DD*E
D	D
ED>9E>EE
Ec                   ^ ^ [         R                   " [         R                  5      nUR                  S5        UR                  S5        UR	                  5       mUU 4S jnU   [
        R                  " 5       nT R                  R                  U" U5      5        [        R                  " U5      nS S S 5        T R                  W" 5       5        g ! , (       d  f       N%= f)Nrf   r]   c                   >#     [         R                  " TR                  R                  " [         R                  /TQ7SU 06S5      I S h  vN   TR                  S5        g  N! [        [         R                  4 a     g f = f7f)Nr   r  r  r  )rU  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  )rk   r   rr   rs   r   r   r   r   r  r	  r
  r  )r   r%  r  rU  r`   s   `   @r   #test_handshake_timeout_handler_leak+TestSSL.test_handshake_timeout_handler_leakY  s    MM&..)	 	}}		8 ,,.CII((c3++c"C  	#%  Qs   "AC
Cc                   ^ ^^ T R                   mU 4S jn " U4S jS[        R                  5      mUU4S jnT R                  U5       nT R	                  5       nTR                  U" UR                  U5      5        [        R                  " U5      nS S S 5        [        R                  " 5         [        R                  " 5         [        R                  " 5         T R                  W" 5       5        g ! , (       d  f       Nd= f)Nc                    > TR                  [        R                  [        R                  5      nUR	                  U SS9n U R                  S5        U R                  5         g )NTr  r  )r   rW   r  r  r  rj  rQ   )rx   r
  r   s     r   r  :TestSSL.test_shutdown_timeout_handler_leak.<locals>.serveru  sP    44##""F %%d%=DIIbMJJLr   c                   (   > \ rS rSrU 4S jrS rSrg)<TestSSL.test_shutdown_timeout_handler_leak.<locals>.Protocoli~  c                 8   > [         R                  " TS9U l        g Nr   )r
   r   r   r   s    r   r   ETestSSL.test_shutdown_timeout_handler_leak.<locals>.Protocol.__init__  s    ">>t4r   c                 :    U R                   R                  S 5        g r	   )r   r#   r4   s     r   r6   LTestSSL.test_shutdown_timeout_handler_leak.<locals>.Protocol.connection_lost  s    ##D)r   )r   N)r8   r9   r:   r;   r   r6   r<   r   s   r   r^  r3  ~  s    5*r   r^  c                    >#    TR                   " T/U Q7SU06I S h  vN u  p#UR                  5         UR                  I S h  vN   g  N+ N7f)Nr   )r]  rQ   r   )r`   rU  r  prr^  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)r   r
   r^  rz   r   r  r`   r	  r
  r  r   r  )r   r  r   r  rU  r^  r   s   `    @@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	C11
C?c                 J  ^ ^^^^ T R                   m[        R                  " 5       mS mUUU 4S jn " UU4S jS[        R                  5      mUUUUU 4S jnT R	                  U5       nTR                  U" UR                  5      5        S S S 5        g ! , (       d  f       g = f)Nc                   > TR                  [        R                  [        R                  5      nUR	                  U SS9n U R                  S5        U R                  S5      S:X  d   eU R                  S5        U R                  [        R                  5        TR                  TR                  5        U R                  S5      S:X  d   eU R                  5         g )NTr     hellor      world   extra bytesr   )r   rW   r  r  r  r   rj  r  rk   r  r   setrQ   )rx   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                   :   > \ rS rSrU4S jrS rU 4S jrS rSrg)?TestSSL.test_shutdown_timeout_handler_not_set.<locals>.Protocoli  c                 F   > [         R                  " TS9U l        S U l        g r5  )r
   r   r   r   r   s    r   r   HTestSSL.test_shutdown_timeout_handler_not_set.<locals>.Protocol.__init__  s    ">>t4!%r   c                     Xl         g r	   )r   r$   s     r   r%   OTestSSL.test_shutdown_timeout_handler_not_set.<locals>.Protocol.connection_made  s    !*r   c                    > US:X  a6  U R                   R                  S5        U R                   R                  5         g Umg )Nr@  rA  )r   r   r{  )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                 x    Uc  U R                   R                  S 5        g U R                   R                  U5        g r	   )r   r#   r   r4   s     r   r6   OTestSSL.test_shutdown_timeout_handler_not_set.<locals>.Protocol.connection_lost  s+    ;HH''-HH**3/r   )r   r   N)	r8   r9   r:   r;   r   r%   r+   r6   r<   )rM  r   s   r   r^  rG    s    &+!0r   r^  c                 "  >#    TR                  5       nTR                  " T/U Q7SU06I S h  vN u  p#TR                  5       I S h  vN   UR                  5         UR                  I S h  vN   UR                  5         TS:X  d   eg  N[ NC N!7f)Nr   rB  )r   r]  waitresume_readingr   rQ   )	r`   rU  r  r:  r^  rD  rM  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
   Eventr^  rz   r  r`   )r   r  r   r  r^  rD  rM  r   s   `   @@@@r   %test_shutdown_timeout_handler_not_set-TestSSL.test_shutdown_timeout_handler_not_set  su    yymmo	 	0 	0w'' 	0.	+ 	+ __V$##F388$45 %$$s   )"B
B"r   r	   )NN)4r8   r9   r:   r;   r  r   r  r  rM   r[   rk   r   r   rz   r   r   r   r   r   
contextlibcontextmanagerr   r   r   r   r   
bigmemtestr  r1  rE  rQ  rb  rz  r  r  r  r  r  r<  rP  ro  r  r  r  r  r  r(  r-  r<  rV  r<   r  rS   s   @r   rI   rI   P   sx    L""G) !.."00!;B !.."00.GG <@  ( ((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   rI   c                   >    \ rS rSrS rS rSSSS.S jrS	 rS
 rSr	g)TestSocketWrapperi  c                     Xl         g r	   )_TestSocketWrapper__sockr  s     r   r   TestSocketWrapper.__init__  s    r   c                     Sn[        U5      U:  a>  U R                  U[        U5      -
  5      nUS:X  a  [        eX#-  n[        U5      U:  a  M>  U$ rX  )r(   rj  r=  )r   nr  r*   s       r   r   TestSocketWrapper.recv_all  sP    #hl99QS\*Ds{,,KC	 #hl
 
r   FNTr  r  do_handshake_on_connectc                    [        U[        R                  5      (       d   eUR                  U R                  UUUS9nU(       a  UR                  5         U R                  R                  5         XPl        g )Nrd  )r   r   r   r  r_  r  rQ   )r   ssl_contextr  r  re  ssl_socks         r   r   TestSocketWrapper.starttls  se    
 +s~~6666**KK[+$; + =
 !!#r   c                 .    [        U R                  U5      $ r	   )rj   r_  r  s     r   r  TestSocketWrapper.__getattr__  s    t{{D))r   c                 `    SR                  [        U 5      R                  U R                  5      $ )Nz	<{} {!r}>)r!  typer8   r_  r/   s    r   __repr__TestSocketWrapper.__repr__  s#    !!$t*"5"5t{{CCr   )__sock)
r8   r9   r:   r;   r   r   r   r  rn  r<   r   r   r   r]  r]    s'     #!%)-$*Dr   r]  c                   &    \ rS rSrS rS rS rSrg)SocketThreadi  c                 2    SU l         U R                  5         g r   )_activer  r/   s    r   r   SocketThread.stop   s    		r   c                 &    U R                  5         U $ r	   )r   r/   s    r   	__enter__SocketThread.__enter__  s    

r   c                 $    U R                  5         g r	   )r   r4   s     r   __exit__SocketThread.__exit__  s    		r   )rt  N)r8   r9   r:   r;   r   rw  rz  r<   r   r   r   rr  rr    s    r   rr  c                        \ rS rSrS rS rSrg)r}   i  c                     [         R                  R                  U S S S5        SU l        X@l        X l        SU l        X0l        Xl        g )Nztest-clientT)	r  r  r   r  _timeoutr  rt  _prog_test)r   r  rx   r   ra   s        r   r   TestThreadedClient.__init__  s>    !!$dMB


r   c                      U R                  [        U R                  5      5        g ! [        [        4 a    e [
         a%  nU R                  R                  U5         S nAg S nAff = fr	   )r  r]  r  KeyboardInterrupt
SystemExitBaseExceptionr  r   r   s     r   r-  TestThreadedClient.run  sR    	.JJ(45!:. 	 	.JJ))"--	.s   $' A&A!!A&)rt  r  r  r  r~  r  N)r8   r9   r:   r;   r   r-  r<   r   r   r   r}   r}     s    .r   r}   c                   P   ^  \ rS rSrS rU 4S jrS rS rS r\	S 5       r
SrU =r$ )	ru   i!  c                 6   [         R                  R                  U S S S5        SU l        SU l        SU l        XPl        X@l        X l        SU l	        X0l
        [        R                  " 5       u  U l        U l        U R                  R                  S5        Xl        g )Nztest-serverTr   F)r  r  r   r  _clients_finished_clients_max_clientsr~  r  rt  r  rk   
socketpair_s1_s2setblockingr  )r   r  rx   r   ra   rc   s         r   r   TestThreadedServer.__init__#  s|    !!$dMB!"'

#..0$(U#
r   c                    >  U R                   (       a:  U R                   R                  5       S:w  a   U R                   R                  S5        [        TU ]  5         g ! [         a     Nf = f! [        TU ]  5         f = f)Ns   stop)r  filenor   rt   rL   r   rR   s    r   r   TestThreadedServer.stop5  sa    	xxDHHOO-3HHMM'* GLN   GLNs(   /A- A 
A*'A- )A**A- -A=c                     U R                      U R                   R                  S5        U R                  5         S S S 5        U R                  R	                  5         U R
                  R	                  5         g ! , (       d  f       NC= f! U R                  R	                  5         U R
                  R	                  5         f = fr   )r  r  _runr  rQ   r  r/   s    r   r-  TestThreadedServer.run?  ss    	

&&u-		  HHNNHHNN  HHNNHHNNs!   B ,A7B 7
BB 6B>c                 <   U R                   (       a  U R                  U R                  :  a  g [        R                  " U R                  U R
                  // / U R                  5      u  pnU R
                  U;   a  g U R                  U;   aj   U R                  R                  5       u  pEU =R                  S-  sl        UR                  U R                  5         U   U R                  U5        S S S 5        U R                   (       a  M  g g ! , (       d  f       N#= f! [        [        4 a    e [         a.  nSU l          e ! U R                  R                  U5        f = fS nAff = f! [         a     GMr  [         R"                   a    U R                   (       d   g e f = f)Nr]   F)rt  r  r  selectr  r  r~  r  rq   _handle_clientr  r  r  r  r   BlockingIOErrorrk   ra   )r   rwxr  r`   ry   s          r   r  TestThreadedServer._runH  s9   ll}} 1 11mmTXX&B?GA! xx1}zzQ>!%!2!2!4JD MMQ&MOODMM2
>! //5 "1 lll0 "T-z: ( >',>! JJ99"=> ' ~~ <<	s`   E% D D	,D 	
DD D E"4E<D==EEE"%
F3$FFc                 8    U R                  [        U5      5        g r	   )r  r]  r  s     r   r  !TestThreadedServer._handle_clientl  s    

$T*+r   c                 6    U R                   R                  5       $ r	   )r  r   r/   s    r   r`   TestThreadedServer.addro  s    zz%%''r   )rt  r  r  r  r  r  r  r  r  r~  r  )r8   r9   r:   r;   r   r   r-  r  r  propertyr`   r<   r  r[  s   @r   ru   ru   !  s1    $">H, ( (r   ru   )$r
   rX  r  r   r  rk   sysrl   r  r  unittest.mockr  r	  r   ImportErrorr  r   test.test_asyncior   rW   platformMACOSr  r   r^  r   Filterr>   skipIfTestCaserI   r]  r  rr  r}   ru   r   r   r   <module>r     s  
   	    
        1 
	!"(''"" 'Dw~~  
o.~6j!! ~6 /~6L4$D $DN9## . .*P( P(Y8  
Cs   C0 0C;:C;