Your IP : 216.73.216.213


Current Path : /opt/alt/python310/lib64/python3.10/test/support/__pycache__/
Upload File :
Current File : //opt/alt/python310/lib64/python3.10/test/support/__pycache__/socket_helper.cpython-310.opt-2.pyc

o

0�i�,�@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�~|S1swY~|S)N)�socket�	bind_port)�familyZsocktypeZtempsock�port�r�A/opt/alt/python310/lib64/python3.10/test/support/socket_helper.py�find_unused_ports7

��r
cCs�	|jtjkrO|jtjkrOttd�r!|�tjtj�dkr!t	�
d��ttd�rAz|�tjtj�dkr6t	�
d��Wn	ty@Ynwttd�rO|�
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$



��
rcCs4	z|�|�WdSty|��t�d��w)Nzcannot bind AF_UNIX sockets)r�PermissionError�close�unittestZSkipTest)rZaddrrrr	�bind_unix_socketss
�rcCs~	tjr=d}z.zt�tjtj�}|�tdf�WW|r!|��dSdSty+YnwW|r3|��dS|r<|��wwdS)NrTF)rZhas_ipv6ZAF_INET6rr�HOSTv6rr)rrrr	�_is_ipv6_enabled|s*����
�rcCs�	ttd�s
t�d�|�Stdur]ddlm}m}|d}t�tj��2}z$z	|�	|�daWnt
yB}z|aWYd}~nd}~wwW||�n||�wWd�n1sXwYtrjdt}t�|�|�S|S)N�AF_UNIXzNo UNIX Socketsr)�TESTFN�unlinkZcan_bind_unix_socketFz%Requires a functional unix bind(): %s)rrr�skip�_bind_nix_socket_errorZ	os_helperrrrrr)�testrr�pathr�e�msgrrr	�skip_unless_bind_unix_socket�s*

����r%cCs`	tjg}ttd�r|�tj�ttd�r|�tj�ttd�r&|�tj�ts.|�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

#sn�	ddl}ddl�|turtj}gd�}gd�}t�d|��|�g��s4dd�|D��dd�|D������fdd	�}t��}zoz|durLt�|�dVWnX|j	yn}ztj
rgtj�
�jdd
��|�d}~wty�}z/	|j}	t|	�dkr�t|	dt�r�|	d}nt|	�d
kr�t|	dt�r�|	d}nnqv||��d}~wwWt�|�dSt�|�w)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 availablecS�g|]
\}}tt||��qSr)�getattrr)��.0�nameZnumrrr	�
<listcomp>���z&transient_internet.<locals>.<listcomp>cSr;r)r<rr=rrr	r@�rAcs�t|dd�}t|t�sBt|tj�r|�vsBt|�jj�r(d|jkr'dksBnt|�jj�r>d|j	vsBd|j	vsBd|j	vsB|�vrSt
jsPtj
��jdd��|�dS)	Nr)i�iW�ConnectionRefusedError�TimeoutError�EOFErrorr�
)r<�
isinstancerCrZgaierror�errorZ	HTTPError�codeZURLError�reasonr�verbose�sys�stderr�write�args)�err�n�Zcaptured_errnosZdeniedZ
gai_errnosZurllibrr	�filter_error�s$

���


�z(transient_internet.<locals>.filter_errorrETrr)�nntplibZurllib.error�_NOT_SETrZINTERNET_TIMEOUTZResourceDeniedrZgetdefaulttimeoutZsetdefaulttimeoutZNNTPTemporaryErrorrJrKrLrMrNr�lenrF)
Z
resource_namer/r0rSZdefault_errnosZdefault_gai_errnosrRZold_timeoutrO�arrQr	�transient_internet�sX�
	��

�

����rW)�
contextlibr)rrrK�rZHOSTZHOSTv4rrrr
rrrr,r r%r.�objectrT�contextmanagerrWrrrr	�<module>s(='