File: //usr/local/lib/python3.10/test/support/__pycache__/socket_helper.cpython-310.opt-2.pyc
o
�i�, � @ s� d dl Z d dlZd dlZd dlZd dlZddlmZ dZdZdZ ej
ejfdd�Zefd d
�Z
dd� Zd
d� Ze� Zdadd� Zdd� Ze� Ze jedd�dd��ZdS )� N� )�support� localhostz 127.0.0.1z::1c C s@ t � | |��}t|�}W d � ~|S 1 sw Y ~|S )N)�socket� bind_port)�family�socktypeZtempsock�port� r
�7/usr/local/lib/python3.10/test/support/socket_helper.py�find_unused_port s 7
��r c C s� | j tjkrO| jtjkrOttd�r!| �tjtj�dkr!t �
d��ttd�rAz| �tjtj�dkr6t �
d��W n ty@ Y nw ttd�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 )r r �AF_INET�type�SOCK_STREAM�hasattr�
getsockopt�
SOL_SOCKETr
r Z
TestFailedr �OSError�
setsockoptr �bind�getsockname)�sock�hostr r
r
r r L s$
��
r c C s4 z| � |� W d S ty | �� t�d��w )Nzcannot bind AF_UNIX sockets)r �PermissionError�close�unittestZSkipTest)r �addrr
r
r �bind_unix_sockets s
�r! c C s~ t jr=d } z.zt � t jt j�} | �tdf� W W | r!| �� dS dS ty+ Y nw W | r3| �� dS | r<| �� w w dS )Nr TF)r �has_ipv6�AF_INET6r r �HOSTv6r r )r r
r
r �_is_ipv6_enabled| s* ����
�r% c C s� t td�s
t�d�| �S td u r]ddlm}m} |d }t�tj��2}z$z |� |� daW n t
yB } z|aW Y d }~nd }~ww W ||� n||� w W d � n1 sXw Y trjdt }t�|�| �S | S )N�AF_UNIXzNo UNIX Socketsr )�TESTFN�unlinkZcan_bind_unix_socketFz%Requires a functional unix bind(): %s)r r r �skip�_bind_nix_socket_errorZ os_helperr'