HEX
Server: LiteSpeed
System: Linux kapuas.iixcp.rumahweb.net 5.14.0-427.42.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Nov 1 14:58:02 EDT 2024 x86_64
User: mirz4654 (1666)
PHP: 8.1.33
Disabled: system,exec,escapeshellarg,escapeshellcmd,passthru,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,popen,pclose,dl,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setsid,posix_setuid,posix_setpgid,ini_alter,show_source,define_syslog_variables,symlink,syslog,openlog,openlog,closelog,ocinumcols,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dll,ftp,myshellexec,socket_bind,mail,posix_getwpuid
Upload Files
File: //usr/local/lib/python3.9/site-packages/billiard/__pycache__/forkserver.cpython-39.pyc
a

X>hZ �@sddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddlm
Z
ddlmZddlmZddlm
Z
ddlmZdd	lmZgd
�ZdZe�d�ZGd
d�d�Zddd�Zdd�Zdd�Zdd�Zdd�Ze�ZejZejZejZejZdS)�N�)�
connection)�process)�	reduction)�semaphore_tracker)�spawn)�util)�spawnv_passfds)�ensure_running�get_inherited_fds�connect_to_new_process�set_forkserver_preload��Qc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�
ForkServercCs(d|_d|_d|_t��|_dg|_dS)N�__main__)�_forkserver_address�_forkserver_alive_fd�_inherited_fds�	threading�Lock�_lock�_preload_modules��self�r�=/usr/local/lib/python3.9/site-packages/billiard/forkserver.py�__init__$s

zForkServer.__init__cCs&tdd�|jD��std��||_dS)z>Set list of module names to try to load in forkserver process.css|]}t|�tuVqdS�N)�type�str)�.0�modrrr�	<genexpr>-�z4ForkServer.set_forkserver_preload.<locals>.<genexpr>z&module_names must be a list of stringsN)�allr�	TypeError)rZ
modules_namesrrrr
+sz!ForkServer.set_forkserver_preloadcCs|jS)z�Return list of fds inherited from parent process.

        This returns None if the current process was not started by fork
        server.
        )rrrrrr1szForkServer.get_inherited_fdsc
Cs|��t|�dtkr td��t�tj���}|�|j�t�	�\}}t�	�\}}|||j
t��g}||7}zvz:t
�||�||fWWt�|�t�|�Wd�St�|�t�|��Yn0Wt�|�t�|�nt�|�t�|�0Wd�n1�s0YdS)a;Request forkserver to create a child process.

        Returns a pair of fds (status_r, data_w).  The calling process can read
        the child process's pid and (eventually) its returncode from status_r.
        The calling process should write to data_w the pickled preparation and
        process data.
        �ztoo many fdsN)r
�len�MAXFDS_TO_SEND�
ValueError�socket�AF_UNIX�connectr�os�piperrZgetfdrZsendfds�close)r�fds�clientZparent_r�child_w�child_rZparent_wZallfdsrrrr9s2�


�



�
z!ForkServer.connect_to_new_processc
s�|j��bt��|jdur,Wd�dSd}|jr`ddh�t�d�}�fdd�|��D�}ni}t�tj	���}t
�d�}|�|�t
�|d	�|��t
��\}}z|zT|��|g}||��||j|f;}t��}|gt��}	|	d
|g7}	t||	|�Wnt
�|��Yn0Wt
�|�nt
�|�0||_||_Wd�n1�sR0YWd�n1�sr0YdS)z�Make sure that a fork server is running.

        This can be called from any process.  Note that usually a child
        process will just reuse the forkserver started by its parent, so
        ensure_running() will do nothing.
        Nz<from billiard.forkserver import main; main(%d, %d, %r, **%r)�	main_path�sys_path�ignorecsi|]\}}|�vr||�qSrr)r!�x�y�Zdesired_keysrr�
<dictcomp>hsz-ForkServer.ensure_running.<locals>.<dictcomp>r,i�z-c)rrr
rrrZget_preparation_data�itemsr+r,rZarbitrary_address�bindr.�chmod�listenr/�fileno�get_executabler�_args_from_interpreter_flagsr	r0r)
r�cmd�data�listener�address�alive_rZalive_wZfds_to_passZexe�argsrr:rr
VsB



�

�

zForkServer.ensure_runningN)�__name__�
__module__�__qualname__rr
rrr
rrrrr"s
rc
Csh|rjd|vr@|dur@dt��_zt�|�Wt��`n
t��`0|D]$}zt|�WqDtyfYqD0qDtjdur�ztj�	�t
tj�t_Wnt
tfy�Yn0t�tjtj�}tjtj|d����}t����^}|��t_|�|tj�|�|tj�z�dd�|��D�}	|	r��qq�||	v�r>t�|d�dk�s:J�t�||	v�sLJ�|��d	�~}
d}t��d	k�r�zNzt |
|||�Wn,t!�y�tj"t�#��tj$�%�Yn0Wt�&|�nt�&|�0Wd�n1�s�0YWq�t
�y }z|j't'j(k�r�WYd}~q�d}~00q�Wd�n1�s:0YWd�n1�sZ0YdS)
zRun forkserver.rNT)r@cSsg|]\}}|j�qSr)�fileobj)r!�key�eventsrrr�
<listcomp>�r$zmain.<locals>.<listcomp>rr$r))r�current_processZ_inheritingrZimport_main_path�
__import__�ImportError�sys�stdinr0�openr.�devnull�OSErrorr*�signal�SIGCHLD�SIG_IGNr+r,�	selectors�DefaultSelector�getsockname�_forkserverr�register�
EVENT_READ�select�read�
SystemExit�accept�fork�
_serve_one�	Exception�
excepthook�exc_info�stderr�flush�_exit�errno�ECONNABORTED)
Zlistener_fdrGZpreloadr5r6�modname�handlerrE�selectorZrfds�s�code�errr�main�sZ


�

<rucGs|||||fSrr)r4r3�alive�stfdZ	inheritedrrr�__unpack_fds�srxc
Cs�|��t�|�t�tj|�t�|td�}|��t|�tksHJ�t|�\}}t	_
}t	_|tj
_t|t���dtjvr�ddl}|��t�|�}	t||	�dS)Nr�randomr)r0r.rXrYrZrecvfdsr)r(rxr^rrrZ_semaphore_trackerZ_fd�write_unsigned�getpidrS�modulesry�seedr�_main)
rrrErGrpr1r4r3rwryrsrrrrf�s 
�


rfcCsNd}tj}t|�|kr@t�||t|��}|s6td��||7}q
t�|�dS)Nr$zunexpected EOFr)�UNSIGNED_STRUCT�sizer(r.rb�EOFError�unpack)�fdrD�lengthrrrrr�
read_unsigned�s
r�cCs<t�|�}|r8t�||�}|dkr*td��||d�}q
dS)Nrzshould not get here)r�packr.�write�RuntimeError)r��n�msg�nbytesrrrrz�s
rz)NN) rmr.r[rXr+�structrSr�rrrrrr�compatr	�__all__r)�Structrrrurxrfr�rzr^r
rrr
rrrr�<module>s8
j
;"