HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/aiohttp/__pycache__/web_protocol.cpython-310.pyc
o

;jty�
@s<ddlZddlZddlZddlZddlZddlmZddlmZm	Z	m
Z
ddlmZddl
mZddlmZddlmZddlmZmZmZmZddlZddlZdd	lmZd
dlmZmZd
dl m!Z!m"Z"d
d
l#m$Z$m%Z%d
dlm&Z&m'Z'm(Z(m)Z)m*Z*m+Z+d
dl,m-Z-d
dl.m/Z/m0Z0d
dl1m2Z2m3Z3d
dl4m5Z5d
dl6m7Z7m8Z8d
dl9m:Z:d
dl;m<Z<d
dl=m>Z>m?Z?dZ@dZAer�ddlBZBd
dlCmDZDe	e)e3dedge<fZEe	e<gee?fZFe)dde(iidddde�Gd��
ZHGd d!�d!eI�ZJGd"d#�d#eI�ZKeK�ZLejMdddd$�Gd%d&�d&��ZNeOe)eNBe3fZPGd'd�de"�ZQdS)(�N)�deque)�	Awaitable�Callable�Sequence)�suppress)�escape)�
HTTPStatus)�Logger)�
TYPE_CHECKING�Any�Optional�cast)�under_cached_property�)�AbstractAccessLogger�AbstractStreamWriter)�PAUSE_RESUME_READING_ERRORS�BaseProtocol)�DEFAULT_CHUNK_SIZE�ceil_timeout)�HttpProcessingError�HttpRequestParser�
HttpVersion10�RawRequestMessage�StreamWriter�WebSocketReader)�
BadHttpMethod)�
access_logger�
server_logger)�
EMPTY_PAYLOAD�StreamReader)�
tcp_keepalive)�
HTTPException�HTTPInternalServerError)�AccessLogger)�BaseRequest)�Response�StreamResponse)�RequestHandler�RequestPayloadError�PayloadAccessError� )�Serverr(zasyncio.Task[None]�UNKNOWN�/TFc@�eZdZdZdS)r)zPayload parsing error.N��__name__�
__module__�__qualname__�__doc__�r5r5�H/opt/saltstack/salt/lib/python3.10/site-packages/aiohttp/web_protocol.pyr)N�r)c@r/)r*z-Payload was accessed after response was sent.Nr0r5r5r5r6r*Rr7r*)Zauto_attribs�frozen�slotsc@s&eZdZUeed<eed<eed<dS)�_ErrInfo�status�exc�messageN)r1r2r3�int�__annotations__�
BaseException�strr5r5r5r6r:Ys
r:c!seZdZdZdZddeeeejddddde	dd	d
�ddd
e
jdede
dedeededede
dededededede
def �fdd�Zdefdd �Zeded!fd"d#��ZedeeeeeefBeeefBd$Bfd%d&��ZedeeeeeefBeeefBd$Bfd'd(��Zedefd)d*��Zdid,ed$Bdd$fd-d.�Zd/e
jdd$f�fd0d1�Zd2e d$Bdd$f�fd3d4�Z!	$djd5e"d6e#gd$fd$Bdd$fd7d8�Z$dkd9d:�Z%d;e&dd$fd<d=�Z'de
fd>d?�Z(dkd@dA�Z)dkdBdC�Z*dDe
dd$fdEdF�Z+dkdGdH�Z,dkdIdJ�Z-dKe.dLe/dMed$Bdd$fdNdO�Z0dPe1dQe1dd$fdRdS�Z2dPe1dQe1dd$fdTdU�Z3dkdVdW�Z4dKe.dXed$BdYe#e.ge5e/fdee/e
ffdZd[�Z6dkd\d]�Z7dKe.d^e/dXed$Bdee/e
ffd_d`�Z8	a	$	$dldKe.dbed2e d$Bdced$Bde/f
ddde�Z9dfe:de#e.ge5e/ffdgdh�Z;�Z<S)mr(ajHTTP protocol implementation.

    RequestHandler handles incoming HTTP request. It reads request line,
    request headers and request payload and calls handle_request() method.
    By default it always returns with 404 response.

    RequestHandler handles errors in incoming request, like bad
    status line, bad headers or incomplete payload. If any error occurs,
    connection gets closed.

    keepalive_timeout -- number of seconds before closing
                         keep-alive connection

    tcp_keepalive -- TCP keep-alive is on, default is on

    debug -- enable debug mode

    logger -- custom logger object

    access_log_class -- custom class for access_logger

    access_log -- custom logging object

    access_log_format -- access log format string

    loop -- Optional event loop

    max_line_size -- Optional maximum header line size

    max_field_size -- Optional maximum header field size

    max_headers -- Optional maximum header size

    timeout_ceil_threshold -- Optional value to specify
                              threshold to ceil() timeout
                              values

    )"�max_field_size�max_headers�
max_line_size�_request_count�
_keepalive�_manager�_request_handler�_request_factory�_tcp_keepalive�_next_keepalive_close_time�_keepalive_handle�_keepalive_timeout�_lingering_time�	_messages�_max_msg_queue_size�_msg_queue_resume_size�_msg_queue_paused�
_message_tail�_handler_waiter�_waiter�
_task_handler�_payload_parser�_data_received_cb�logger�debug�
access_logr�_close�_force_close�_current_request�_timeout_ceil_threshold�_request_in_progress�_logging_enabled�_cachei.TFi��g$@�)�keepalive_timeoutr!rY�access_log_classr[�access_log_formatrZrDrCrB�lingering_time�read_bufsize�auto_decompress�timeout_ceil_threshold�managerr,�looprer!rYrfr[rgrZrDrCrBrhrirjrkcsHt|_td|_d|_t||||
||t|td�	}t��||�d|_d|_	d|_
||_|j|_
|j|_|
|_||_||_||_d|_d|_||_t|
�|_t�|_d|_d|_d|_d|_d|_d|_ d|_!zt|�|_!Wnt"t#fyxYnw||_$|	|_%||_&|r�|||�|_'|j'j(|_)nd|_'d|_)d|_*d|_+d|_,i|_-dS)N�F)rDrBrCZpayload_exceptionrjZmax_msg_queue_sizerg�rd).�MAX_MSG_QUEUE_SIZErPrQrRrr)�super�__init__rErFr^rG�request_handlerrHZrequest_factoryrIrDrCrBrJrKrLrM�floatrNrrOrSrXrUrTrVrWr_�	TypeError�
ValueErrorrYrZr[r�enabledrar\r]r`rb)�selfrlrmrer!rYrfr[rgrZrDrCrBrhrirjrk�parser��	__class__r5r6rr�sp
�
��
zRequestHandler.__init__�returncCs d�|jj|jdur
d�Sd�S)Nz<{} {}>�	connectedZdisconnected)�formatr{r1�	transport�rxr5r5r6�__repr__s��zRequestHandler.__repr__zssl.SSLContextcC�|jdurdS|j�d�S)zReturn SSLContext if available.NZ
sslcontext�rZget_extra_infor�r5r5r6�ssl_contexts

