a  ze,@sddlZddlZddlZddlZddlZddlmZdZdZdZ ej ej fddZ efd d Z d d Zd dZeZdaddZddZeZejeddddZdS)N)support localhostz 127.0.0.1z::1cCs:t||}t|}Wdn1s*0Y~|S)N)socket bind_port)familysocktypeZtempsockportr N/opt/bitninja-python-dojo/embedded/lib/python3.9/test/support/socket_helper.pyfind_unused_ports8&r cCs|jtjkr|jtjkrttdr@|tjtjdkr@t dttdrz"|tjtj dkrjt dWnt y~Yn0ttdr| tjtjd||df|d}|S)N 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_EXCLUSIVEADDRUSEr)rrAF_INETtype SOCK_STREAMhasattr getsockopt SOL_SOCKETr rZ TestFailedrOSError setsockoptrbind getsockname)sockhostr r r r rLs      rcCs8z||Wn$ty2|tdYn0dS)Nzcannot bind AF_UNIX sockets)rPermissionErrorcloseunittestZSkipTest)raddrr r r bind_unix_socketss  r!cCsttjrpd}zVz2ttjtj}|tdfWW|r<|dStyPYn0W|rp|n|rn|0dS)NrTF)rhas_ipv6AF_INET6rrHOSTv6rr)rr r r _is_ipv6_enabled|s    r%c Csttdstd|Stdurddlm}m}|d}ttjd}zHz| |daWn(t y}z|aWYd}~n d}~00W||n ||0Wdn1s0Ytrdt}t||S|SdS)NAF_UNIXzNo UNIX Socketsr)TESTFNunlinkZcan_bind_unix_socketFz%Requires a functional unix bind(): %s) rrrskip_bind_nix_socket_errorZ test.supportr'r(r&rr)testr'r(pathremsgr r r skip_unless_bind_unix_sockets   2r/cCs^tjg}ttdr|tjttdr4|tjttdrJ|tjtsZ|tj|S)N ENETUNREACH EADDRNOTAVAIL EHOSTUNREACH) errno ECONNREFUSEDrappendr0r1r2 IPV6_ENABLEDZ EAFNOSUPPORT)errorsr r r get_socket_conn_refused_errss       r8r )timeouterrnosc #sddl}ddl|turtj}gd}gd}td||gsddd|Ddd|Dfdd }t}zz|durt|dVWn|j y}z.tj rt j jdd |WYd}~nd}~0tyn}zr|j} t| d kr"t| dtr"| d}qt| d krPt| d trP| d }qqPq||WYd}~n d}~00Wt|n t|0dS) Nr))r4o)Z ECONNRESETh)r2q)r0e)Z ETIMEDOUTn)r1c)) EAI_AGAIN)EAI_FAIL) EAI_NONAME) EAI_NODATA)Z WSANO_DATAi*zResource %r is not availablecSsg|]\}}tt||qSr )getattrr3.0namenumr r r sz&transient_internet..cSsg|]\}}tt||qSr )rIrrJr r r rNscst|dd}t|tjst|tjr,|vst|jjrRd|jkrPdksnt|jjr~d|j vsd|j vsd|j vs|vrt j st j jdd|dS) Nr3iiWConnectionRefusedError TimeoutErrorEOFErrorr )rI isinstancerr9gaierrorerror HTTPErrorcodeURLErrorreasonrverbosesysstderrwriteargs)errnZcaptured_errnosZdeniedZ gai_errnosurllibr r filter_errors2      z(transient_internet..filter_errorrRrr)nntplibZ urllib.error_NOT_SETrZINTERNET_TIMEOUTZResourceDeniedrgetdefaulttimeoutsetdefaulttimeoutZNNTPTemporaryErrorrZr[r\r]r^rlenrS) Z resource_namer9r:rdZdefault_errnosZdefault_gai_errnosrcZ old_timeoutr_ar rar transient_internetsH      rj) contextlibr3rrr[rZHOSTZHOSTv4r$rrr rr!r%r6r*r/r8objectrecontextmanagerrjr r r r s& = '