+
    Bi4                     F   ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^RI	H
t
 RtRtRt]
P                  '       * t]P                   ]P"                  3R lt]3R ltR tR	 t]! 4       tRsR
 tR t]! 4       t] P8                  R]RR/R l4       tR t/ tR t R t!R t"R# )    N)support	localhostz	127.0.0.1z::1c                     \         P                   ! W4      ;_uu_ 4       p\        V4      pR R R 4       ?V#   + '       g   i     ?X# ; i)N)socket	bind_port)familysocktypetempsockports   &&  1/usr/lib/python3.14/test/support/socket_helper.pyfind_unused_portr      s>    p 
v	(	(H" 
)K 
)	(Ks	   6A	c                    V P                   \        P                  8X  Ed&   V P                  \        P                  8X  Ed   \        \        R 4      '       dJ   V P                  \        P                  \        P                  4      ^8X  d   \        P                  ! R4      h\        \        R4      '       dL    V P                  \        P                  \        P                  4      ^8X  d   \        P                  ! R4      h \        \        R4      '       d0   V P                  \        P                  \        P                  ^4       V P                  V^ 34       V P!                  4       ^,          pV#   \         d     L~i ; i)SO_REUSEADDRzHtests should never set the SO_REUSEADDR socket option on TCP/IP sockets!SO_REUSEPORTzHtests should never set the SO_REUSEPORT socket option on TCP/IP sockets!SO_EXCLUSIVEADDRUSE)r   r   AF_INETtypeSOCK_STREAMhasattr
getsockopt
SOL_SOCKETr   r   
TestFailedr   OSError
setsockoptr   bindgetsockname)sockhostr   s   && r   r   r   Q   s&    {{fnn$f6H6H)H6>**v00&2E2EF!K(( *; < < 6>**	??6#4#4f6I6IJaO!,, .? @ @ P 6011OOF--v/I/I1MIItQia DK   	s   7A	E2 2F ?F c                      V P                  V4       R#   \         d(    T P                  4        \        P                  ! R 4      hi ; i)zcannot bind AF_UNIX socketsN)r   PermissionErrorcloseunittestSkipTest)r   addrs   &&r   bind_unix_socketr%   x   s<    ?		$ ?

 =>>?s	    2Ac                     \         P                  '       dk   R p  \         P                   ! \         P                  \         P                  4      p V P	                  \
        ^ 34        V '       d   V P                  4        R# R# R#   \         d     Mi ; i T '       d   T P                  4        R#   T '       d   T P                  4        i i ; i)NTF)r   has_ipv6AF_INET6r   r   HOSTv6r!   r   )r   s    r   _is_ipv6_enabledr*      s    	==&2D2DEDIIvqk" 

   		

 

 s$   A
B BB/ BB/ /C
c                    \        \        R 4      '       g   \        P                  ! R4      ! V 4      # \        fd   ^RIHpHp VR,           p\        P                  ! \        P                  4      ;_uu_ 4       p VP                  V4       RsV! V4        RRR4       \        '       d*   R\        ,          p\        P                  ! V4      ! V 4      # V #   \         d   pTs Rp?LZRp?ii ; i  T! T4       i ; i  + '       g   i     Ln; i)AF_UNIXzNo UNIX SocketsN)TESTFNunlinkcan_bind_unix_socketFz%Requires a functional unix bind(): %s)r   r   r"   skip_bind_nix_socket_error	os_helperr-   r.   r,   r   r   )testr-   r.   pathr   emsgs   &      r   skip_unless_bind_unix_socketr7      s    69%%}}./55%-..]]6>>**d		$).& t + 58NN}}S!$''  +)*&+ t +*sB   8C<:CC<C, C'"C/'C,,C//
C99C<<D	c                     \         P                  .p \        \         R 4      '       d    V P                  \         P                  4       \        \         R4      '       d    V P                  \         P
                  4       \        \         R4      '       d    V P                  \         P                  4       \        '       g    V P                  \         P                  4       V # )ENETUNREACHEADDRNOTAVAILEHOSTUNREACH)	errnoECONNREFUSEDr   appendr9   r:   r;   IPV6_ENABLEDEAFNOSUPPORT)errorss    r   get_socket_conn_refused_errsrB      s    
   !Fum$$e''(uo&& 	e))*un%%e(()<e(()M    timeouterrnosc          	   #   n  aaaa"   ^ RI oV\        J d   \        P                  p. ROp. ROp\        P                  ! RV ,          4      oVo. oS'       gI   V UUu. uF  w  rV\        \        WV4      NK  	  uppoV UUu. uF  w  rV\        \        WV4      NK  	  uppoVVVV3R lp\        P                  ! 4       p Ve   \        P                  ! V4       Rx   \        P                  ! T4       R# u uppi u uppi   \         d   p	 T	P                  p
\        T
4      ^8  d)   \        T
^ ,          \        4      '       d   T
^ ,          p	KE  \        T
4      ^8  d)   \        T
^,          \        4      '       d   T
^,          p	K}   T! T	4       h Rp	?	ii ; i  \        P                  ! T4       i ; i5i)r   NzResource %r is not availablec                 ~  < \        V R R4      p\        V \        4      '       g   \        V \        P                  4      '       d   VS9   g   \        V SP
                  P                  4      '       d   RV P                  u;8:  d   R8:  gc   M \        V SP
                  P                  4      '       d4   RV P                  9   g*   RV P                  9   g   RV P                  9   g   VS9   dQ   \        P                  '       g8   \        P                  P                  SP                  ^ ,          R,           4       SV hR# )r<   Ni  iW  ConnectionRefusedErrorTimeoutErrorEOFError
)getattr
isinstancerI   r   gaierrorerror	HTTPErrorcodeURLErrorreasonr   verbosesysstderrwriteargs)errncaptured_errnosdenied
gai_errnosurllibs   & r   filter_error(transient_internet.<locals>.filter_error   s    C$'sL))V__--!z/V\\3344CHH##V\\2233+szz9!SZZ/+ ???

  Q$!67c! !rC   ))r=   o   )