��
�zRequestHandler.ssl_contextNcCr�)zReturn peername if available.N�peernamer�r�r5r5r6r��

��
�zRequestHandler.peernamecCr�)zReturn sockname if available.N�socknamer�r�r5r5r6r�&r�zRequestHandler.socknamecC�|jS�N)rMr�r5r5r6re1sz RequestHandler.keepalive_timeout�.@�timeoutc	�s��d|_|jdur|j��|jr^|j��|_z&t|�4IdH�|jIdHWd�IdHn1IdHs7wYWn tj	tj
fy]d|_tjdkr[t�
�}r[|��r[�Ynwz@t|�4IdH�+|jduru|j�t�	��|jdur�|j��s�t�|j�IdHWd�IdHn1IdHs�wYWntj	tj
fy�tjdkr�t�
�}r�|��r��Ynw|jdur�|j��|��dS)z�Do worker process exit preparations.

        We need to clean up everything and stop accepting requests.
        It is especially important for keep-alive connections.
        TN���)r]rL�cancelr`�_loop�
create_futurerTr�asyncio�CancelledError�TimeoutError�sys�version_info�current_task�
cancellingr^�_cancelrV�doneZshield�force_close)rxr��taskr5r5r6�shutdown5sT�

(��

����	
�(��

����
	
zRequestHandler.shutdownrcs�t��|�ttj|�}|jrt|�|jdusJ�|j�||�|j}t	j
dkr4tj|��|dd�}n|�
|���}||_dS)N�r��T�rmZeager_start)rq�connection_mader
r�Z	TransportrJr!rGr�r�r��Task�start�create_taskrV)rxrZreal_transportrmr�rzr5r6r�gs

zRequestHandler.connection_mader<cs�|jdurdS|j�||�|jj}|��t��|�d|_d|_d|_d|_|jdur2|j�	�|j
durE|dur?td�}|j
�|�|rQ|j
durQ|j
�	�d|_
|jdurc|j��d|_dSdS)NzConnection lost)rG�connection_lost�handler_cancellationr�rqrIrH�_parserrLr�r^�ConnectionResetErrorr�rVrWZfeed_eof)rxr<r�rzr5r6r�xs.







�zRequestHandler.connection_lostry�data_received_cbcCs<|jdusJ�||_||_|jr|j�|j�d|_dSdS)Nro)rWrXrS�	feed_data)rxryr�r5r5r6�
set_parser�s
�zRequestHandler.set_parsercCsdSr�r5r�r5r5r6�eof_received�szRequestHandler.eof_received�datac

Csz|js|jrdS|jdur�|js�|jdusJ�z|j�|�\}}}Wn!tyC}ztd||jd�t	fg}d}d}WYd}~nd}~ww|D]\}}|j
d7_
|j�||f�qF|j
}|rl|durl|��sl|�d�|js{t|j�|jkr{|��||_|r�|r�||_dSdSdS|jdur�|jr�|r�|j|7_dS|r�|jdur�|��|j�|�\}	}|	r�|��dSdSdS)Ni�)r;r<r=Fror)r]r\rW�	_upgradedr�r�rr:r=rrErO�appendrUr��
set_resultrR�lenrP�_pause_msg_queue_readingrSrX�close)
rxr��messagesZupgraded�tailr<�msg�payload�waiter�eofr5r5r6�
data_received�sJ���
�
�
�zRequestHandler.data_receivedcCr�r�)rRr�r5r5r6�_reading_paused_for_msg_queue�sz,RequestHandler._reading_paused_for_msg_queuecCs:d|_|jdurz|j��WdStyYdSwdS)NT)rRrZ
pause_readingrr�r5r5r6r��s
��z'RequestHandler._pause_msg_queue_readingcCsh|js|�d�t|j�|jkrdSd|_|js0|jdur2z|j��WdSt	y/YdSwdSdS)NroF)
r�r�r�rOrPrRZ_reading_pausedrZresume_readingrr�r5r5r6�_resume_msg_queue_reading�s
��z(RequestHandler._resume_msg_queue_reading�valcCs$||_|jr|j��d|_dSdS)zMSet keep-alive connection mode.

        :param bool val: new state.
        N)rFrLr�)rxr�r5r5r6�
keep_alive�s


�zRequestHandler.keep_alivecCsd|_|jr
|j��dSdS)z�Close connection.

        Stop accepting new pipelining messages and close
        connection when handlers done processing messages.
        TN)r\rUr�r�r5r5r6r�s�zRequestHandler.closecCs8d|_|jr|j��|jdur|j��d|_dSdS)zForcefully close connection.TN)r]rUr�rr�r�r5r5r6r�s



�zRequestHandler.force_close�request�response�timecCsF|jr|jdur!tr|dusJ�|j�|||j��|�dSdSdSr�)rarr
�logr�r�)rxr�r�r�r5r5r6�
log_accesss
�zRequestHandler.log_access�args�kwcOs |jr|jj|i|��dSdSr�)rZrY�rxr�r�r5r5r6�	log_debugs�zRequestHandler.log_debugcOs|jj|i|��dSr�)rY�	exceptionr�r5r5r6�
log_exception!szRequestHandler.log_exceptioncCsjd|_|js	|jsdS|j}|��}|j}||kr#|�||j�|_dS|jr1|j�	�s3|�
�dSdSdSr�)rLr]rFr�r�rK�call_at�_process_keepaliverUr�r�)rxrm�now�
close_timer5r5r6r�$s�z!RequestHandler._process_keepalive�
start_timersc
�s��d|_z�zz||_||�IdH}Wd|_nd|_wWnwty;}z|}|�|||�IdH\}}WYd}~ntd}~wtjyC�tjyn}z|jd|d�|�|d�}|�|||�IdH\}}WYd}~nAd}~wt	y�}z|�|d|�}|�|||�IdH\}}WYd}~nd}~wwt
|dd�r�t�dt
�|�|||�IdH\}}Wd|_|jdur�|j�d�||fSd|_|jdur�|j�d�ww)	NTzRequest handler timed out.��exc_infoi���Z__http_exception__Fzlreturning HTTPException object is deprecated (#2415) and will be removed, please raise the exception instead)r`r^r"�finish_responser�r�r�r��handle_error�	Exception�getattr�warnings�warn�DeprecationWarningrTr�)rxr�r�rs�respr<�resetr5r5r6�_handle_request5sL�$�$�$����
�
�zRequestHandler._handle_requestc
�s|�|j}|j}|dus
J�|j}d}|jdusJ�|jdus J�|j�s&|js<z|��|_|jIdHWd|_nd|_w|j�	�\}}|j
durM|j
��|jr\t
|j�|jkr\|��|jrc|��nd}|jd7_t||�}t|t�r~|�|�}	t}n|j}	|�|||||jp�t�|��}
�zV�z|�|
||	�}tjdkr�tj||dd�}n|�|�}z	|IdH\}}
Wn"t y�|�!d�YWWd|
_"|j#dur�|dur�|�!d��nMw~|
r�|�!d�WWd|
_"|j#dur�|dur�|�!d��n/t$|j%�|_&|�'��s�|j(}|j�s~|�r~|�!d	|�|��}||}zB|�'��s[||k�r[t)||�4IdH�|�*�IdHWd�IdHn1IdH�sHwY|��}|�'��s[||k�s%Wn!tj+tj,f�y}tjd
k�r{t��}�r{|�-��r{�Ynw|�'��s�|j�s�|�!d�|�.�|�/t0�Wn<tj+�y�|�!d�|�1��t2�y�}z|j3d|d
�|�1�WYd}~nd}~wt4�y�|�1��wWd|
_"|j#du�r�|du�r�|�!d�nd|
_"|j#du�r�|du�r�|�!d�www|j&�r"|j5�s"|j�s"|��|}||_6|j7du�r!|�8||j9�|_7nn|jr$|j�s:d|_|j#du�r<|j#�.�dSdSdS)a_Process incoming request.

        It reads request line, request headers and request payload, then
        calls handle_request() method. Subclass has to override
        handle_request(). start() handles various exceptions in request
        or response handling. Connection is being closed always unless
        keep_alive(True) specified.
        Nrr�Tr�z&Ignored premature client disconnectionz'Ignored premature client disconnection.z(Ignored premature client disconnection 2z'Start lingering close timer for %s sec.r�zUncompleted request.zUnhandled exceptionr�):r�rGrMrIrHr]rOr�rU�popleftr�Zmessage_consumedrRr�rQr�rar�Zrequests_countr�
