OwlCyberSecurity - MANAGER
Edit File: forkserver.cpython-36.pyc
3 � f�!������������������@���s����d�dl�Z�d�dlZd�dlZd�dlZd�dlZd�dlZd�dlZd�dlZddlm Z �ddlm Z �ddlmZ�ddlm Z �ddlmZ�ddlmZ�d d ddgZd Zejd�ZG�dd��de�Zddd�Zdd��Zdd��Zdd��Ze��ZejZejZejZejZdS�)�����N����)� connection)�process)� reduction)�semaphore_tracker)�spawn)�util�ensure_running�get_inherited_fds�connect_to_new_process�set_forkserver_preload�����Qc���������������@���s4���e�Zd�Zdd��Zdd��Zdd��Zdd��Zd d ��ZdS�)� ForkServerc�������������C���s.���d�|�_�d�|�_d�|�_d�|�_tj��|�_dg|�_d�S�)N�__main__)�_forkserver_address�_forkserver_alive_fd�_forkserver_pid�_inherited_fds� threadingZLock�_lock�_preload_modules)�self��r����?/opt/alt/python36/lib64/python3.6/multiprocessing/forkserver.py�__init__!���s���� zForkServer.__init__c�������������C���s&���t�dd��|�jD���std��||�_dS�)z>Set list of module names to try to load in forkserver process.c�������������s���s���|�]}t�|�tkV��qd�S�)N)�type�str)�.0�modr���r���r���� <genexpr>+���s����z4ForkServer.set_forkserver_preload.<locals>.<genexpr>z&module_names must be a list of stringsN)�allr���� TypeError)r���Z modules_namesr���r���r���r���)���s����z!ForkServer.set_forkserver_preloadc�������������C���s���|�j�S�)z�Return list of fds inherited from parent process. This returns None if the current process was not started by fork server. )r���)r���r���r���r���r ���/���s����zForkServer.get_inherited_fdsc�������������C���s����|�j����t|�d�tkr td��tjtj���}|j|�j��tj ��\}}tj ��\}}|||�j tj��g}||7�}z<yt j||��||fS����tj|��tj|����Y�nX�W�dtj|��tj|��X�W�dQ�R�X�dS�)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. ����ztoo many fdsN)r ����len�MAXFDS_TO_SEND� ValueError�socket�AF_UNIXZconnectr����os�piper���r���Zgetfdr���Zsendfds�close)r����fdsZclientZparent_r�child_w�child_rZparent_wZallfdsr���r���r���r���7���s&���� z!ForkServer.connect_to_new_processc����������������s���|�j���n�tj���|�jdk rVtj|�jtj�\}}|s8dS�tj|�j��d|�_ d|�_d|�_d}|�j r�ddh��tjd�}t ��fdd�|j��D���}ni�}tjtj���}tjd �}|j|��tj|d ��|j���tj��\}}ztyV|j��|g} ||j��||�j |f;�}tj��} | gtj���}|d|g7�}tj| || �}W�n���tj|����Y�nX�W�dtj|��X�||�_ ||�_||�_W�dQ�R�X�W�dQ�R�X�dS�) 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 multiprocessing.forkserver import main; zmain(%d, %d, %r, **%r)� main_path�sys_path�ignorec�������������3���s"���|�]\}}|��kr||fV��qd�S�)Nr���)r����x�y)�desired_keysr���r���r ���o���s����z,ForkServer.ensure_running.<locals>.<genexpr>r(���i���z-czCfrom multiprocessing.forkserver import main; main(%d, %d, %r, **%r))r���r���r ���r���r)����waitpid�WNOHANGr+���r���r���r���r���Zget_preparation_data�dict�itemsr'���r(���r���Zarbitrary_addressZbind�chmodZlistenr*����filenoZget_executabler���Z_args_from_interpreter_flagsZspawnv_passfds)r����pidZstatus�cmd�data�listenerZaddress�alive_rZalive_wZfds_to_passZexe�argsr���)r4���r���r ���T���sL���� � zForkServer.ensure_runningN)�__name__� __module__�__qualname__r���r���r ���r���r ���r���r���r���r���r������s ���r���c����������4���C���s��|rhd|kr8|dk r8dt�j��_ztj|��W�dt�j��`X�x.|D�]&}yt|��W�q>�tk rb���Y�q>X�q>W�tj���t j t jt jt ji}dd��|j ��D��}tjtj|�d���R}tj����<} |j��t_| j|tj��| j|tj���xy�xdd��| j��D��} | r�P�q�W�|| k�r$tj|d �d k�s t�t�|| k�s2t�|j��d��l}d }tj��dk�r�zFyt||||��W�n.�tk �r����t j!t j"�����t j#j$���Y�nX�W�dtj%|��X�W�dQ�R�X�W�q��t&k �r��} �z| j't'j(k�rւ�W�Y�dd} ~ X�q�X�q�W�W�dQ�R�X�W�dQ�R�X�dS�)zRun forkserver.r���NTc�������������S���s���i�|�]\}}t�j�||�|�qS�r���)�signal)r����sig�valr���r���r���� <dictcomp>����s���zmain.<locals>.<dictcomp>)r:���c�������������S���s���g�|�]\}}|j��qS�r���)Zfileobj)r����keyZeventsr���r���r���� <listcomp>����s����zmain.<locals>.<listcomp>r��������r���))r���Zcurrent_processZ_inheritingr���Zimport_main_path� __import__�ImportErrorr���Z_close_stdinrD����SIGCHLD�SIG_IGN�SIGINTr8���r'���r(���� selectorsZDefaultSelectorZgetsockname�_forkserverr����registerZ EVENT_READZselectr)����read�AssertionError� SystemExitZaccept�fork� _serve_one� Exception�sys� excepthook�exc_info�stderr�flush�_exit�OSError�errnoZECONNABORTED)Zlistener_fdr?���Zpreloadr/���r0����modname�handlersZold_handlersr>���ZselectorZrfds�s�code�er���r���r����main����sV���� rf���c�������������C���s����|j����tj�|��x |j��D�]\}}tj||��qW�tj|�td��}|�j����t|�tks\t�|^}}t _ } t _| tj _t|tj����dtjkr�dd�l} | j���tj|�}t||��d�S�)Nr����randomr���)r+���r)���r8���rD���r���Zrecvfdsr%���r$���rT���rQ���r���r���r���Z_semaphore_trackerZ_fd�write_unsigned�getpidrY����modulesrg���Zseedr����_main)rc���r>���r?���rb���rE���rF���r,���r.���r-���Zstfdrg���rd���r���r���r���rW�������s���� rW���c�������������C���sR���d}t�j}x8t|�|k�rBtj|�|t|���}|s8td��||7�}qW�t�j|�d�S�)NrJ���zunexpected EOFr���)�UNSIGNED_STRUCT�sizer$���r)���rS����EOFErrorZunpack)�fdr=���Zlengthrc���r���r���r���� read_unsigned����s����rp���c�������������C���s@���t�j|�}x0|r:tj|�|�}|dkr,td��||d���}qW�d�S�)Nr���zshould not get here)rl���Zpackr)����write�RuntimeError)ro����n�msg�nbytesr���r���r���rh�������s���� rh���)NN)r`���r)���rP���rD���r'���ZstructrY���r�����r���r����contextr���r���r���r����__all__r%���ZStructrl����objectr���rf���rW���rp���rh���rQ���r ���r ���r���r���r���r���r���r����<module>���s6��� s =!