ECONNRESETh   )r;   q   )r9   e   )	ETIMEDOUTn   )r:   c   ))	EAI_AGAIN)EAI_FAIL)
EAI_NONAME)
EAI_NODATA)
WSANO_DATAi*  )urllib.error_NOT_SETr   INTERNET_TIMEOUTResourceDeniedrL   r<   r   getdefaulttimeoutsetdefaulttimeoutr   rX   lenrM   )resource_namerD   rE   default_errnosdefault_gai_errnosnamenumr_   old_timeoutrY   ar[   r\   r]   r^   s   &$$        @@@@r   transient_internetr      sy     (**	N ##$B]$RSFOJ.<>.<{ #5$4.<> *<=);+4 fd0);=
" " **,K.$$W-( 	  -Y>=.   A1v{z!A$88d Q1AaD'!:!:dS& 	  -sO   AF5C46	F5?C:"F5=D  $F5 FBFFF F22F5c                  d    \         P                  ! R R\        P                  P                  R7      # )test_python_z.sock)prefixsuffixdir)tempfilemktemposr4   curdir rC   r   create_unix_domain_namer     s$     ??.!ww~~/ /rC   c           	      d    \         V ,          #   \         d     Mi ; iR RT .p\        P                  ! T\        P                  \        P
                  RR7      pTP                  '       dA   \        P                  ! RP                  T4      : RTP                   24       R\         T &   R# TP                  p \        TP                  4       4      pMS  \         dF   p\        P                  ! RRP                  T4      : RT: R	T: 24       R\         T &    Rp?R# Rp?ii ; iT\         T &   T# )
sysctlz-nT)stdoutrV   text z command failed with exit code NzFailed to parse z command output z: )_sysctl_cacheKeyError
subprocessrunPIPESTDOUT
returncoder   print_warningjoinr   intstrip	Exception)r|   cmdprocoutputvalueexcs   &     r   _get_sysctlr     s"   T""  T4
 C>>#!+!+!2!2#%D # 1 2++/??*;= 	> #d[[FFLLN#  0#0A B006zC7D 	E #d  M$Ls$    :C D$:DD$c                  |    \         P                  P                  R 4      '       g   R# \        R4      p V f   R# V ^ 8g  # )freebsdFznet.inet.tcp.blackhole)rU   platform
startswithr   )r   s    r   tcp_blackholer   A  s9    <<""9-- 01E}QJrC   c                 P    \         P                  ! \        4       R 4      pV! V 4      # )z8TCP blackhole is enabled (sysctl net.inet.tcp.blackhole))r"   skipIfr   )r3   skip_ifs   & r   skip_if_tcp_blackholer   M  s$    ooBG 4=rC   r   )#
contextlibr<   os.pathr   r   rU   r   r   r"    r   HOSTHOSTv4r)   is_wasihas_gethostnamer   r   r   r   r%   r*   r?   r1   r7   rB   objectrs   contextmanagerr   r   r   r   r   r   r   rC   r   <module>r      s        
    		 oo% #NNV5G5G ;z  %N?  !  .* 8J. J." J. J.Z/  F	rC   