isinstancer:�_make_error_handler�ERRORrVr�r�r�r�r�r�r��ConnectionErrorr�Z_taskr�boolr�rFZis_eofrNrZreadanyr�r�r�r�Z
set_exception�_PAYLOAD_ACCESS_ERRORr�r�r�r@r\rKrLr�r�)rxrmrlrer�r=r�r��writerrsr��coror�r�rhr�Zend_t�tr<r�r5r5r6r�`s��	


�


�


6
��
0
��
�*���
����	

���
�������zRequestHandler.startr�c	�sF�|��|jdur@|j�d�d|_|jr@|j�|j�\}}}||_|D]\}}|jd7_|j�||f�q%|j	dus@J�z|j
}	Wn-tyr|durV|�d�n|�d|���t
�}
t|
j|
j|
j|
jd�}|j
}	Ynwz|	|�IdH|��IdHWnty�|�|||�|dfYSw|�|||�|dfS)aPrepare the response and write_eof, then log access.

        This has to
        be called within the context of any exception so the access logger
        can get exception information. Returns True if the client disconnects
        prematurely.
        NFrz+Missing return statement on request handlerz3Web-handler should return a response instance, got )r;�reason�text�headersT)Z_finishr�Zset_upgradedr�rSr�rErOr�rUZprepare�AttributeErrorr�r#r&r;r�r�r��	write_eofr�r�)rxr�r�r�r�r�r�r�r�Zprepare_methr<r5r5r6r��sF�


��
��zRequestHandler.finish_responser�r;r=c
Cs,|jdkrt|t�r|jjd|j|d�n	|jd|j|d�|jjdkr(t	d��d}|t
jkr�t
jj�dt
jj
��}t
jj}d}|jr[tt��t��}Wd�n1sVwYd	|j�d
d�vr|rpt|�}d|�d
�}d|�d|�d|�d�}d	}n
|r�|}|d|}t|||d�}	|	��|	S)z�Handle errors.

        Returns HTTP response with specific status code. Logs additional
        information. It always closes current connection.
        rzError handling request from %sr�rzMResponse is sent already, cannot send another response with the error messagez
text/plain� Nz	text/htmlZAccept�z<h2>Traceback:</h2>
<pre>z</pre>z<html><head><title>z</title></head><body>
<h1>z</h1>
z
</body></html>
z

)r;r��content_type)rEr�rrYrZZremoter�r�Zoutput_sizer�r�INTERNAL_SERVER_ERROR�value�phrase�descriptionrr��	traceback�
format_excr��get�html_escaper&r�)
rxr�r;r<r=�ct�titler��tbr�r5r5r6r�$sN���


�����zRequestHandler.handle_error�err_infocsdtdtf��fdd�}|S)Nr�r|c�s���|�j�j�j�Sr�)r�r;r<r=)r��r�rxr5r6�handleres��z3RequestHandler._make_error_handler.<locals>.handler)r%r')rxr�r�r5r�r6r�bsz"RequestHandler._make_error_handler)r�r�)r|N)r�NN)=r1r2r3r4�	__slots__rr$rZ
LOG_FORMATrr�ZAbstractEventLooprtr�r	�typerrAr>rrr�rrr��tupler�r��propertyrer�Z
BaseTransportr�r@r�rrr�r��bytesr�r�r�r�r�r�r�r%r'r�rr�r�r�rr�r�r�r�r:r��
__classcell__r5r5rzr6r(cs
'+������	�
���
�������\"�
"�
2#���
�
1






	���
�
���

�
+���

�2�����
�>��)Rr�Zasyncio.streamsr�r�r��collectionsr�collections.abcrrr�
contextlibr�htmlrr��httpr�loggingr	�typingr
rrr
�attrZyarlZ	propcacher�abcrrZ
base_protocolrrZhelpersrrrrrrrrZhttp_exceptionsrr�rrZstreamsrr Ztcp_helpersr!Zweb_exceptionsr"r#Zweb_logr$Zweb_requestr%Zweb_responser&r'�__all__rp�sslZ
web_serverr,Z_RequestFactoryZ_RequestHandlerZURLr�r�r)r*r��sr:r�Z_MsgTyper(r5r5r5r6�<module>s| ����