Your IP : 216.73.216.213


Current Path : /opt/alt/python39/lib64/python3.9/test/support/__pycache__/
Upload File :
Current File : //opt/alt/python39/lib64/python3.9/test/support/__pycache__/socket_helper.cpython-39.opt-2.pyc

a

XC?h�,�@s�ddlZddlZddlZddlZddlZddlmZdZdZdZ	ej
ejfdd�Zefd	d
�Z
dd�Zd
d�Ze�Zdadd�Zdd�Ze�Zejedd�dd��ZdS)�N�)�supportZ	localhostz	127.0.0.1z::1cCs:t�||��}t|�}Wd�n1s*0Y~|S)N)�socket�	bind_port)�familyZsocktypeZtempsock�port�r�?/opt/alt/python39/lib64/python3.9/test/support/socket_helper.py�find_unused_ports8&r
cCs�|jtjkr�|jtjkr�ttd�r@|�tjtj�dkr@t	�
d��ttd�r�z"|�tjtj�dkrjt	�
d��Wnty~Yn0ttd�r�|�
tjtjd�|�|df�|��d}|S)N�SO_REUSEADDR�zHtests 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)rr�AF_INET�type�SOCK_STREAM�hasattrZ
getsockoptZ
SOL_SOCKETrrZ
TestFailedr
�OSErrorZ
setsockoptr�bindZgetsockname)�sockZhostrrrr	rLs



rcCs8z|�|�Wn$ty2|��t�d��Yn0dS)Nzcannot bind AF_UNIX sockets)r�PermissionError�close�unittestZSkipTest)rZaddrrrr	�bind_unix_socketss
rcCsttjrpd}zVz2t�tjtj�}|�tdf�WW|r<|��dStyPYn0W|rp|��n|rn|��0dS)NrTF)rZhas_ipv6ZAF_INET6rr�HOSTv6rr)rrrr	�_is_ipv6_enabled|s �
�
rcCs�ttd�st�d�|�Stdur�ddlm}m}|d}t�tj��d}zHz|�	|�daWn(t
y�}z|aWYd}~n
d}~00W||�n
||�0Wd�n1s�0Ytr�dt}t�|�|�S|SdS)N�AF_UNIXzNo UNIX Socketsr)�TESTFN�unlinkZcan_bind_unix_socketFz%Requires a functional unix bind(): %s)rrr�skip�_bind_nix_socket_errorZtest.supportrrrrr)�testrr�pathr�e�msgrrr	�skip_unless_bind_unix_socket�s 

2r%cCs^tjg}ttd�r|�tj�ttd�r4|�tj�ttd�rJ|�tj�tsZ|�tj�|S)N�ENETUNREACH�
EADDRNOTAVAIL�EHOSTUNREACH)	�errno�ECONNREFUSEDr�appendr&r'r(�IPV6_ENABLEDZEAFNOSUPPORT)�errorsrrr	�get_socket_conn_refused_errs�s


r.r)�timeout�errnosc

#s�ddl}ddl�|turtj}gd�}gd�}t�d|��|�g��sddd�|D��dd�|D������fdd	�}t��}z�z|dur�t�|�dVWn�|j	y�}z.tj
r�tj�
�jdd
��|�WYd}~n�d}~0t�yn}zr|j}	t|	�dk�r"t|	dt��r"|	d}q�t|	�dk�rPt|	dt��rP|	d}q�qPq�||��WYd}~n
d}~00Wt�|�nt�|�0dS)
Nr))r*�o)Z
ECONNRESET�h)r(�q)r&�e)Z	ETIMEDOUT�n)r'�c))Z	EAI_AGAIN���)ZEAI_FAIL���)Z
EAI_NONAME���)Z
EAI_NODATA���)Z
WSANO_DATAi�*zResource %r is not availablecSsg|]\}}tt||��qSr)�getattrr)��.0�nameZnumrrr	�
<listcomp>�s�z&transient_internet.<locals>.<listcomp>cSsg|]\}}tt||��qSr)r;rr<rrr	r?�s�cs�t|dd�}t|tj�s�t|tj�r,|�vs�t|�jj�rRd|jkrPdks�nt|�jj�r~d|j	vs�d|j	vs�d|j	vs�|�vr�t
js�tj
��jdd��|�dS)	Nr)i�iW�ConnectionRefusedError�TimeoutError�EOFErrorr�
)r;�
isinstancerr/Zgaierror�errorZ	HTTPError�codeZURLError�reasonr�verbose�sys�stderr�write�args)�err�n�Zcaptured_errnosZdeniedZ
gai_errnosZurllibrr	�filter_error�s2
����������	z(transient_internet.<locals>.filter_errorrCrr)�nntplibZurllib.error�_NOT_SETrZINTERNET_TIMEOUTZResourceDeniedrZgetdefaulttimeoutZsetdefaulttimeoutZNNTPTemporaryErrorrHrIrJrKrLr�lenrD)
Z
resource_namer/r0rQZdefault_errnosZdefault_gai_errnosrPZold_timeoutrM�arrOr	�transient_internet�sH
	��



rU)�
contextlibr)rrrI�rZHOSTZHOSTv4rrrr
rrrr,r r%r.�objectrR�contextmanagerrUrrrr	�<module>s&='